Skip to main content
IBM Quantum Platform

OpenQASM 3 기능 표

아래는 OpenQASM 3 언어 기능 목록입니다.

이러한 기능에 대한 자세한 내용은 OpenQASM 3.X 라이브 사양을 참조하세요.

키:

  • ❌ 지원되지 않음
  • 🟡 부분 지원
  • ✅ 지원됨

완전한 "지원됨" 표시의 의미는 열에 따라 다릅니다:

  • Qiskit SDK : 해당 기능은 (확장 qiskit-qasm3-import 기능을 사용하여 qiskit.qasm3.loads ) 파싱될 수 있으며, 로 표현되고, QuantumCircuitOpenQASM 3 로 내보내질 수 qiskit.qasm3.dumps있습니다.

  • IBM Quantum 컴퓨트 서비스 : 해당 Qiskit 기능을 포함하는 회로는 IBM Quantum 컴퓨트 서비스를 통해 하드웨어에서 성공적으로 실행될 수 있습니다.

'부분 지원'의 의미는 일반적으로 링크된 노트에 따라 다릅니다.

Note

IBM Quantum Compute Service에 서킷을 제출하는 가장 일반적인 방법은 Python -space 인터페이스를 통해 Qiskit SDK 에 서킷을 생성하는 것입니다. 이러한 방식으로 구성하여 제출한 회로는 OpenQASM 3 파일에 있는 파일을 Qiskit SDK 로 불러올 필요가 없습니다.

OpenQASM 3를 직접 사용하지 않는 경우에도, Qiskit SDK 에서 지원되는 기능을 안전하게 활용하고, OpenQASM 3로 내보내며, IBM Quantum Compute Service에 제출할 수 있습니다. 여기에는 OpenQASM 3의 Qiskit SDK 를 통해 불러올 수 없는 기능들이 포함됩니다.

OpenQASM 3 기능
키스킷 SDK 기능
Qiskit SDK
IBM Quantum 컴퓨팅 서비스
참고
주석1
QASM vstring1
include🟡1, 7
유니코드 이름
qubitQubitQuantumRegister🟡2개
bitClbitClassicalRegister3
boolexpr.Var 및 고전적인 표현🟡4
int4
uintexpr.Var 및 고전적인 표현🟡4
floatexpr.Var 및 고전적인 표현🟡🟡4
angle암시적, 게이트 매개변수로서🟡4
complex4
const4
pi/π/tau/τ/euler/게이트 파라미터로 상수화
앨리어싱: let양자 및 클래식 레지스터🟡5
등록 연결양자 및 클래식 레지스터🟡5
캐스팅expr.Cast 클래식 표현식🟡🟡4
duration
durationof
ns/µs/us/ms/s/dtdelaybox6
stretchexpr.Stretch🟡🟡4, 6
delayDelay/QuantumCircuit.delay6
barrierBarrier/QuantumCircuit.barrier
boxBoxOp/QuantumCircuit.box6
기본 제공 UUGate/QuantumCircuit.u
gate🟡🟡7
gphaseQuantumCircuit.global_phase🟡7
ctrl @/ negctrl @AnnotatedOperation🟡7
inv @AnnotatedOperation🟡7
pow(k) @AnnotatedOperation🟡7
resetReset/QuantumCircuit.reset
measureMeasure/QuantumCircuit.measure
비트 조작🟡4
부울 조작🟡4
산술 연산식🟡🟡4
비교🟡4
ifQuantumCircuit.if_test8
elseQuantumCircuit.if_test8
else ifQuantumCircuit.if_test8
for 루프QuantumCircuit.for_loop🟡8
while 루프QuantumCircuit.while_loop8
continueQuantumCircuit.continue_loop🟡8
breakQuantumCircuit.break_loop🟡8
return
extern
def 서브루틴(클래식)
def 서브루틴(퀀텀)
inputQuantumCircuit.add_input🟡4, 9
output

