OpenQASM 3 dan Qiskit SDK
Versi paket
Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami merekomendasikan menggunakan versi ini atau yang lebih baru.
qiskit[all]~=2.3.0
# Added by doQumentation β required packages for this notebook
!pip install -q qiskit
Qiskit SDK menyediakan beberapa alat untuk mengonversi antara representasi OpenQASM dari program kuantum dan kelas QuantumCircuit. Perlu dicatat bahwa alat-alat ini masih dalam fase eksplorasi pengembangan dan akan terus berkembang seiring meningkatnya dukungan Qiskit untuk kemampuan dynamic circuit yang diekspresikan oleh OpenQASM 3.
Fungsi ini masih dalam fase eksplorasi. Oleh karena itu, kemungkinan besar sintaks dan kemampuannya akan terus berkembang.
Mengimpor program OpenQASM 3 ke Qiskitβ
Kamu harus menginstal paket qiskit_qasm3_import untuk menggunakan fungsi ini. Instal menggunakan perintah berikut.
pip install qiskit-qasm3-import
Saat ini tersedia dua fungsi tingkat tinggi untuk mengimpor dari OpenQASM 3 ke Qiskit. Fungsi-fungsi tersebut adalah load(), yang mengambil nama file, dan loads(), yang mengambil program itu sendiri sebagai string:
import qiskit.qasm3
qiskit.qasm3.load(file_name)
qiskit.qasm3.loads(program_string)
Pada contoh ini, kita mendefinisikan program kuantum menggunakan OpenQASM 3, lalu menggunakan loads() untuk langsung mengonversinya menjadi 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")
Mengekspor ke OpenQASM 3β
Kamu bisa mengekspor kode Qiskit ke OpenQASM 3 dengan dumps(), yang mengekspor ke string, atau dump(), yang mengekspor ke file.
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 informasi lebih lanjut, lihat bagian Exporting to OpenQASM 3 di referensi API.
Langkah selanjutnyaβ
- Pelajari cara menghasilkan kode OpenQASM di panduan IBM Quantum Composer.
- Tinjau referensi OpenQASM 3 Qiskit API.
- Kunjungi topik Verifikasi program kamu.
- Tinjau OpenQASM Live Specification.