Amit commited on
Commit
7bd72fd
·
1 Parent(s): 835cba9

Ipython notebook and plot display updated.

Browse files
plot_scripts/plot_display_com_prec.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import h5py
3
+ import os
4
+
5
+ import mercury as mr
6
+
7
+ import sys
8
+ sys.path.append('/plot_scripts/')
9
+ from map_packages_colors_1v1 import *
10
+ from plot_scripts_1v1 import *
11
+
12
+ # package_str = ['qiskit' , 'cirq', 'qsimcirq', 'pennylane', 'pennylane_l', 'qibo', 'qibojit', 'yao', 'quest', 'qulacs', 'intel_qs_cpp', 'projectq', 'svsim', 'hybridq', 'hiq', 'qcgpu', 'qrack_sch', 'cuquantum_qiskit', 'cuquantum_qsimcirq', 'qpanda']
13
+
14
+
15
+ def abs_time_pack(task, package, cc, N_end):
16
+
17
+ if task == "Heisenberg dynamics":
18
+ task = "hdyn"
19
+ elif task == "Random Quantum Circuit":
20
+ task = "rqc"
21
+ elif task == "Quantum Fourier Transform":
22
+ task = "qft"
23
+
24
+ if cc == "Singlethread":
25
+ cc = "singlethread"
26
+ elif cc == "Multithread":
27
+ cc = "multithread"
28
+ elif cc == "GPU":
29
+ cc = "gpu"
30
+
31
+ fig, ax = plt.subplots()
32
+
33
+ dir = os.getcwd()
34
+
35
+ if task == 'hdyn' or task == 'qft':
36
+ N_arr = np.arange(6, N_end, 2)
37
+ elif task == 'rqc':
38
+ N_arr = np.arange(12, N_end, 2)
39
+
40
+ dat_sp = dir + '/data/{}/{}_{}_sp.h5'.format(task, package, cc)
41
+ dat_dp = dir + '/data/{}/{}_{}_dp.h5'.format(task, package, cc)
42
+
43
+ if not os.path.isfile(dat_sp) and not os.path.isfile(dat_dp):
44
+ return mr.Md(f"Compute capability {cc} possibly not supported")
45
+
46
+ mr.Md(f"TtS performance of simulation packages with different precision")
47
+
48
+ if os.path.isfile(dat_sp):
49
+ h5f_sp = h5py.File(dat_sp, 'r')
50
+ dat_sp = h5f_sp[storage_dict[package]][:]
51
+ h5f_sp.close()
52
+ plot_abs_data_n_arr(N_arr, dat_sp, package+'_'+task+'_{}_'.format(cc)+'sp')
53
+
54
+ if os.path.isfile(dat_dp):
55
+ h5f_dp = h5py.File(dat_dp, 'r')
56
+ dat_dp = h5f_dp[storage_dict[package]][:]
57
+ h5f_dp.close()
58
+ plot_abs_data_n_arr(N_arr, dat_dp, package+'_'+task+'_{}_'.format(cc)+'dp')
59
+
60
+ gen_settings(fig, ax, r"N (system size)", r"Time ($t_{package}$)", False, True, True, N_arr[0]-2, N_arr[-1], True, 10**-1, 10**5, "out", None)
61
+
62
+ mr.Md("___")
63
+ mr.Md(f"Relative performance to double precision")
64
+
65
+ fig, ax = plt.subplots()
66
+
67
+ if os.path.isfile(dat_fst) and os.path.isfile(dat_fmt):
68
+ plot_comp_data_n_arr(N_arr, dat_dp, dat_dp, package+'_'+task+'_{}_'.format(cc)+'dp')
69
+ plot_comp_data_n_arr(N_arr, dat_dp, dat_sp, package+'_'+task+'_{}_'.format(cc)+'sp')
70
+
71
+ gen_settings(fig, ax, r"N (system size)", r"Relative to double precision", False, True, True, N_arr[0]-2, N_arr[-1], True, 10**-1, 10**3, "out", None)
72
+
73
+ # else:
74
+ # print(" Re-select the options as the requested option data is not available.")
75
+
76
+ # pkg_str = ['qiskit' , 'cirq', 'qsimcirq', 'pennylane', 'pennylane_l', 'qibo', 'qibojit', 'yao', 'quest', 'qulacs', 'intel_qs_cpp', 'projectq', 'svsim', 'hybridq', 'hiq', 'qcgpu', 'qrack_sch']
77
+
78
+ # abs_time_pack("Heisenberg dynamics", 'qsimcirq', 'Double', 36)
79
+
80
+ # abs_time(pkg_str, task_1, p_com_cap, p_prec)
81
+ # abs_time("Heisenberg dynamics", "Singlethread", "Single", 'qsimcirq')
82
+ # abs_time_pack("Heisenberg dynamics", "Random Quantum Circuit", "Singlethread", "Single", 34)
83
+ # abs_time_pack("Heisenberg dynamics", "Quantum Fourier Transform", "GPU", "Single", 38)
plot_scripts/plot_display_com_prec_all.py ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import h5py
3
+ import os
4
+
5
+ import mercury as mr
6
+
7
+ import sys
8
+ sys.path.append('/plot_scripts/')
9
+ from map_packages_colors_all import *
10
+ from plot_scripts_all import *
11
+
12
+ package_str = ['qiskit' , 'cirq', 'qsimcirq', 'pennylane', 'pennylane_l', 'qibo', 'qibojit', 'yao', 'quest', 'qulacs', 'intel_qs_cpp', 'projectq', 'svsim', 'hybridq', 'hiq', 'qcgpu', 'qrack_sch', 'cuquantum_qiskit', 'cuquantum_qsimcirq', 'qpanda', 'qpp', 'myqlm', 'myqlm_cpp', 'braket']
13
+
14
+
15
+ def _build_data_mat(task, cc, pr_1, pr_2, _n_arr):
16
+
17
+ dir = os.getcwd()
18
+
19
+ data_mat = np.zeros((len(package_str), len(_n_arr)))
20
+
21
+ for p_i, pack in enumerate(package_str):
22
+
23
+ dat_pr1 = dir + '/data/{}/{}_{}_{}.h5'.format(task, pack, cc, pr_1)
24
+ dat_pr2 = dir + '/data/{}/{}_{}_{}.h5'.format(task, pack, cc, pr_2)
25
+
26
+ if os.path.isfile(dat_pr1) and os.path.isfile(dat_pr2):
27
+
28
+ h5f_pr1 = h5py.File(dat_pr1, 'r')
29
+ dat_pr1 = h5f_pr1[storage_dict[pack]][:]
30
+ h5f_pr1.close()
31
+
32
+ h5f_pr2 = h5py.File(dat_pr2, 'r')
33
+ dat_pr2 = h5f_pr2[storage_dict[pack]][:]
34
+ h5f_pr2.close()
35
+
36
+ ratio_arr = []
37
+
38
+ if len(dat_pr1) == len(dat_pr2):
39
+ for i, elem in enumerate(dat_pr1):
40
+ ratio_arr.append(elem/float(dat_pr2[i]))
41
+ elif len(dat_pr1) > len(dat_pr2):
42
+ for i, elem in enumerate(dat_pr2):
43
+ ratio_arr.append(dat_pr1[i]/float(elem))
44
+ elif len(dat_pr2) > len(dat_pr1):
45
+ for i, elem in enumerate(dat_pr1):
46
+ ratio_arr.append(elem/float(dat_pr2[i]))
47
+
48
+ if len(_n_arr) > len(ratio_arr):
49
+ for r_i, rat in enumerate(ratio_arr):
50
+ data_mat[p_i, r_i] = rat
51
+ elif len(_n_arr) < len(ratio_arr):
52
+ for n_i in range(len(_n_arr)):
53
+ data_mat[p_i, n_i] = ratio_arr[n_i]
54
+ else:
55
+ for ri, rat_v in enumerate(ratio_arr):
56
+ data_mat[p_i, ri] = rat_v
57
+
58
+ return data_mat
59
+
60
+ def abs_time_pack(task, cc, N_end, pr_1, pr_2):
61
+
62
+ if task == "Heisenberg dynamics":
63
+ task = "hdyn"
64
+ elif task == "Random Quantum Circuit":
65
+ task = "rqc"
66
+ elif task == "Quantum Fourier Transform":
67
+ task = "qft"
68
+
69
+ if cc == "Singlethread":
70
+ cc = 'singlethread'
71
+ elif cc == "Multithread":
72
+ cc = 'multithread'
73
+ elif cc == "GPU":
74
+ cc = 'gpu'
75
+
76
+ if pr_1 == "Single":
77
+ pr_1 = "sp"
78
+ elif pr_2 == "Double":
79
+ pr_2 = "dp"
80
+
81
+ if pr_2 == "Single":
82
+ pr_1 = "sp"
83
+ elif pr_2 == "Double":
84
+ pr_2 = "dp"
85
+
86
+ fig, ax = plt.subplots()
87
+
88
+ dir = os.getcwd()
89
+
90
+ if task == 'hdyn' or task == 'qft':
91
+ N_arr = np.arange(6, N_end, 2)
92
+ elif task == 'rqc':
93
+ N_arr = np.arange(12, N_end, 2)
94
+
95
+ # if not os.path.isfile(dat_fst) and not os.path.isfile(dat_fmt) and not os.path.isfile(dat_fgpu):
96
+ # return mr.Md(f"Precision {pr} possibly not supported")
97
+
98
+ data_mat = _build_data_mat(task, cc, pr_1, pr_2, N_arr)
99
+
100
+ # params = {'figure.figsize': (10, 10)}
101
+ # plt.rcParams.update(params)
102
+ # plt.imshow(data_mat, cmap='OrRd')#, vmin=-16, vmax=0)
103
+
104
+ plt.imshow(data_mat, cmap='gist_heat_r', vmin=-1., vmax=10)
105
+
106
+ plt.yticks(range(len(pkg_str)), package_str)
107
+ locs, labels = plt.yticks()
108
+
109
+ # plt.setp(labels, rotation=90)
110
+ plt.xticks(range(len(N_arr)), N_arr)
111
+ # locs, labels = plt.xticks()
112
+
113
+ ax.xaxis.set_major_locator(ticker.AutoLocator())
114
+ ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
115
+
116
+ plt.colorbar()
117
+ plt.tight_layout()
118
+ # plt.savefig(fn)
119
+ plt.show()
120
+
121
+ # abs_time_pack("Heisenberg dynamics", "Double", 36, "Singlethread", "Multithread")
122
+ # abs_time_pack("Random Quantum Circuit", "Double", 36, "Singlethread", "Multithread")
123
+
124
+ def comp_time_pack(task_1, task_2, cc, N_end, pr_1, pr_2):
125
+
126
+ if task_1 == "Heisenberg dynamics":
127
+ task_1 = "hdyn"
128
+ elif task_1 == "Random Quantum Circuit":
129
+ task_1 = "rqc"
130
+ elif task_1 == "Quantum Fourier Transform":
131
+ task_1 = "qft"
132
+
133
+ if task_2 == "Heisenberg dynamics":
134
+ task_2 = "hdyn"
135
+ elif task_2 == "Random Quantum Circuit":
136
+ task_2 = "rqc"
137
+ elif task_2 == "Quantum Fourier Transform":
138
+ task_2 = "qft"
139
+
140
+ if cc == "Singlethread":
141
+ cc = 'singlethread'
142
+ elif cc == "Multithread":
143
+ cc = 'multithread'
144
+ elif cc == "GPU":
145
+ cc = 'gpu'
146
+
147
+ if pr_1 == "Single":
148
+ pr_1 = "sp"
149
+ elif pr_2 == "Double":
150
+ pr_2 = "dp"
151
+
152
+ fig, ax = plt.subplots()
153
+
154
+
155
+ dir = os.getcwd()
156
+
157
+ if task_1 == 'hdyn' or task_1 == 'qft':
158
+ N_arr_1 = np.arange(6, N_end, 2)
159
+ elif task_1 == 'rqc':
160
+ N_arr_1 = np.arange(12, N_end, 2)
161
+
162
+ if task_2 == 'hdyn' or task_2 == 'qft':
163
+ N_arr_2 = np.arange(6, N_end, 2)
164
+ elif task_2 == 'rqc':
165
+ N_arr_2 = np.arange(12, N_end, 2)
166
+
167
+ data_mat_1 = np.matrix(_build_data_mat(task_1, cc, pr_1, pr_2, N_arr_1))
168
+ data_mat_2 = np.matrix(_build_data_mat(task_2, cc, pr_1, pr_2, N_arr_2))
169
+
170
+ if N_arr_1[0] > N_arr_2[0]:
171
+ data_mat_2 = data_mat_2[:,3:]
172
+
173
+ elif N_arr_1[0] < N_arr_2[0]:
174
+ data_mat_1 = data_mat_1[:,3:]
175
+
176
+ # print(data_mat_1.shape)
177
+ # print(data_mat_2.shape)
178
+
179
+ # plt.imshow(data_mat_1, cmap='OrRd')#, vmin=-16, vmax=0)
180
+ # plt.show()
181
+ # plt.imshow(data_mat_2, cmap='OrRd')#, vmin=-16, vmax=0)
182
+ # plt.show()
183
+
184
+ comp_data_mat = np.zeros(data_mat_1.shape)
185
+
186
+ for ri in range(comp_data_mat.shape[0]):
187
+ for ci in range(comp_data_mat.shape[1]):
188
+ comp_data_mat[ri, ci] = data_mat_1[ri, ci]/data_mat_2[ri, ci]
189
+
190
+ # comp_data_mat = np.matrix(data_mat_1) - np.matrix(data_mat_2)
191
+
192
+ # params = {'figure.figsize': (10, 10)}
193
+ # plt.rcParams.update(params)
194
+
195
+ # plt.imshow(comp_data_mat, cmap='Spectral')#, vmin=-16, vmax=0)
196
+ plt.imshow(comp_data_mat, cmap='gist_heat_r', vmin=-0.5)
197
+
198
+ plt.yticks(range(len(pkg_str)), package_str)
199
+ locs, labels = plt.yticks()
200
+
201
+ # plt.setp(labels, rotation=90)
202
+ if N_arr_1[0] > N_arr_2[0]:
203
+ plt.xticks(range(len(N_arr_1)), N_arr_1)
204
+ elif N_arr_1[0] < N_arr_2[0]:
205
+ plt.xticks(range(len(N_arr_2)), N_arr_2)
206
+ else:
207
+ plt.xticks(range(len(N_arr_1)), N_arr_1)
208
+ # locs, labels = plt.xticks()
209
+
210
+ ax.xaxis.set_major_locator(ticker.AutoLocator())
211
+ ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
212
+
213
+ plt.colorbar()
214
+ plt.tight_layout()
215
+ # plt.savefig(fn)
216
+ plt.show()
217
+
218
+ # comp_time_pack("Heisenberg dynamics", "Random Quantum Circuit", "Double", 36, "Singlethread", "Multithread")
plots_display_all.ipynb CHANGED
@@ -110,6 +110,7 @@
110
  "source": [
111
  "all_flag = mr.Checkbox(value=False, label=\"Compare all\")\n",
112
  "cc_flag = mr.Checkbox(value=False, label=\"Compare across compute capabilities\")\n",
 
113
  "ovo_flag = mr.Checkbox(value=False, label=\"Compare one-on-one\")\n",
114
  "com_task_flag = mr.Checkbox(value=False, label=\"Compare between tasks\")\n",
115
  "mgpu_flag = mr.Checkbox(value=False, label=\"Multi-GPU\")"
@@ -207,13 +208,14 @@
207
  }
