-
Notifications
You must be signed in to change notification settings - Fork 2
/
exec_gen_test.py
137 lines (127 loc) · 6.15 KB
/
exec_gen_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/env python3
import os
import graphplotter
import time
import checksfinder
import circgenerator
import circtester
def run_sims():
'''running everything from scratch. requires the rigid
folder structure described in the readme.'''
# Qubits 5 rz count 5 low weight checks of 6 layers.
num_circs=50 #number of circs for each cnot count.
start_circ=0
end_circ=num_circs-1
cnots=[1,5,10,15,20,25,30,35,40]
qubits=5
target_layers=6#*qubits
max_layers=target_layers+target_layers/3 #some weight one checks will be redundant.
rz_count=5
for cnot_count in cnots:
circgenerator.gen_rand_circs(qubits, cnot_count, num_circs, rz_count)
circgenerator.gen_rand_input_state(qubits, cnot_count, rz_count)
for cnot_count in cnots:
#More efficient to separate the simulations this since it uses mulitprocessing
#accross the all cnot counts that are equal.
checksfinder.create_low_weight_checks_circs(qubits, cnot_count, target_layers, max_layers, rz_count)
circtester.exec_simulations(qubits, rz_count, cnot_count, start_circ, end_circ, target_layers, "low_weight_checks")
rz_count=10
for cnot_count in cnots:
circgenerator.gen_rand_circs(qubits, cnot_count, num_circs, rz_count)
circgenerator.gen_rand_input_state(qubits, cnot_count, rz_count)
for cnot_count in cnots:
checksfinder.create_low_weight_checks_circs(qubits, cnot_count, target_layers, max_layers, rz_count)
circtester.exec_simulations(qubits, rz_count, cnot_count, start_circ, end_circ, target_layers, "low_weight_checks")
rz_count=15
for cnot_count in cnots:
circgenerator.gen_rand_circs(qubits, cnot_count, num_circs, rz_count)
circgenerator.gen_rand_input_state(qubits, cnot_count, rz_count)
for cnot_count in cnots:
checksfinder.create_low_weight_checks_circs(qubits, cnot_count, target_layers, max_layers, rz_count)
circtester.exec_simulations(qubits, rz_count, cnot_count, start_circ, end_circ, target_layers, "low_weight_checks")
#Only one layer for high weight
target_layers=1
max_layers=1
rz_count=5
for cnot_count in cnots:
checksfinder.create_high_weight_checks_circs(qubits, cnot_count, target_layers, max_layers, rz_count)
circtester.exec_simulations(qubits, rz_count, cnot_count, start_circ, end_circ, target_layers, "high_weight_checks")
# Qubits 10
num_circs=50 #number of circs for each cnot count.
qubits=10
cnots=[1,5,10,15,20,25,30,35,40, 80]
rz_count=5
# We only simulate one layer. It's too slow to do more.
target_layers=1
max_layers=1
for cnot_count in cnots:
circgenerator.gen_rand_circs(qubits, cnot_count, num_circs, rz_count)
circgenerator.gen_rand_input_state(qubits, cnot_count, rz_count)
for cnot_count in cnots:
#More efficient to separate the simulations this since it uses mulitprocessing
#accross the all cnot counts that are equal.
checksfinder.create_low_weight_checks_circs(qubits, cnot_count, target_layers, max_layers, rz_count)
circtester.exec_simulations(qubits, rz_count, cnot_count, start_circ, end_circ, target_layers, "low_weight_checks")
for cnot_count in cnots:
checksfinder.create_high_weight_checks_circs(qubits, cnot_count, target_layers, max_layers, rz_count)
circtester.exec_simulations(qubits, rz_count, cnot_count, start_circ, end_circ, target_layers, "high_weight_checks")
#Qubits 2
num_circs=50
start_circ=0
end_circ=num_circs-1
cnots=[1,2,4,8,16,32,64,128,256,512,1024]
qubits=2
target_layers=4
max_layers=4
rz_count=0
for cnot_count in cnots:
circgenerator.gen_rand_circs(qubits, cnot_count, num_circs, rz_count)
circgenerator.gen_rand_input_state(qubits, cnot_count, rz_count)
for cnot_count in cnots:
#More efficient to separate the simulations this since it uses mulitprocessing
#accross the all cnot counts that are equal.
checksfinder.create_weight_one_check_circs(qubits, cnot_count, target_layers, rz_count)
circtester.exec_simulations(qubits, rz_count, cnot_count, start_circ, end_circ, target_layers, "low_weight_checks")
# Qubits 2 example unit fidelity for post selected state (noiseless checks.)
num_circs=1
start_circ=0
end_circ=num_circs-1
cnots=[30]
qubits=2
target_layers=4
max_layers=4
rz_count=0
for cnot_count in cnots:
circgenerator.gen_rand_circs_example(qubits, cnot_count, num_circs, rz_count)
circgenerator.gen_rand_input_state_example(qubits, cnot_count, rz_count)
for cnot_count in cnots:
# More efficient to separate the simulations this since it uses mulitprocessing
# accross the all cnot counts that are equal.
checksfinder.create_weight_one_check_circs_example(qubits, cnot_count, target_layers, rz_count)
circtester.exec_simulations_noiseless_checks(qubits, rz_count, cnot_count, start_circ, end_circ,
target_layers, "low_weight_checks")
# For automating the process on a local machine. Don't use for HPC.
if __name__ == "__main__":
time0=time.time()
print("running...")
# run_sims()
# 5 compute qubits graphs.
rz_count=5
graphplotter.get_5qubits_fid_and_counts_vs_error_low_weightchks(rz_count, [6])
graphplotter.get_5qubits_fid_vs_error_max_weightchks(rz_count)
graphplotter.get_5qubits_fidelity_vs_layers(rz_count)
graphplotter.get_5qubits_raw_fidel_and_counts_vs_error(rz_count)
rz_count=10
graphplotter.get_5qubits_fid_and_counts_vs_error_low_weightchks(rz_count, [6])
rz_count=15
graphplotter.get_5qubits_fid_and_counts_vs_error_low_weightchks(rz_count, [6])
graphplotter.get_5qubits_fid_and_counts_vs_error_low_weightchks(rz_count, [1])
# 2 compute qubits graphs.
graphplotter.get_2qubits_unit_fidel_ex()
graphplotter.get_2qubits_fidel_counts_vs_cnots()
# # 10 compute qubits graphs.
rz_count=5
graphplotter.get_10qubits_fid_and_counts_vs_error_low_weightchks(rz_count, [1])
graphplotter.get_10qubits_fid_vs_error_max_weightchks(rz_count)
print(f"total execution time {time.time()-time0}")
print("done.")