Lewati ke konten utama

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.

catatan

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")

Output of the previous code cell

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​

Rekomendasi
Source: IBM Quantum docs β€” updated 27 Apr 2026
English version on doQumentation β€” updated 7 Mei 2026
This translation based on the English version of 11 Mar 2026