OpenQASM 3 at ang Qiskit SDK
Mga bersyon ng package
Ang code sa pahinang ito ay binuo gamit ang mga sumusunod na kinakailangan. Inirerekomenda namin ang paggamit ng mga bersyong ito o mas bago.
qiskit[all]~=2.3.0
# Added by doQumentation β required packages for this notebook
!pip install -q qiskit
Ang Qiskit SDK ay nagbibigay ng ilang mga kasangkapan para sa pag-convert sa pagitan ng mga OpenQASM na representasyon ng mga quantum na programa, at ng klase na QuantumCircuit. Tandaan na ang mga kasangkapang ito ay nasa exploratory na yugto pa ng pagpapaunlad at patuloy na mag-eevolve habang lumalaki ang suporta ng Qiskit para sa dynamic na Circuit na kakayahan na ipinahayag ng OpenQASM 3.
Ang function na ito ay nasa exploratory na yugto pa. Kaya naman, malamang na mag-eevolve ang syntax at mga kakayahan nito.
Mag-import ng OpenQASM 3 na programa sa Qiskitβ
Kailangan mong i-install ang package na qiskit_qasm3_import para magamit ang function na ito. I-install gamit ang sumusunod na command.
pip install qiskit-qasm3-import
Sa kasalukuyan, dalawang high-level na function ang available para sa pag-import mula sa OpenQASM 3 papasok sa Qiskit. Ang mga function na ito ay load(), na tumatanggap ng file name, at loads(), na tumatanggap ng programa mismo bilang string:
import qiskit.qasm3
qiskit.qasm3.load(file_name)
qiskit.qasm3.loads(program_string)
Sa halimbawang ito, nagde-define tayo ng quantum na programa gamit ang OpenQASM 3, at ginagamit ang loads() para direktang i-convert ito sa isang 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")
I-export sa OpenQASM 3β
Maaari mong i-export ang Qiskit code sa OpenQASM 3 gamit ang dumps(), na nag-e-export sa string, o dump(), na nag-e-export sa file.
Halimbawa gamit ang 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'
Halimbawa gamit ang 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()
Para sa karagdagang impormasyon, tingnan ang seksyong Exporting to OpenQASM 3 ng API reference.
Mga susunod na hakbangβ
- Matuto kung paano bumuo ng OpenQASM code sa gabay na IBM Quantum Composer.
- Suriin ang OpenQASM 3 Qiskit API reference.
- Bisitahin ang paksa na I-verify ang iyong programa.
- Suriin ang OpenQASM Live Specification.