208
  ],
209
  "source": [
210
- "flag_arr = [all_flag.value, cc_flag.value, ovo_flag.value, com_task_flag.value, mgpu_flag.value]\n",
211
  "\n",
212
  "if flag_arr.count(True) == 0 or flag_arr.count(True) > 1:\n",
213
  " mr.Md(\"### Performance Benchmarks of quantum simulators\")\n",
214
  " mr.Md(\"Options on the left include (please select only one):\")\n",
215
  " mr.Md(\"- Compare all: Compare the TtS of all packages and also the performance relative to a given package\")\n",
216
  " mr.Md(\"- Compare across compute capabilities: Compare the performance of package(s) with different compute capabilities\")\n",
 
217
  " mr.Md(\"- Compare one-on-one: Compare the performance by selecting two different set of parameters\")\n",
218
  " mr.Md(\"- Compare between tasks: Compare the performance between two tasks with respect to ratio of gates applied\")\n",
219
  " mr.Md(\"- Multi-GPU: Compare the performance between different parameters as a function of the number of GPUs\")\n",
@@ -327,7 +329,80 @@
327
  " else:\n",
328
  " abs_time_pack(task.value, com_pack.value, prec.value, N_slider.value+2)\n",
329
  " \n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330
  " \n",
 
 
 
 
 
 
 
 
 
331
  " \n",
332
  "elif ovo_flag.value == True:\n",
333
  " \n",
 
110
  "source": [
111
  "all_flag = mr.Checkbox(value=False, label=\"Compare all\")\n",
112
  "cc_flag = mr.Checkbox(value=False, label=\"Compare across compute capabilities\")\n",
113
+ "pr_flag = mr.Checkbox(value=False, label=\"Compare across precision\")\n",
114
  "ovo_flag = mr.Checkbox(value=False, label=\"Compare one-on-one\")\n",
115
  "com_task_flag = mr.Checkbox(value=False, label=\"Compare between tasks\")\n",
116
  "mgpu_flag = mr.Checkbox(value=False, label=\"Multi-GPU\")"
 
208
  }
209
  ],
