diff --git a/tests/01_test_gate.py b/tests/01_test_gate.py new file mode 100644 index 00000000..0ba2cfda --- /dev/null +++ b/tests/01_test_gate.py @@ -0,0 +1,49 @@ +import sys +import os +import matplotlib.pyplot as plt + +# Add the directory containing your module to Python's search path +module_path = ".." +sys.path.insert(0, module_path) + +from tensorcircuit import Circuit, Param, gates, waveforms +from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties +import re + +# from dotenv import load_dotenv +# load_dotenv() + +shots_const = 1000 + +print("✅ TEST FILE LOADED") +set_token(os.getenv("TOKEN")) +set_provider("tencent") +ds = list_devices() +print(ds) + + +def gen_gate_circuit(t): + qc = Circuit(2) + qc.h(0) + qc.cnot(0, 1) + + return qc + + +def run_circuit(qc): + device_name = "tianji_s2" + d = get_device(device_name) + t = submit_task( + circuit=qc, + shots=shots_const, + device=d, + enable_qos_gate_decomposition=False, + enable_qos_qubit_mapping=False, + ) + # print(qc.to_tqasm()) + # n = qc._nqubits + rf = t.results() + print(rf) + +qc = gen_gate_circuit(1.0) +result = run_circuit(qc) \ No newline at end of file diff --git a/tests/02_test_param_pulse.py b/tests/02_test_param_pulse.py new file mode 100644 index 00000000..cc212f1f --- /dev/null +++ b/tests/02_test_param_pulse.py @@ -0,0 +1,59 @@ +import sys +import os +import matplotlib.pyplot as plt + +# Add the directory containing your module to Python's search path +module_path = ".." +sys.path.insert(0, module_path) + +from tensorcircuit import Circuit, Param, gates, waveforms +from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties +import re + +# from dotenv import load_dotenv +# load_dotenv() + +shots_const = 1000 + +print("✅ TEST FILE LOADED") +set_token(os.getenv("TOKEN")) +set_provider("tencent") +ds = list_devices() +print(ds) + + +def gen_parametric_waveform_circuit(t): + qc = Circuit(2) + + param0 = Param("a") + +# 需根据以下定义的方式,修改代码 + builder = qc.calibrate("basic_pulse", [param0]) + frame = builder.new_frame("drive_frame", param0) + builder.play(frame, waveforms.CosineDrag(t, 0.2, 0.0, 0.0)) + + builder.build() + + qc.add_calibration(builder, [0]) + + # print(qc.to_tqasm()) + return qc + + +def run_circuit(qc): + device_name = "tianji_s2" + d = get_device(device_name) + t = submit_task( + circuit=qc, + shots=shots_const, + device=d, + enable_qos_gate_decomposition=False, + enable_qos_qubit_mapping=False, + ) + # print(qc.to_tqasm()) + # n = qc._nqubits + rf = t.results() + print(rf) + +qc = gen_parametric_waveform_circuit(1.0) +result = run_circuit(qc) \ No newline at end of file diff --git a/tests/03_test_gate_pulse_mix.py b/tests/03_test_gate_pulse_mix.py new file mode 100644 index 00000000..c7568fea --- /dev/null +++ b/tests/03_test_gate_pulse_mix.py @@ -0,0 +1,60 @@ +import sys +import os +import matplotlib.pyplot as plt + +# Add the directory containing your module to Python's search path +module_path = ".." +sys.path.insert(0, module_path) + +from tensorcircuit import Circuit, Param, gates, waveforms +from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties +import re + +# from dotenv import load_dotenv +# load_dotenv() + +shots_const = 1000 + +print("✅ TEST FILE LOADED") +set_token(os.getenv("TOKEN")) +set_provider("tencent") +ds = list_devices() +print(ds) + + +def gen_gate_pulse_mix_circuit(t): + qc = Circuit(2) + + param0 = Param("a") + + builder = qc.calibrate("basic_pulse", [param0]) + frame = builder.new_frame("drive_frame", param0) + builder.play(frame, waveforms.CosineDrag(t, 0.2, 0.0, 0.0)) + + builder.build() + + qc.add_calibration(builder, [0]) + + qc.i(0) + qc.x(0) + + return qc + + +def run_circuit(qc): + device_name = "tianji_s2" + d = get_device(device_name) + t = submit_task( + circuit=qc, + shots=shots_const, + device=d, + enable_qos_gate_decomposition=False, + enable_qos_qubit_mapping=False, + ) + # print(qc.to_tqasm()) + # n = qc._nqubits + rf = t.results() + print(rf) + +qc = gen_gate_pulse_mix_circuit(1.0) +result = run_circuit(qc) \ No newline at end of file diff --git a/tests/04_test_custom_chip.py b/tests/04_test_custom_chip.py new file mode 100644 index 00000000..87aa398a --- /dev/null +++ b/tests/04_test_custom_chip.py @@ -0,0 +1,82 @@ +import sys +import os +import matplotlib.pyplot as plt + +# Add the directory containing your module to Python's search path +module_path = ".." +sys.path.insert(0, module_path) + +from tensorcircuit import Circuit, Param, gates, waveforms +from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties +import re + +# from dotenv import load_dotenv +# load_dotenv() + +shots_const = 1000 + +print("✅ TEST FILE LOADED") +set_token(os.getenv("TOKEN")) +set_provider("tencent") +ds = list_devices() +print(ds) + +def gen_custom_chip_circuit(t): + qc = Circuit(2) + +# 需添加 MapQubits(user_addr, chip_addr),对应 #pragram的qubits.mapping +# 需添加 GridQubit(left_user_addr, right_user_addr),对应 #pragram的qubits.coupling + +# 以下是两种映射方式 + qc.map_qubits([4,9,8,14]) + qc.map_qubits([4,9,8,14], [3,2,1,0]) + + + qc.i(0) + qc.cnot(0) + + # print(qc.to_tqasm()) + return qc + + + +def gen_custom_chip_circuit(t): + qc = Circuit(2) + +# 需添加 MapQubit(user_addr, chip_addr),对应 #pragram的qubits.mapping +# 需添加 GridQubit(left_user_addr, right_user_addr),对应 #pragram的qubits.coupling + + + qc.MapQubit(0, 4) + qc.MapQubit(1, 9) + qc.MapQubit(2, 8) + qc.MapQubit(3, 14) + + qc.GridQubit(0, 1) + qc.GridQubit(0, 2) + qc.GridQubit(1, 3) + + qc.i(0) + qc.cnot(0) + + # print(qc.to_tqasm()) + return qc + + +def run_circuit(qc): + device_name = "tianji_s2" + d = get_device(device_name) + t = submit_task( + circuit=qc, + shots=shots_const, + device=d, + enable_qos_gate_decomposition=False, + enable_qos_qubit_mapping=False, + ) + # print(qc.to_tqasm()) + # n = qc._nqubits + rf = t.results() + print(rf) + +qc = gen_gate_pulse_mix_circuit(1.0) +result = run_circuit(qc) \ No newline at end of file diff --git a/tests/05_test_multi_measure.py b/tests/05_test_multi_measure.py new file mode 100644 index 00000000..989f891a --- /dev/null +++ b/tests/05_test_multi_measure.py @@ -0,0 +1,60 @@ +import sys +import os +import matplotlib.pyplot as plt + +# Add the directory containing your module to Python's search path +module_path = ".." +sys.path.insert(0, module_path) + +from tensorcircuit import Circuit, Param, gates, waveforms +from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties +import re + +# from dotenv import load_dotenv +# load_dotenv() + +shots_const = 1000 + +print("✅ TEST FILE LOADED") +set_token(os.getenv("TOKEN")) +set_provider("tencent") +ds = list_devices() +print(ds) + + +def gen_multi_measure_circuit(t): + qc = Circuit(6) + + qc.h(0) + qc.cnot(0, 1) + + # 参数门在 to_tqasm 中的转换丢失了参数 + # qc.rxx(0, 5, theta=1.04632) + +# 需添加测量指令 + qc.measure(0, 1) + qc.cz(0, 1) + qc.measure(0, 1) + + + # print(qc.to_tqasm()) + return qc + + +def run_circuit(qc): + device_name = "tianji_s2" + d = get_device(device_name) + t = submit_task( + circuit=qc, + shots=shots_const, + device=d, + enable_qos_gate_decomposition=False, + enable_qos_qubit_mapping=False, + ) + # print(qc.to_tqasm()) + # n = qc._nqubits + rf = t.results() # 需返回 multi_results + print(rf) + +qc = gen_multi_measure_circuit(1.0) +result = run_circuit(qc) \ No newline at end of file