Beispiel #1
0
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()
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #7
0
# 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)
Beispiel #9
0
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)
Beispiel #10
0
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)
Beispiel #11
0
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)
Beispiel #12
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)
Beispiel #15
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('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)
Beispiel #16
0
    ]

    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)
Beispiel #17
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 = 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)
Beispiel #21
0
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)
Beispiel #22
0
    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()
Beispiel #23
0
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)
Beispiel #25
0
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)
Beispiel #26
0
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
Beispiel #27
0
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)
Beispiel #28
0
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)
Beispiel #30
0
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)