210
  "source": [
211
+ "flag_arr = [all_flag.value, cc_flag.value, pr_flag.value, ovo_flag.value, com_task_flag.value, mgpu_flag.value]\n",
212
  "\n",
213
  "if flag_arr.count(True) == 0 or flag_arr.count(True) > 1:\n",
214
  " mr.Md(\"### Performance Benchmarks of quantum simulators\")\n",
215
  " mr.Md(\"Options on the left include (please select only one):\")\n",
216
  " mr.Md(\"- Compare all: Compare the TtS of all packages and also the performance relative to a given package\")\n",
217
  " mr.Md(\"- Compare across compute capabilities: Compare the performance of package(s) with different compute capabilities\")\n",
218
+ " mr.Md(\"- Compare across different precision: Compare the performance of package(s) with different precision with fixed compute capability\")\n",
219
  " mr.Md(\"- Compare one-on-one: Compare the performance by selecting two different set of parameters\")\n",
220
  " mr.Md(\"- Compare between tasks: Compare the performance between two tasks with respect to ratio of gates applied\")\n",
221
  " mr.Md(\"- Multi-GPU: Compare the performance between different parameters as a function of the number of GPUs\")\n",
 
329
  " else:\n",
330
  " abs_time_pack(task.value, com_pack.value, prec.value, N_slider.value+2)\n",
331
  " \n",
332
+ "\n",
333
+ "elif pr_flag.value == True:\n",
334
+ " \n",
335
+ " import numpy as np\n",
336
+ " import h5py\n",
337
+ " import os\n",
338
+ " \n",
339
+ " pr_packages_flag = mr.Checkbox(value=False, label=\"Compare across packages\")\n",
340
+ " \n",
341
+ " pr_pack_flag = mr.Checkbox(value=False, label=\"Compare a single package\")\n",
342
+ " \n",
343
+ " if (pr_packages_flag.value == False and pr_pack_flag.value == False) or (pr_packages_flag.value == True and pr_pack_flag.value == True):\n",
344
+ " mr.Md(\"The options on the left include:\")\n",
345
+ " mr.Md(\"- Performance benchmark across packages with different precision\")\n",
346
+ " mr.Md(\"- Performance benchmark of a package with different precision\")\n",
347
+ " \n",
348
+ " elif pr_packages_flag.value == True:\n",
349
+ "\n",
350
+ " import sys\n",
351
+ " \n",
352
+ " _p = os.getcwd()\n",
353
+ " \n",
354
+ " sys.path.append(_p + '/plot_scripts/')\n",
355
+ " from map_packages_colors_all import *\n",
356
+ " from plot_scripts_all import *\n",
357
+ " from plot_display_com_prec_all import *\n",
358
+ " \n",
359
+ " # params = {'figure.figsize': (5, 5)}\n",
360
+ " # plt.rcParams.update(params)\n",
361
+ " \n",
362
+ " mr.Md(\"Ratio of different precision for different packages\")\n",
363
+ " \n",
364
+ " task = mr.Select(label=\"Select Task: \", value=\"Heisenberg dynamics\", choices=[\"Heisenberg dynamics\", \"Random Quantum Circuit\", \"Quantum Fourier Transform\"])\n",
365
+ " \n",
366
+ " cc = mr.Select(label=\"Select Compute Capability : \", value=\"Singlethread\", choices=[\"Singlethread\", \"Multithread\", \"GPU\"])\n",
367
+ " \n",
368
+ " N_slider = mr.Slider(value=36, min=6, max=36, label=\"Select System size: \", step=2)\n",
369
+ " \n",
370
+ " com_pr_1 = mr.Select(label=\"Select Precision I: \", value=\"Double\", choices=[\"Single\", \"Double\"])\n",
371
+ " com_pr_2 = mr.Select(label=\"Select Precision II: \", value=\"Single\", choices=[\"Single\", \"Double\"]) \n",
372
+ " \n",
373
+ " abs_time_pack(task.value, cc.value, N_slider.value+2, com_pr_1.value, com_pr_2.value) \n",
374
+ " \n",
375
+ " compare_task_flag = mr.Checkbox(value=False, label=\"Compare to other task (ratio):\")\n",
376
+ " if compare_task_flag.value == True:\n",
377
+ " mr.Md(\"___\")\n",
378
+ " mr.Md(\"Comparison to different tasks\")\n",
379
+ " task2 = mr.Select(label=\"Select Task: \", value=\"Heisenberg dynamics\", choices=[\"Heisenberg dynamics\", \"Random Quantum Circuit\", \"Quantum Fourier Transform\"])\n",
380
+ " comp_time_pack(task.value, task2.value, cc.value, N_slider.value+2, com_pr_1.value, com_pr_2.value)\n",
381
+ " \n",
382
+ " elif cc_pack_flag.value == True:\n",
383
+ " \n",
384
+ " import sys\n",
385
+ " \n",
386
+ " _p = os.getcwd()\n",
387
+ " \n",
388
+ " sys.path.append(_p + '/plot_scripts/')\n",
389
+ " from map_packages_colors_1v1 import *\n",
390
+ " from plot_scripts_1v1 import *\n",
391
+ " from plot_display_com_prec import *\n",
392
+ " \n",
393
+ " task = mr.Select(label=\"Select Task: \", value=\"Heisenberg dynamics\", choices=[\"Heisenberg dynamics\", \"Random Quantum Circuit\", \"Quantum Fourier Transform\"])\n",
394
+ "\n",
395
+ " com_pack = mr.Select(label=\"Select Package to compare: \", value=\"qsimcirq\", choices=['qiskit' , 'cirq', 'qsimcirq', 'pennylane', 'pennylane_l', 'qibo', 'qibojit', 'yao', 'quest', 'qulacs', 'intel_qs_cpp', 'projectq', 'svsim', 'hybridq', 'hiq', 'qcgpu', 'qrack_sch', 'cuquantum_qiskit', 'cuquantum_qsimcirq', 'qpanda', 'qpp', 'myqlm', 'myqlm_cpp', 'braket'])\n",
396
  " \n",
397
+ " cc = mr.Select(label=\"Select Compute Capability : \", value=\"Singlethread\", choices=[\"Singlethread\", \"Multithread\", \"GPU\"])\n",
398
+ " \n",
399
+ " N_slider = mr.Slider(value=36, min=6, max=36, label=\"Select System size: \", step=2)\n",
400
+ " \n",
401
+ " if task.value == \"Random Quantum Circuit\" and N_slider.value < 12:\n",
402
+ " mr.Md(\"### Please select a different final N value\")\n",
403
+ " else:\n",
404
+ " abs_time_pack(task.value, com_pack.value, cc.value, N_slider.value+2)\n",
405
+ " \n",
406
  " \n",
407
  "elif ovo_flag.value == True:\n",
408
  " \n",