def QPD(): A = 4 # DNA Alphabet {0,1,2,3} := {A,C,G,T} N = 10 # Reference String size w = "2302031020" # Reference String #randStr(A,N) M = 3 # Search String size dummyp = "000" # indices out of range will be tagged with dummyp data p = "203" # Search String #randStr(A,M) asz = ceil(log2(A)) Q1 = asz * M # Data Qubits Q2 = ceil(log2(N - M + 1)) # Tag Qubits config_fn = os.path.join('gateConfig.json') platform = ql.Platform('platform_none', config_fn) ancmax = 1 #(Q1+Q2)-2 anc = Q1 + Q2 total_qubits = Q1 + Q2 + ancmax prog = ql.Program('qg', total_qubits, platform) # Kernel 1: Construct Quantum Phone Directory qk1 = ql.Kernel('QCirc1', platform) Circ1(qk1, asz, w, N, M, total_qubits, Q2, anc) # Kernel 2: Calculate Hamming Distance qk2 = ql.Kernel('QCirc2', platform) Circ2(qk2, asz, p, M, Q1, Q2) # Kernel 3: Oracle to Mark Hamming Distance of 0 qk3 = ql.Kernel('QCirc3', platform) Circ3(qk3, asz, M, Q1, Q2, anc) # Kernel 4: Amplitude Amplification qk4 = ql.Kernel('QCirc4', platform) Circ4(qk4, Q1, Q2, anc) # Finding optimal iterations for known arbitrary initial amplitude distribution ''' A = 4; M = 3; N = 10; r = 1; iMx = N-M+1; qtag = ceil(log2(iMx)); qb = qtag + M*ceil(log2(A)); sMx = 2^qb; kavg0 = 1/sqrt(iMx); lavg0 = (iMx - r)/((sMx - r)*sqrt(iMx)); Pmax = 1 - (sMx-iMx)*lavg0^2 - (iMx-r)*(1/sqrt(iMx) - lavg0)^2 j = [0:9]; T = ((j+0.5)*pi - atan(kavg0*sqrt(r/(sMx-r))/lavg0))/acos(1-2*r/sMx)' ''' # T = [3.3964, 38.9279, 74.4593, 109.9908, 145.5223, 181.0538, 216.5853, 252.1168, 287.6483, 323.1798] prog.add_kernel(qk1) prog.add_kernel(qk2) for i in range(0, 3): prog.add_kernel(qk3) prog.add_kernel(qk4) prog.compile(False, "ASAP", False) display()
import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 7 p = ql.Program('rd53_130', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('rd53_130', platform) k.gate('x', 5) k.gate('x', 6) k.gate('h', 2) k.gate('t', 1) k.gate('t', 3) k.gate('t', 2) k.gate('cnot', 3, 1) k.gate('cnot', 2, 3) k.gate('cnot', 1, 2) k.gate('tdag', 3) k.gate('cnot', 1, 3) k.gate('tdag', 1) k.gate('tdag', 3) k.gate('t', 2) k.gate('cnot', 2, 3)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 53 p = ql.Program('vbeAdder_17b', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('vbeAdder_17b', platform) k.gate('toffoli',1b1,c1) k.gate('cnot',1b1) k.gate('toffoli',0b1,c1) k.gate('toffoli',4b2,c2) k.gate('cnot',4b2) k.gate('toffoli',3b2,c2) k.gate('toffoli',7b3,c3) k.gate('cnot',7b3) k.gate('toffoli',6b3,c3) k.gate('toffoli',10b4,c4) k.gate('cnot',10b4) k.gate('toffoli',9b4,c4) k.gate('toffoli',13b5,c5) k.gate('cnot',13b5) k.gate('toffoli',12b5,c5) k.gate('toffoli',16b6,c6) k.gate('cnot',16b6)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 101 p = ql.Program('vbeAdder_33b', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('vbeAdder_33b', platform) k.gate('toffoli',1b1,c1) k.gate('cnot',1b1) k.gate('toffoli',0b1,c1) k.gate('toffoli',4b2,c2) k.gate('cnot',4b2) k.gate('toffoli',3b2,c2) k.gate('toffoli',7b3,c3) k.gate('cnot',7b3) k.gate('toffoli',6b3,c3) k.gate('toffoli',10b4,c4) k.gate('cnot',10b4) k.gate('toffoli',9b4,c4) k.gate('toffoli',13b5,c5) k.gate('cnot',13b5) k.gate('toffoli',12b5,c5) k.gate('toffoli',16b6,c6) k.gate('cnot',16b6)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 9 p = ql.Program('benstein_vazirani_7b_secret_2', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('benstein_vazirani_7b_secret_2', platform) k.gate('prepx',7) k.gate('x',7) k.gate('h',0) k.gate('h',1) k.gate('h',2) k.gate('h',3) k.gate('h',4) k.gate('h',5) k.gate('h',6) k.gate('h',7) k.gate('cnot',1y) k.gate('h',0) k.gate('h',1) k.gate('h',2) k.gate('h',3) k.gate('h',4) k.gate('h',5)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 95 p = ql.Program('cuccaroAdder_46b', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('cuccaroAdder_46b', platform) k.gate('cnot',1b0) k.gate('cnot',1c0) k.gate('toffoli',0b0,a0) k.gate('cnot',3b1) k.gate('cnot',3a0) k.gate('toffoli',1b1,a1) k.gate('cnot',5b2) k.gate('cnot',5a1) k.gate('toffoli',3b2,a2) k.gate('cnot',7b3) k.gate('cnot',7a2) k.gate('toffoli',5b3,a3) k.gate('cnot',9b4) k.gate('cnot',9a3) k.gate('toffoli',7b4,a4) k.gate('cnot',11b5) k.gate('cnot',11a4)
# rootDir = os.path.dirname(os.path.realpath(__file__)) curdir = os.path.dirname(__file__) # output_dir = os.path.join(curdir, 'qasm') # ql.set_option('output_dir', output_dir) # ql.set_option('write_qasm_files', 'yes') # ql.set_option('optimize', 'no') # ql.set_option('scheduler', 'ASAP') # ql.set_option('log_level', 'LOG_INFO') config_fn = os.path.join(curdir, 'config_qx.json') platform = ql.Platform('platform_none', config_fn) num_qubits = 2 p = ql.Program('aritra', platform, num_qubits) k = ql.Kernel("min_kernel", platform, num_qubits) k.prepz(0) k.prepz(1) k.gate('h', [0]) k.gate('cnot', [0, 1]) k.measure(0) k.measure(1) p.add_kernel(k) p.compile() qasm = p.qasm() print(qasm) # import qxelarator
import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 6 p = ql.Program('4gt4-v1_74', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('4gt4-v1_74', platform) k.gate('x', 0) k.gate('h', 1) k.gate('t', 0) k.gate('t', 4) k.gate('t', 1) k.gate('cnot', 4, 0) k.gate('cnot', 1, 4) k.gate('cnot', 0, 1) k.gate('tdag', 4) k.gate('cnot', 0, 4) k.gate('tdag', 0) k.gate('tdag', 4) k.gate('t', 1) k.gate('cnot', 1, 4) k.gate('cnot', 0, 1)
circ_width = test[-1] + 1 p = ql.Program('aritra', platform, circ_width) # 1. Initialize # FSM to equal superposition of all FSMs # Current Machine State to state 0 # Move to direction 0 # Current Tape Head to position 0 # Read Head to symbol 0 # Write Head to symbol 0 # Tape to all symbol 0 # Flag to 0 # Ancilla to 0 # Test to 0 k_init = ql.Kernel("init", platform, circ_width) tm.U_init(k_init, circ_width, fsm, state, move, head, read, write, tape, ancilla, test) p.add_kernel(k_init) # 2. Run machine for n-iterations: for tick in range(0, sim_tick): # {read} << U_read({head, tape}) print("Tick: ", tick) # k_read = ql.Kernel("read"+str(tick), platform, circ_width) # tm.U_read(k_read, read, head, tape, move) # move qubits used as borrowed ancilla # p.add_kernel(k_read) # # # {write, state, move} << U_fsm({read, state, fsm}) # # k_fsm = ql.Kernel("fsm"+str(tick), platform, circ_width) # # tm.U_fsm(k_fsm, tick, fsm, state, read, write, move, ancilla) # # p.add_kernel(k_fsm)
import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 7 p = ql.Program('alu-bdd_288', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('alu-bdd_288', platform) k.gate('cnot', 0, 5) k.gate('h', 5) k.gate('t', 1) k.gate('t', 3) k.gate('t', 5) k.gate('cnot', 3, 1) k.gate('cnot', 5, 3) k.gate('cnot', 1, 5) k.gate('tdag', 3) k.gate('cnot', 1, 3) k.gate('tdag', 1) k.gate('tdag', 3) k.gate('t', 5) k.gate('cnot', 5, 3) k.gate('cnot', 1, 5)
import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 8 p = ql.Program('f2_232', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('f2_232', platform) k.gate('x', 7) k.gate('h', 0) k.gate('t', 7) k.gate('t', 4) k.gate('t', 0) k.gate('cnot', 4, 7) k.gate('cnot', 0, 4) k.gate('cnot', 7, 0) k.gate('tdag', 4) k.gate('cnot', 7, 4) k.gate('tdag', 7) k.gate('tdag', 4) k.gate('t', 0) k.gate('cnot', 0, 4) k.gate('cnot', 7, 0)
import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 5 p = ql.Program('4mod7-v0_94', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('4mod7-v0_94', platform) k.gate('h', 0) k.gate('t', 1) k.gate('t', 4) k.gate('t', 0) k.gate('cnot', 4, 1) k.gate('cnot', 0, 4) k.gate('cnot', 1, 0) k.gate('tdag', 4) k.gate('cnot', 1, 4) k.gate('tdag', 1) k.gate('tdag', 4) k.gate('t', 0) k.gate('cnot', 0, 4) k.gate('cnot', 1, 0) k.gate('cnot', 4, 1)
import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 5 p = ql.Program('alu-v0_27', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('alu-v0_27', platform) k.gate('cnot', 3, 4) k.gate('cnot', 2, 1) k.gate('h', 2) k.gate('t', 3) k.gate('t', 1) k.gate('t', 2) k.gate('cnot', 1, 3) k.gate('cnot', 2, 1) k.gate('cnot', 3, 2) k.gate('tdag', 1) k.gate('cnot', 3, 1) k.gate('tdag', 3) k.gate('tdag', 1) k.gate('t', 2) k.gate('cnot', 2, 1)
import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 3 p = ql.Program('miller_11', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('miller_11', platform) k.gate('cnot', 2, 1) k.gate('h', 2) k.gate('t', 1) k.gate('t', 0) k.gate('t', 2) k.gate('cnot', 0, 1) k.gate('cnot', 2, 0) k.gate('cnot', 1, 2) k.gate('tdag', 0) k.gate('cnot', 1, 0) k.gate('tdag', 1) k.gate('tdag', 0) k.gate('t', 2) k.gate('cnot', 2, 0) k.gate('cnot', 1, 2)
import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 5 p = ql.Program('one-two-three-v0_97', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('one-two-three-v0_97', platform) k.gate('cnot', 3, 2) k.gate('cnot', 4, 1) k.gate('h', 0) k.gate('t', 1) k.gate('t', 4) k.gate('t', 0) k.gate('cnot', 4, 1) k.gate('cnot', 0, 4) k.gate('cnot', 1, 0) k.gate('tdag', 4) k.gate('cnot', 1, 4) k.gate('tdag', 1) k.gate('tdag', 4) k.gate('t', 0) k.gate('cnot', 0, 4)
] cl = random.sample(range(0, len(inv_clifford_lut_gs)), int(num_cliffords / 2)) inv_cl = cl[::-1] cliffords = inv_cl + cl kernel.prepz(qubit) for c in cliffords: kernel.clifford(c, qubit) kernel.measure(qubit) config_fn = os.path.join(curdir, 'hardware_config_qx.json') platform = ql.Platform('platform_none', config_fn) num_qubits = 1 # create a grover program p = ql.Program('rb117', platform, num_qubits) kernel = ql.Kernel("rb_kernel", platform, num_qubits) num_cliffords = 32 for q in range(num_qubits): build_rb(q, num_cliffords, kernel) p.add_kernel(kernel) p.compile() # qasm = p.qasm() # print(qasm)
import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 6 p = ql.Program('4gt12-v0_88', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('4gt12-v0_88', platform) k.gate('h', 3) k.gate('t', 2) k.gate('t', 1) k.gate('t', 3) k.gate('cnot', 1, 2) k.gate('cnot', 3, 1) k.gate('cnot', 2, 3) k.gate('tdag', 1) k.gate('cnot', 2, 1) k.gate('tdag', 2) k.gate('tdag', 1) k.gate('t', 3) k.gate('cnot', 3, 1) k.gate('cnot', 2, 3) k.gate('cnot', 1, 2)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 10 p = ql.Program('benstein_vazirani_8b_secret_64', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('benstein_vazirani_8b_secret_64', platform) k.gate('prepx',8) k.gate('x',8) k.gate('h',0) k.gate('h',1) k.gate('h',2) k.gate('h',3) k.gate('h',4) k.gate('h',5) k.gate('h',6) k.gate('h',7) k.gate('h',8) k.gate('cnot',6y) k.gate('h',0) k.gate('h',1) k.gate('h',2) k.gate('h',3) k.gate('h',4)
import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 5 p = ql.Program('4gt11_83', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('4gt11_83', platform) k.gate('cnot', 2, 1) k.gate('cnot', 1, 2) k.gate('cnot', 3, 2) k.gate('cnot', 2, 3) k.gate('cnot', 4, 3) k.gate('cnot', 3, 4) k.gate('h', 0) k.gate('t', 1) k.gate('t', 4) k.gate('t', 0) k.gate('cnot', 4, 1) k.gate('cnot', 0, 4) k.gate('cnot', 1, 0) k.gate('tdag', 4) k.gate('cnot', 1, 4)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 6 p = ql.Program('4gt12-v1_89', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('4gt12-v1_89', platform) k.gate('x',0) k.gate('cnot',4,0) k.gate('h',0) k.gate('t',1) k.gate('t',5) k.gate('t',0) k.gate('cnot',5,1) k.gate('cnot',0,5) k.gate('cnot',1,0) k.gate('tdag',5) k.gate('cnot',1,5) k.gate('tdag',1) k.gate('tdag',5) k.gate('t',0) k.gate('cnot',0,5) k.gate('cnot',1,0) k.gate('cnot',5,1)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 31 p = ql.Program('benstein_vazirani_29b_secret_16', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('benstein_vazirani_29b_secret_16', platform) k.gate('prepx',29) k.gate('x',29) k.gate('h',0) k.gate('h',1) k.gate('h',2) k.gate('h',3) k.gate('h',4) k.gate('h',5) k.gate('h',6) k.gate('h',7) k.gate('h',8) k.gate('h',9) k.gate('h',10) k.gate('h',11) k.gate('h',12) k.gate('h',13) k.gate('h',14)
def test_qec(self): ql.set_option('output_dir', output_dir) ql.set_option('optimize', 'no') ql.set_option('scheduler', 'ALAP') ql.set_option('scheduler_uniform', 'yes') ql.set_option('log_level', 'LOG_WARNING') platform = ql.Platform(platform_name, config_fn) p = ql.Program('test_qec', platform, num_qubits, num_cregs) k = ql.Kernel('kernel_0', platform, num_qubits, num_cregs) # pipelined QEC: [ # see: R. Versluis et al., Phys. Rev. A 8, 034021 (2017) # - nw, ne, sw, se] -> [n, e, w, s] because we rotate grid # - H -> rym90, ry90, see Fig 2 of reference # # class SurfaceCode, qubits, tiles, width, getNeighbourN, getNeighbourE, getNeighbourW, getNeighbourS, getX, getZ, getData # define qubit aliases: # FIXME: neighbours make no sense anymore x = 7 xN = x-5 xE = x+1 xS = x+5 xW = x-1 z = 11 zN = z-5 zE = z+1 zS = z+5 zW = z-1 # create classical registers rdX = ql.CReg() rdZ = ql.CReg() # X stabilizers k.gate("rym90", [x]) k.gate("rym90", [xN]) k.gate("rym90", [xE]) k.gate("rym90", [xW]) k.gate("rym90", [xS]) k.wait(all_qubits, 0) # k.wait({x, xN, xE, xW, xS}, 0) k.gate("cz", [x, xE]) k.gate("cz", [x, xN]) k.gate("cz", [x, xS]) k.gate("cz", [x, xW]) k.wait(all_qubits, 0) # k.wait({x, xN, xE, xW, xS}, 0) k.gate("ry90", [x]) k.gate("ry90", [xN]) k.gate("ry90", [xE]) k.gate("ry90", [xW]) k.gate("ry90", [xS]) k.wait(all_qubits, 0) # k.wait({x, xN, xE, xW, xS}, 0) k.gate("measure", [x], rdX) # k.wait(all_qubits, 0) k.wait([x], 0) # Z stabilizers k.gate("rym90", [z]) k.gate("cz", [z, zE]) k.gate("cz", [z, zS]) k.gate("cz", [z, zN]) k.gate("cz", [z, zW]) k.gate("ry90", [z]) k.gate("measure", [z], rdZ) p.add_kernel(k) p.compile()
import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join( curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json' ) platform = ql.Platform('platform_none', config_fn) sweep_points = [1, 2] num_circuits = 1 num_qubits = 6 p = ql.Program('benstein_vazirani_4b_secret_128', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('benstein_vazirani_4b_secret_128', platform) k.gate('prepx', 4) k.gate('x', 4) k.gate('h', 0) k.gate('h', 1) k.gate('h', 2) k.gate('h', 3) k.gate('h', 4) k.gate('h', 0) k.gate('h', 1) k.gate('h', 2) k.gate('h', 3) k.gate('h', 4) p.add_kernel(k) p.compile(optimize=False)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 35 p = ql.Program('benstein_vazirani_33b_secret_1', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('benstein_vazirani_33b_secret_1', platform) k.gate('prepx',33) k.gate('x',33) k.gate('h',0) k.gate('h',1) k.gate('h',2) k.gate('h',3) k.gate('h',4) k.gate('h',5) k.gate('h',6) k.gate('h',7) k.gate('h',8) k.gate('h',9) k.gate('h',10) k.gate('h',11) k.gate('h',12) k.gate('h',13) k.gate('h',14)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 42 p = ql.Program('benstein_vazirani_40b_secret_4', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('benstein_vazirani_40b_secret_4', platform) k.gate('prepx',40) k.gate('x',40) k.gate('h',0) k.gate('h',1) k.gate('h',2) k.gate('h',3) k.gate('h',4) k.gate('h',5) k.gate('h',6) k.gate('h',7) k.gate('h',8) k.gate('h',9) k.gate('h',10) k.gate('h',11) k.gate('h',12) k.gate('h',13) k.gate('h',14)
def QPM(): print(w, p) config_fn = os.path.join('gateConfig.json') platform = ql.Platform('platform_none', config_fn) prog = ql.Program('qpm_a4', total_qubits, platform) # Kernel 1: Initialization qk1 = ql.Kernel('QCirc1', platform) #qk1.rz(0,0.25) qk1.gate("rz", [1], 40, 0.3) Circ1(qk1) # Kernel 2: Oracles to mark specific character qk2 = ql.Kernel('QCirc2', platform) bfa = ''.join('1' if w[i] == '0' else '0' for i in range(len(w))) bfc = ''.join('1' if w[i] == '1' else '0' for i in range(len(w))) bfg = ''.join('1' if w[i] == '2' else '0' for i in range(len(w))) bft = ''.join('1' if w[i] == '3' else '0' for i in range(len(w))) # Kernel 3: Grover Amplitude Amplification qk3 = ql.Kernel('QCirc3', platform) Circ3(qk3, s, M) # Kernel 4: Measurement qk4 = ql.Kernel('QCirc4', platform) Circ4(qk4) # Construct Program from Kernels prog.add_kernel(qk1) # Initialise #for pi in range(0,M): # Alternate iteration method for r in range(0, int(sqrt(N - M + 1))): pi = random.randint(0, M - 1) if p[pi] == '0': Circ2(qk2, bfa, pi) elif p[pi] == '1': Circ2(qk2, bfc, pi) elif p[pi] == '2': Circ2(qk2, bfg, pi) else: Circ2(qk2, bft, pi) prog.add_kernel(qk2) # Conditional kernel call del qk2 # IMPROVE: Kernel to qubit loose binding being discussed qk2 = ql.Kernel('QCirc2', platform) prog.add_kernel(qk3) # Inversion about mean # prog.add_kernel(qk4) # Uncomment if using measurement based analytics prog.compile() # showQasm() qx = qxelarator.QX() qx.set('test_output/qpm_a4.qasm') # Result analytics using Internal State Vector qx.execute() qxopt = qx.get_state() isv = [0] * (2**total_qubits) ptrn = re.compile('\(([+-]\d+.\d*),([+-]\d+[.\d*]?)\)\s[|]([0-1]*)>') for line in qxopt.splitlines(): mtch = ptrn.search(line) if mtch != None: ar = float(mtch.group(1)) ac = float(mtch.group(2)) state = int(mtch.group(3), 2) isv[state] = ar**2 + ac**2 ploty = [0] * (2**s) for i in range(0, len(isv)): stot = format(i, '0' + str(total_qubits) + 'b')[::-1] sopt = int(stot[0:s], 2) ploty[sopt] = ploty[sopt] + isv[i] print("PMax:", np.amax(ploty)) print("Index:", np.argmax(ploty)) plt.plot(ploty) plt.ylabel('Probability') plt.xlabel('Solution space') plt.ylim([0, 1]) plt.show() # Result analytics using Measurement ''' res = [0]*s STT = 1000 # Number of quantum state tomography trials true_counter = 0 for i in range(STT): qx.execute() res[0] = res[0] + qx.get_measurement_outcome(0) res[1] = res[1] + qx.get_measurement_outcome(1) res[2] = res[2] + qx.get_measurement_outcome(2) index = ''.join('1' if res[i] > STT/2 else '0' for i in range(s)) print("Index:",int(index,2)) ''' return
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 15 p = ql.Program('benstein_vazirani_13b_secret_8', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('benstein_vazirani_13b_secret_8', platform) k.gate('prepx',13) k.gate('x',13) k.gate('h',0) k.gate('h',1) k.gate('h',2) k.gate('h',3) k.gate('h',4) k.gate('h',5) k.gate('h',6) k.gate('h',7) k.gate('h',8) k.gate('h',9) k.gate('h',10) k.gate('h',11) k.gate('h',12) k.gate('h',13) k.gate('cnot',3y)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 5 p = ql.Program('4mod5-v1_24', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('4mod5-v1_24', platform) k.gate('x',4) k.gate('cnot',3,1) k.gate('h',0) k.gate('t',4) k.gate('t',2) k.gate('t',0) k.gate('cnot',2,4) k.gate('cnot',0,2) k.gate('cnot',4,0) k.gate('tdag',2) k.gate('cnot',4,2) k.gate('tdag',4) k.gate('tdag',2) k.gate('t',0) k.gate('cnot',0,2) k.gate('cnot',4,0) k.gate('cnot',2,4)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 28 p = ql.Program('benstein_vazirani_26b_secret_32', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('benstein_vazirani_26b_secret_32', platform) k.gate('prepx',26) k.gate('x',26) k.gate('h',0) k.gate('h',1) k.gate('h',2) k.gate('h',3) k.gate('h',4) k.gate('h',5) k.gate('h',6) k.gate('h',7) k.gate('h',8) k.gate('h',9) k.gate('h',10) k.gate('h',11) k.gate('h',12) k.gate('h',13) k.gate('h',14)
from openql import openql as ql import os import numpy as np curdir = os.path.dirname(__file__) output_dir = os.path.join(curdir, 'test_output') ql.set_output_dir(output_dir) config_fn = os.path.join(curdir, '/home/daniel/Master/Quantum_Computing_and_Quantum_Information/OpenQL/tests/hardware_config_cc_light.json') platform = ql.Platform('platform_none', config_fn) sweep_points = [1,2] num_circuits = 1 num_qubits = 5 p = ql.Program('4gt13_91', num_qubits, platform) p.set_sweep_points(sweep_points, num_circuits) k = ql.Kernel('4gt13_91', platform) k.gate('cnot',2,1) k.gate('cnot',1,2) k.gate('cnot',3,2) k.gate('cnot',2,3) k.gate('cnot',4,3) k.gate('cnot',3,4) k.gate('h',0) k.gate('t',4) k.gate('t',3) k.gate('t',0) k.gate('cnot',3,4) k.gate('cnot',0,3) k.gate('cnot',4,0) k.gate('tdag',3) k.gate('cnot',4,3) k.gate('tdag',4) k.gate('tdag',3)