OpenQASM 3 dan Qiskit SDK
Versi pakej
Kod di halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan menggunakan versi ini atau lebih baharu.
qiskit[all]~=2.3.0
# Added by doQumentation β required packages for this notebook
!pip install -q qiskit
Qiskit SDK menyediakan beberapa alat untuk menukar antara representasi OpenQASM program kuantum, dan kelas QuantumCircuit. Perhatikan bahawa alat-alat ini masih dalam fasa penerokaan pembangunan dan akan terus berkembang apabila sokongan Qiskit untuk keupayaan circuit dinamik yang dinyatakan oleh OpenQASM 3 meningkat.
Fungsi ini masih dalam fasa penerokaan. Oleh itu, sintaks dan keupayaan berkemungkinan akan berkembang.
Import program OpenQASM 3 ke dalam Qiskitβ
Anda mesti memasang pakej qiskit_qasm3_import untuk menggunakan fungsi ini. Pasang menggunakan arahan berikut.
pip install qiskit-qasm3-import
Pada masa ini dua fungsi peringkat tinggi tersedia untuk mengimport dari OpenQASM 3 ke dalam Qiskit. Fungsi-fungsi ini ialah load(), yang mengambil nama fail, dan loads(), yang mengambil program itu sendiri sebagai rentetan:
import qiskit.qasm3
qiskit.qasm3.load(file_name)
qiskit.qasm3.loads(program_string)
Dalam contoh ini, kami menakrifkan program kuantum menggunakan OpenQASM 3, dan menggunakan loads() untuk menukarnya terus ke QuantumCircuit:
import qiskit.qasm3
program = """
OPENQASM 3.0;
include "stdgates.inc";
input float[64] a;
qubit[3] q;
bit[2] mid;
bit[3] out;
let aliased = q[0:1];
gate my_gate(a) c, t {
gphase(a / 2);
ry(a) c;
cx c, t;
}
gate my_phase(a) c {
ctrl @ inv @ gphase(a) c;
}
my_gate(a * 2) aliased[0], q[{1, 2}][0];
measure q[0] -> mid[0];
measure q[1] -> mid[1];
while (mid == "00") {
reset q[0];
reset q[1];
my_gate(a) q[0], q[1];
my_phase(a - pi/2) q[1];
mid[0] = measure q[0];
mid[1] = measure q[1];
}
if (mid[0]) {
let inner_alias = q[{0, 1}];
reset inner_alias;
}
out = measure q;
"""
circuit = qiskit.qasm3.loads(program)
circuit.draw("mpl")
Eksport ke OpenQASM 3β
Anda boleh mengeksport kod Qiskit ke OpenQASM 3 dengan dumps(), yang mengeksport ke rentetan, atau dump(), yang mengeksport ke fail.
Contoh dengan dumps()β
from qiskit import QuantumCircuit
from qiskit.qasm3 import dumps
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
dumps(qc)
'OPENQASM 3.0;\ninclude "stdgates.inc";\nbit[2] meas;\nqubit[2] q;\nh q[0];\ncx q[0], q[1];\nbarrier q[0], q[1];\nmeas[0] = measure q[0];\nmeas[1] = measure q[1];\n'
Contoh dengan dump()β
from qiskit import QuantumCircuit
from qiskit.qasm3 import dump
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
f = open("my_file.txt", "w")
dump(qc, f)
f.close()
Untuk maklumat lanjut, lihat bahagian Mengeksport ke OpenQASM 3 rujukan API.
Langkah seterusnyaβ
- Ketahui cara menjana kod OpenQASM dalam panduan IBM Quantum Composer.
- Semak rujukan OpenQASM 3 Qiskit API.
- Lawati topik Sahkan program anda.
- Semak Spesifikasi Langsung OpenQASM.