참고

  1. 이 OpenQASM 3 가지 프로그램 기능은 실행에 영향을 미치지 않으며 키스킷은 파일 구문 분석의 일부로 제거합니다 를 제거합니다. 이를 사용하는 파일은 제출할 수 있지만 효과가 없습니다 효력이 없습니다. include 파일의 경우, 현재 키스킷의 입력으로 stdgates.inc 이 지원됩니다, 그리고 백엔드 실행을 위해서는 항상 백엔드 명령어 집합 아키텍처(ISA)로 컴파일된 회로가 필요하며, 여기서 include 파일은 관련이 없다.
  1. 키스킷 SDK는 qubit 선언이 포함된 OpenQASM 3 파일 구문 분석 및 덤핑을 지원합니다. 의 경우 하드웨어에서 실행하는 경우 하드웨어 큐비트(예: $0)로 정의된 회로만 유효합니다. 키스킷 SDK는 지원되는 하드웨어 쿼비트에 대해 OpenQASM 3을 자동으로 출력합니다 식별자를 출력합니다. 회로가 레이아웃 정보와 함께 백엔드용으로 트랜스파일된 경우.
  1. bit- 및 bit[n]- 타입의 변수 선언은 키스킷 SDK에서 ClbitClassicalRegister 선언에 해당한다.
  1. 2025년 7월 현재, 키스킷 SDK는 제한된 유형의 로컬 변수를 표현할 수 있으며, 다음과 같은 많은 런타임 연산을 표현할 수 있다 이러한 객체에 대한 많은 런타임 연산을 표현할 수 있으며 OpenQASM 3으로 출력하는 것을 지원합니다. 그러나 키스킷 SDK( qiskit-qasm3-import v0.6.0 )는 변수 선언이 포함된 OpenQASM 3 파일의 구문 분석을 지원하지 않으며, 변수 선언이 포함된 변수 표현식 구문 분석을 매우 제한적으로 지원합니다. 일반적으로 키스킷이 표현식 시스템에서 표현할 수 있는 대부분의 것은 표현식을 아직 구문 분석할 수 없더라도 적절한 동적 회로 하드웨어에서 실행할 수 있습니다 키스킷 SDK. 최신 정보는 모듈의 키스킷 문서에서 qiskit.circuit.classical 모듈의 을 참조하세요.
  1. 키스킷 SDK는 양자 레지스터와 기존 레지스터 모두에 대해 레지스터 앨리어싱을 표현할 수 있지만, 기존 레지스터의 앨리어싱을 사용하는 것은 클래식 레지스터의 앨리어싱을 사용하는 것은 강력히 권장하지 않습니다. 클래식 레지스터의 대부분의 표현식은 레지스터의 대부분의 표현식은 별칭과 함께 작동하지 않으며, 별칭이 지정된 클래식 레지스터는 하드웨어에서 실행을 지원하지 않습니다. 키스킷 OpenQASM 3 구문 분석기는 let 에일리어스 문을 해결할 수 있다 를 바인딩하는 별칭 문을 해석할 수 있습니다.
  1. 키스킷 SDK는 QuantumCircuit.delay 을 통해 명시적 지연을 지원하며, 회로 상자( (QuantumCircuit.box)에서도 명시적인 지연 시간을 가질 수 있습니다. 이러한 기간에는 고전적인 stretch 변수의 표현식을 포함할 수 있습니다. 키스킷 SDK(2025년 7월부터 qiskit-qasm3-import v0.6.0 )는 duration 또는 stretch 유형의 구문 분석 선언을 지원하지 않습니다 OpenQASM 3 파일. 하드웨어는 stretch 을 포함한 기간에 대한 지원이 제한되어 있습니다.
  1. IBM 하드웨어에서 실행하려면 회로를 백엔드 ISA로 트랜스파일해야 합니다. 이렇게 하면 사용자 정의 gate 정의와 게이트 수정자(예: inv @)와 같은 상위 수준 구조체는 를 하드웨어에서 그대로 실행할 수 없지만, transpile 프로세스는 이를 를 유효한 ISA 회로로 변환합니다. 키스킷 SDK( 2025년 7월부터 qiskit-qasm3-import v0.6.0 )는 구문 분석 중에 게이트 수정자를 열심히 평가할 것이므로, 이러한 게이트 수정자는 결과에서 명백하게 드러나지 않을 것입니다( QuantumCircuit, 잠재적으로 런타임 비용이 발생할 수 있습니다.
  1. Qiskit SDK는 구조화된 제어 흐름을 표현하고 이를 OpenQASM 3으로 내보낼 수 있습니다. 와 continuebreak 문은 기술적으로 키스킷으로 표현할 수 있지만, 키스킷 SDK 내에서도 잘 지원되지 않습니다 에서도 잘 지원되지 않습니다. for 루프 v2.1.0 는 잘 지원되지 않습니다. 중첩된 제어 흐름(예: 다른 if 내부의 if 또는 else if 문)은 하드웨어에서 실행할 수 없습니다 실행할 수 없습니다.
  1. 키스킷 SDK는 지원되는 모든 클래식 유형을 회로에서 input 변수로 선언하는 것을 지원합니다. 이러한 변수는 현재 하드웨어에서 실행할 수 없으며, 다음과 같은 방법으로 로드할 수 없습니다 키스킷 OpenQASM 3 임포터로 로드할 수 없습니다. QuantumCircuit 에 있는 바인딩되지 않은 Parameter 객체는 input float[64] 변수로 내보냅니다. 특정 런타임 구성 옵션에 따라 일부 백엔드에서 이러한 회로를 실행할 수 있습니다.

다음 단계

권장사항
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.