Lumaktaw sa pangunahing nilalaman

Talaan ng mga feature ng OpenQASM 3

Nasa ibaba ang listahan ng mga language feature ng OpenQASM 3.

Para sa higit pang detalye tungkol sa mga kakayahang ito, tingnan ang OpenQASM 3.X Live Specification.

Susi:

  • โŒ Hindi suportado
  • ๐ŸŸก Bahagyang suportado
  • โœ… Suportado

Ang ibig sabihin ng kumpletong "suportado" na marka ay depende sa kolum:

  • Qiskit SDK: Ang feature ay maaaring i-parse ng qiskit.qasm3.loads (gamit ang qiskit-qasm3-import extension), ma-represent sa isang QuantumCircuit, at ma-export sa OpenQASM 3 gamit ang qiskit.qasm3.dumps.

  • IBM Qiskit Runtime: Ang isang Circuit na naglalaman ng katumbas na Qiskit feature ay matagumpay na maipapatupad sa hardware sa pamamagitan ng IBMยฎ Qiskit Runtime.

Ang ibig sabihin ng "bahagyang suportado" ay karaniwang depende sa mga naka-link na tala.

tala

Ang pinakakaraniwang paraan ng pagsusumite ng mga Circuit sa IBM Qiskit Runtime ay ang paggawa ng Circuit sa Python-space interface ng Qiskit SDK. Ang mga Circuit na ginawa at isinumite sa ganitong paraan ay hindi na kailangang i-load mula sa mga OpenQASM 3 file papunta sa Qiskit SDK.

Kung hindi mo direktang ginagamit ang OpenQASM 3, ligtas mong magagamit ang mga feature na suportado para sa representasyon sa Qiskit SDK, pag-export sa OpenQASM 3, at pagsusumite sa IBM Qiskit Runtime. Kasama rito ang mga feature na hindi ma-load ng Qiskit SDK mula sa OpenQASM 3.

OpenQASM 3 FeatureQiskit SDK featureQiskit SDKIBM Qiskit RuntimeMga tala
commentsโœ…โœ…1
QASM vstringโœ…โœ…1
include๐ŸŸกโŒ1, 7
unicode namesโœ…โœ…
qubitQubit at QuantumRegisterโœ…๐ŸŸก2
bitClbit at ClassicalRegisterโœ…โœ…3
boolexpr.Var at mga classical expression๐ŸŸกโœ…4
intโŒโœ…4
uintexpr.Var at mga classical expression๐ŸŸกโœ…4
floatexpr.Var at mga classical expression๐ŸŸก๐ŸŸก4
angleImplicit, bilang mga Gate parameterโŒ๐ŸŸก4
complexโŒโŒ4
constโŒโŒ4
pi/ฯ€/tau/ฯ„/euler/โ„‡Constant-folded sa mga Gate parameterโœ…โœ…
Aliasing: letQuantum at classical register๐ŸŸกโŒ5
register concatenationQuantum at classical register๐ŸŸกโŒ5
castingexpr.Cast classical expression๐ŸŸก๐ŸŸก4
durationโŒโŒ
durationofโŒโŒ
ns/ยตs/us/ms/s/dtMga tagal ng delay at boxโœ…โœ…6
stretchexpr.Stretch๐ŸŸก๐ŸŸก4, 6
delayDelay/QuantumCircuit.delayโœ…โœ…6
barrierBarrier/QuantumCircuit.barrierโœ…โœ…
boxBoxOp/QuantumCircuit.boxโœ…โŒ6
Built-in 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โœ…โœ…
bit operations๐ŸŸกโœ…4
boolean operations๐ŸŸกโœ…4
arithmetic expressions๐ŸŸก๐ŸŸก4
comparisons๐ŸŸกโœ…4
ifQuantumCircuit.if_testโœ…โœ…8
elseQuantumCircuit.if_testโœ…โœ…8
else ifQuantumCircuit.if_testโœ…โŒ8
for loopsQuantumCircuit.for_loop๐ŸŸกโŒ8
while loopsQuantumCircuit.while_loopโœ…โŒ8
continueQuantumCircuit.continue_loop๐ŸŸกโŒ8
breakQuantumCircuit.break_loop๐ŸŸกโŒ8
returnโŒโŒ
externโŒโŒ
def subroutines (classical)โŒโŒ
def subroutines (quantum)โŒโŒ
inputQuantumCircuit.add_inputโœ…๐ŸŸก4, 9
outputโŒโŒ

