Lumaktaw sa pangunahing nilalaman
Ang proyektong ito ay nasa beta. Nakakita ng bug? Mag-bukas ng GitHub issue. May tanong o ideya? Magtanong sa Discussions β€” gusto naming marinig ang iyong feedback!
Gaano kaganda ang kalidad ng pagsasalin sa pahinang ito?

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 Quantum Compute Service: Ang isang circuit na naglalaman ng katumbas na Qiskit feature ay matagumpay na maipapatupad sa hardware sa pamamagitan ng IBM Quantum Compute Service.

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 Quantum Compute Service 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 Quantum Compute Service. Kasama rito ang mga feature na hindi ma-load ng Qiskit SDK mula sa OpenQASM 3.

OpenQASM 3 FeatureQiskit SDK featureQiskit SDKIBM Quantum Compute ServiceNotes
commentsβœ…βœ…1
QASM vstringβœ…βœ…1
include🟑❌1, 7
unicode namesβœ…βœ…
qubitQubit and QuantumRegisterβœ…πŸŸ‘2
bitClbit and ClassicalRegisterβœ…βœ…3
boolexpr.Var and classical expressionsπŸŸ‘βœ…4
intβŒβœ…4
uintexpr.Var and classical expressionsπŸŸ‘βœ…4
floatexpr.Var and classical expressions🟑🟑4
angleImplicit, as gate parameters❌🟑4
complex❌❌4
const❌❌4
pi/Ο€/tau/Ο„/euler/ℇConstant-folded into gate parametersβœ…βœ…
Aliasing: letQuantum and classical registers🟑❌5
register concatenationQuantum and classical registers🟑❌5
castingexpr.Cast classical expressions🟑🟑4
duration❌❌
durationof❌❌
ns/Β΅s/us/ms/s/dtDurations of delay and 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 puwedeng patakbuhin sa hardware.
  1. Sinusuportahan ng Qiskit SDK ang pag-declare ng anumang suportadong classical type bilang isang input variable sa circuit. Sa ngayon, hindi pa puwedeng patakbuhin sa hardware ang mga circuit na may ganitong variable, 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 pagpapatakbo ng ganitong mga circuit sa ilang Backend.

Mga susunod na hakbang​

Mga Rekomendasyon