Lumaktaw sa pangunahing nilalaman

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.

tala

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

Output of the previous code cell

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​

Mga Rekomendasyon