Mga talaโ€‹

  1. Ang mga OpenQASM 3 program feature na ito ay walang epekto sa pagpapatupad at tinatanggal ng Qiskit bilang bahagi ng pag-parse ng mga file. Ang mga file na gumagamit sa kanila ay maaaring isumite pero walang epekto. Para sa mga include file, ang stdgates.inc ay kasalukuyang suportado bilang input sa Qiskit, at ang pagpapatupad sa Backend ay palaging nangangailangan na ang mga Circuit ay nai-compile na sa Instruction Set Architecture (ISA) ng Backend, kung saan ang mga include file ay walang kaugnayan.
  1. Sinusuportahan ng Qiskit SDK ang pag-parse at pag-dump ng mga OpenQASM 3 file na may anumang qubit declaration. Para sa pagpapatupad sa hardware, tanging mga Circuit na tinukoy gamit ang mga hardware Qubit (halimbawa, $0) ang valid. Awtomatikong ino-output ng Qiskit SDK ang OpenQASM 3 gamit ang mga suportadong hardware-qubit identifier kung ang Circuit ay na-transpile para sa isang Backend na may layout information.
  1. Ang mga bit- at bit[n]-typed na variable declaration sa Qiskit SDK ay katumbas ng mga Clbit at ClassicalRegister declaration.
  1. Noong Hulyo 2025, ang Qiskit SDK ay maaaring mag-represent ng mga lokal na variable ng limitadong hanay ng mga uri, maaaring mag-represent ng maraming runtime operation sa mga object na ito, at sinusuportahan ang pag-output sa kanila sa OpenQASM 3. Gayunpaman, ang Qiskit SDK (sa pamamagitan ng qiskit-qasm3-import v0.6.0) ay hindi sumusuporta ng pag-parse ng mga OpenQASM 3 file na naglalaman ng mga variable declaration, at may napaka-limitadong suporta para sa pag-parse ng mga variable expression. Sa pangkalahatan, karamihan sa maaaring i-represent ng Qiskit sa expression system nito ay maaaring ipatupad sa angkop na dynamic Circuit hardware, kahit na ang expression ay hindi pa ma-parse ng Qiskit SDK. Tingnan ang dokumentasyon ng Qiskit ng qiskit.circuit.classical module para sa pinakabagong impormasyon.
  1. Maaaring i-represent ng Qiskit SDK ang register aliasing para sa parehong quantum at classical register, pero lubhang hindi inirerekomenda ang paggamit ng aliasing ng mga classical register. Karamihan sa mga expression sa mga classical register ay hindi gumagana sa mga alias, at ang mga naka-alias na classical register ay hindi suportado para sa pagpapatupad sa hardware. Ang Qiskit OpenQASM 3 parser ay maaaring mag-resolve ng mga let alias statement na nagbi-bind ng resulta ng register concatenation.
  1. Sinusuportahan ng Qiskit SDK ang mga explicit delay sa pamamagitan ng QuantumCircuit.delay, at ang mga Circuit box (QuantumCircuit.box) ay maaari ring magkaroon ng mga explicit na tagal. Ang mga tagal na ito ay maaaring magsama ng mga classical expression ng mga stretch variable. Ang Qiskit SDK (noong Hulyo 2025 sa pamamagitan ng qiskit-qasm3-import v0.6.0) ay hindi sumusuporta ng pag-parse ng mga declaration ng uri na duration o uri na stretch mula sa mga OpenQASM 3 file. Ang hardware ay may limitadong suporta para sa mga tagal na may kasamang stretch.
  1. Ang mga Circuit ay kailangang ma-transpile sa ISA ng Backend para tumakbo sa IBM hardware. Pinipigilan nito ang mga custom na gate definition at mas mataas na antas na construct tulad ng mga Gate modifier (gaya ng inv @) mula sa pagiging valid para sa pagpapatupad sa hardware nang direkta, pero nire-resolve ng prosesong transpile ang mga ito sa mga valid na ISA Circuit. Ang Qiskit SDK (noong Hulyo 2025, sa pamamagitan ng qiskit-qasm3-import v0.6.0) ay agad na ie-evaluate ang mga Gate modifier habang nagpa-parse, kaya hindi na lalabas ang mga ito sa resultang QuantumCircuit, na posibleng may runtime cost.
  1. Maaaring i-represent ng Qiskit SDK ang structured control flow at i-export ito sa OpenQASM 3. Ang mga continue at break statement ay teknikal na maaaring i-represent ng Qiskit, pero hindi maayos na suportado kahit sa loob ng Qiskit SDK. Ang mga for loop sa Qiskit v2.1.0 ay hindi maayos na suportado. Ang nested na control flow (gaya ng isang if sa loob ng isa pang if, o isang else if statement) ay hindi karapat-dapat para sa pagpapatupad sa hardware.
  1. Sinusuportahan ng Qiskit SDK ang pag-declare ng anumang suportadong classical type bilang isang input variable sa Circuit. Ang ganitong mga variable ay kasalukuyang hindi karapat-dapat para sa pagpapatupad sa hardware, at hindi ma-load ng Qiskit OpenQASM 3 importer. Ang mga hindi naka-bind na Parameter object na nasa QuantumCircuit ay ine-export bilang mga input float[64] variable. Ang ilang mga runtime configuration option ay maaaring mag-enable ng pagpapatupad ng ganitong mga Circuit sa ilang Backend.

Mga susunod na hakbangโ€‹

Mga rekomendasyon