OpenQASM 3와 Qiskit SDK
패키지 버전
이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 이 버전 이상을 사용하길 권장합니다.
qiskit[all]~=2.3.0
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
Qiskit SDK는 양자 프로그램의 OpenQASM 표현과 QuantumCircuit 클래스 간의 변환을 위한 도구를 제공합니다. 이 도구들은 아직 탐색적 개발 단계에 있으며, Qiskit의 OpenQASM 3로 표현되는 동적 Circuit 기능에 대한 지원이 증가함에 따라 계속 발전할 것입니다.
참고
이 기능은 아직 탐색적 단계에 있습니다. 따라서 구문과 기능이 변경될 가능성이 있습니다.
OpenQASM 3 프로그램을 Qiskit으로 가져오기
이 기능을 사용하려면 qiskit_qasm3_import 패키지를 설치해야 합니다. 다음 명령어를 사용하여 설치하세요.
pip install qiskit-qasm3-import
현재 OpenQASM 3에서 Qiskit으로 가져오기 위한 두 가지 고수준 함수를 사용할 수 있습니다. 파일 이름을 받는 load()와 프로그램 자체를 문자열로 받는 loads()입니다:
import qiskit.qasm3
qiskit.qasm3.load(file_name)
qiskit.qasm3.loads(program_string)
이 예시에서는 OpenQASM 3를 사용하여 양자 프로그램을 정의하고, loads()를 사용하여 이를 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")
OpenQASM 3로 내보내기
dumps()를 사용하여 문자열로 내보내거나, dump()를 사용하여 파일로 내보내는 방법으로 Qiskit 코드를 OpenQASM 3로 내보낼 수 있습니다.
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'
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()
자세한 내용은 API 참조의 OpenQASM 3로 내보내기 섹션을 참조하세요.
다음 단계
권장 사항
- IBM Quantum Composer 가이드에서 OpenQASM 코드를 생성하는 방법을 알아보세요.
- OpenQASM 3 Qiskit API 참조를 검토하세요.
- 프로그램 검증 주제를 방문하세요.
- OpenQASM 라이브 명세를 검토하세요.