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 angqiskit-qasm3-importextension), ma-represent sa isangQuantumCircuit, at ma-export sa OpenQASM 3 gamit angqiskit.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.
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 Feature | Qiskit SDK feature | Qiskit SDK | IBM Qiskit Runtime | Mga tala |
|---|---|---|---|---|
| comments | โ | โ | 1 | |
| QASM vstring | โ | โ | 1 | |
include | ๐ก | โ | 1, 7 | |
| unicode names | โ | โ | ||
qubit | Qubit at QuantumRegister | โ | ๐ก | 2 |
bit | Clbit at ClassicalRegister | โ | โ | 3 |
bool | expr.Var at mga classical expression | ๐ก | โ | 4 |
int | โ | โ | 4 | |
uint | expr.Var at mga classical expression | ๐ก | โ | 4 |
float | expr.Var at mga classical expression | ๐ก | ๐ก | 4 |
angle | Implicit, bilang mga Gate parameter | โ | ๐ก | 4 |
complex | โ | โ | 4 | |
const | โ | โ | 4 | |
pi/ฯ/tau/ฯ/euler/โ | Constant-folded sa mga Gate parameter | โ | โ | |
| Aliasing: let | Quantum at classical register | ๐ก | โ | 5 |
| register concatenation | Quantum at classical register | ๐ก | โ | 5 |
| casting | expr.Cast classical expression | ๐ก | ๐ก | 4 |
duration | โ | โ | ||
durationof | โ | โ | ||
ns/ยตs/us/ms/s/dt | Mga tagal ng delay at box | โ | โ | 6 |
stretch | expr.Stretch | ๐ก | ๐ก | 4, 6 |
delay | Delay/QuantumCircuit.delay | โ | โ | 6 |
barrier | Barrier/QuantumCircuit.barrier | โ | โ | |
box | BoxOp/QuantumCircuit.box | โ | โ | 6 |
Built-in U | UGate/QuantumCircuit.u | โ | โ | |
gate | ๐ก | ๐ก | 7 | |
gphase | QuantumCircuit.global_phase | ๐ก | โ | 7 |
ctrl @/ negctrl @ | AnnotatedOperation | ๐ก | โ | 7 |
inv @ | AnnotatedOperation | ๐ก | โ | 7 |
pow(k) @ | AnnotatedOperation | ๐ก | โ | 7 |
reset | Reset/QuantumCircuit.reset | โ | โ | |
measure | Measure/QuantumCircuit.measure | โ | โ | |
| bit operations | ๐ก | โ | 4 | |
| boolean operations | ๐ก | โ | 4 | |
| arithmetic expressions | ๐ก | ๐ก | 4 | |
| comparisons | ๐ก | โ | 4 | |
if | QuantumCircuit.if_test | โ | โ | 8 |
else | QuantumCircuit.if_test | โ | โ | 8 |
else if | QuantumCircuit.if_test | โ | โ | 8 |
for loops | QuantumCircuit.for_loop | ๐ก | โ | 8 |
while loops | QuantumCircuit.while_loop | โ | โ | 8 |
continue | QuantumCircuit.continue_loop | ๐ก | โ | 8 |
break | QuantumCircuit.break_loop | ๐ก | โ | 8 |
return | โ | โ | ||
extern | โ | โ | ||
def subroutines (classical) | โ | โ | ||
def subroutines (quantum) | โ | โ | ||
input | QuantumCircuit.add_input | โ | ๐ก | 4, 9 |
output | โ | โ |
Mga talaโ
- 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
includefile, angstdgates.incay 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 mgaincludefile ay walang kaugnayan.
- Sinusuportahan ng Qiskit SDK ang pag-parse at pag-dump ng mga OpenQASM 3 file na may anumang
qubitdeclaration. 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.
- Ang mga
bit- atbit[n]-typed na variable declaration sa Qiskit SDK ay katumbas ng mgaClbitatClassicalRegisterdeclaration.
- 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-importv0.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 ngqiskit.circuit.classicalmodule para sa pinakabagong impormasyon.
- 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
letalias statement na nagbi-bind ng resulta ng register concatenation.
- 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 mgastretchvariable. Ang Qiskit SDK (noong Hulyo 2025 sa pamamagitan ngqiskit-qasm3-importv0.6.0) ay hindi sumusuporta ng pag-parse ng mga declaration ng uri nadurationo uri nastretchmula sa mga OpenQASM 3 file. Ang hardware ay may limitadong suporta para sa mga tagal na may kasamangstretch.
- Ang mga Circuit ay kailangang ma-transpile sa ISA ng Backend para tumakbo sa IBM hardware. Pinipigilan nito
ang mga custom na
gatedefinition at mas mataas na antas na construct tulad ng mga Gate modifier (gaya nginv @) mula sa pagiging valid para sa pagpapatupad sa hardware nang direkta, pero nire-resolve ng prosesongtranspileang mga ito sa mga valid na ISA Circuit. Ang Qiskit SDK (noong Hulyo 2025, sa pamamagitan ngqiskit-qasm3-importv0.6.0) ay agad na ie-evaluate ang mga Gate modifier habang nagpa-parse, kaya hindi na lalabas ang mga ito sa resultangQuantumCircuit, na posibleng may runtime cost.
- Maaaring i-represent ng Qiskit SDK ang structured control flow at i-export ito sa OpenQASM 3. Ang mga
continueatbreakstatement ay teknikal na maaaring i-represent ng Qiskit, pero hindi maayos na suportado kahit sa loob ng Qiskit SDK. Ang mgaforloop sa Qiskit v2.1.0 ay hindi maayos na suportado. Ang nested na control flow (gaya ng isangifsa loob ng isa pangif, o isangelse ifstatement) ay hindi karapat-dapat para sa pagpapatupad sa hardware.
- Sinusuportahan ng Qiskit SDK ang pag-declare ng anumang suportadong classical type bilang isang
inputvariable 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 naParameterobject na nasaQuantumCircuitay ine-export bilang mgainput 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โ
- Alamin kung paano gumawa ng OpenQASM code gamit ang IBM Quantum Composer.
- Tingnan ang OpenQASM 3 Qiskit API reference.
- Tingnan ang OpenQASM 2 Qiskit API reference.
- Suriin ang I-verify ang iyong program na paksa.
- Bisitahin ang OpenQASM Live Specification.