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.5.2
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit": "qiskit"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
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
- Alamin kung paano bumuo ng OpenQASM code sa gabay na IBM Quantum Composer.
- Suriin ang reference na OpenQASM 3 Qiskit API.
- Bisitahin ang paksang I-verify ang iyong programa.
- Suriin ang OpenQASM Live Specification.