Skip to main content
IBM Quantum Platform

OpenQASM tavolo a 3 funzioni

Di seguito è riportato un elenco delle caratteristiche della lingua OpenQASM 3 .

Per maggiori dettagli su queste funzionalità, consultare la specifica OpenQASM 3.X Live.

Chiave:

  • ❌ Non supportato
  • 🟡 Supporto parziale
  • ✅ Supportato

Il significato del segno completo "supportato" dipende dalla colonna:

  • Qiskit SDK (Caratteristiche di un oggetto): la caratteristica può essere analizzata da qiskit.qasm3.loads (utilizzando l'estensione qiskit-qasm3-import ), rappresentata in un QuantumCircuite esportata in OpenQASM 3 tramite qiskit.qasm3.dumps.

  • IBM Quantum Servizio di calcolo : un circuito contenente la funzione Qiskit corrispondente può essere eseguito correttamente sull'hardware tramite il servizio di calcol IBM Quantum.

Il significato di "sostegno parziale" dipende tipicamente dalle note collegate.

Note

Il metodo più comune per inviare circuiti al servizio di calcolo " IBM Quantum " consiste nel creare il circuito nell'interfaccia " Python " all'indirizzo Qiskit SDK. I circuiti realizzati e inviati in questo modo non devono essere caricati dai file di OpenQASM 3 su Qiskit SDK.

Se non utilizzi direttamente l' OpenQASM e 3, puoi comunque utilizzare in tutta sicurezza le funzionalità supportate per la rappresentazione in Qiskit SDK, l'esportazione in OpenQASM e 3 e l'invio al servizio di calcolo IBM Quantum. Ciò include funzionalità che non possono essere caricate da Qiskit SDK da OpenQASM 3.

OpenQASM 3 Caratteristica
Caratteristiche dell'SDK Qiskit
Qiskit SDK
IBM Quantum Servizio di elaborazione dati
Note
commentiERROR! SEGMENT DATA CORRUPTED, SEGDATA=1
QASM vstringERROR! SEGMENT DATA CORRUPTED, SEGDATA=1
include🟡1, 7
nomi unicode
qubitQubit e QuantumRegister🟡ERROR! SEGMENT DATA CORRUPTED, SEGDATA=2
bitClbit e ClassicalRegister3
boolexpr.Var e le espressioni classiche🟡4,00
int4,00
uintexpr.Var e le espressioni classiche🟡4,00
floatexpr.Var e le espressioni classiche🟡🟡4,00
angleImplicito, come parametri del gate🟡4,00
complex4,00
const4,00
pi/π/tau/τ/euler/Costante ripiegata nei parametri del gate
Aliasing: lasciare cheRegistri quantistici e classici🟡5,00
concatenazione di registriRegistri quantistici e classici🟡5,00
castingexpr.Cast espressioni classiche🟡🟡4,00
duration
durationof
ns/µs/us/ms/s/dtDurata di delay e boxERROR! SEGMENT DATA CORRUPTED, SEGDATA=6
stretchexpr.Stretch🟡🟡4, 6
delayDelay/QuantumCircuit.delayERROR! SEGMENT DATA CORRUPTED, SEGDATA=6
barrierBarrier/QuantumCircuit.barrier
boxBoxOp/QuantumCircuit.boxERROR! SEGMENT DATA CORRUPTED, SEGDATA=6
Integrato 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
operazioni con i bit🟡4,00
operazioni booleane🟡4,00
Espressioni aritmetiche🟡🟡4,00
Confronti🟡4,00
ifQuantumCircuit.if_test8
elseQuantumCircuit.if_test8
else ifQuantumCircuit.if_test8
for LoopQuantumCircuit.for_loop🟡8
while LoopQuantumCircuit.while_loop8
continueQuantumCircuit.continue_loop🟡8
breakQuantumCircuit.break_loop🟡8
return
extern
def subroutine (classiche)
def subroutine (quantum)
inputQuantumCircuit.add_input🟡4, 9
output

Note

  1. Queste caratteristiche del programma OpenQASM 3 non hanno alcun impatto sull'esecuzione e Qiskit le elimina come parte dell'analisi dei file come parte dell'analisi dei file. I file che li utilizzano possono essere inviati, ma non avranno alcun effetto alcun effetto. Per i file include , stdgates.inc è attualmente supportato come input per Qiskit, e l'esecuzione di backend richiede sempre che i circuiti siano stati compilati in base all'Instruction Set Architecture (ISA) di backend, dove i file sono irrilevanti include sono irrilevanti.
  1. Qiskit SDK supporta il parsing e il dump dei file OpenQASM 3 con qualsiasi dichiarazione qubit . Per per l'esecuzione su hardware, sono validi solo i circuiti definiti in termini di qubit hardware (ad esempio, $0). Qiskit SDK produce automaticamente OpenQASM 3 in termini di identificatori hardware-qubit supportati se il circuito è stato transpilato per un backend con informazioni sul layout se il circuito è stato transpilato per un backend con informazioni sul layout.
  1. bit- e le dichiarazioni di variabili di tipo bit[n] in Qiskit SDK corrispondono alle dichiarazioni di tipo Clbit e ClassicalRegister dichiarazioni.
  1. A partire dal luglio 2025, Qiskit SDK è in grado di rappresentare variabili locali di un insieme ristretto di tipi, può rappresentare molte operazioni di runtime su questi oggetti e supporta l'output in rappresentare molte operazioni di runtime su questi oggetti e supporta l'output su OpenQASM 3. Tuttavia, Qiskit SDK (attraverso qiskit-qasm3-import v0.6.0 ) non supporta il parsing dei file OpenQASM 3 file che contengono dichiarazioni di variabili e ha un supporto molto limitato per l'analisi delle espressioni di variabili espressioni di variabili. In generale, la maggior parte di ciò che Qiskit è in grado di rappresentare nel suo sistema di espressioni può essere su circuiti dinamici adeguati, anche se l'espressione non può ancora essere analizzata da Qiskit SDK Qiskit SDK. Consultare la documentazione Qiskit del modulo qiskit.circuit.classical per le informazioni più aggiornate.
  1. Qiskit SDK può rappresentare l'aliasing dei registri sia per i registri quantistici che per quelli classici, ma è fortemente sconsigliato l'uso dell'aliasing dei registri classici fortemente sconsigliato l'uso dell'aliasing dei registri classici. La maggior parte delle espressioni sui registri non funzionano con gli alias e i registri classici con alias non sono supportati per l'esecuzione in hardware l'esecuzione su hardware. Il parser di Qiskit OpenQASM 3 è in grado di risolvere le dichiarazioni alias di let che vincolano il risultato della concatenazione dei registri il risultato della concatenazione dei registri.
  1. L'SDK di Qiskit supporta ritardi espliciti tramite QuantumCircuit.delay, e le caselle di circuito (QuantumCircuit.box) possono avere anche durate esplicite. Queste durate possono includere le classiche espressioni classiche di stretch variabili. L'SDK di Qiskit (a partire dal luglio 2025 tramite qiskit-qasm3-import v0.6.0 ) non supporta l'analisi delle dichiarazioni del tipo duration o del tipo stretch da file di tipo OpenQASM 3 file. L'hardware ha un supporto limitato per durate che includono stretch.
  1. I circuiti devono essere transpilati nell'ISA di backend per essere eseguiti sull'hardware di IBM. Questo preclude definizioni personalizzate di gate e i costrutti di livello superiore come i modificatori di gate (come inv @) non sono validi per l'esecuzione sull'hardware essere validi per l'esecuzione sull'hardware, ma il processo transpile li risolve in circuiti ISA validi in circuiti ISA validi. L'SDK di Qiskit (a partire dal luglio 2025, tramite qiskit-qasm3-import v0.6.0 ) valuterà avidamente i modificatori di gate durante il parsing, quindi questi non saranno non saranno evidenti nel risultato di QuantumCircuit, potenzialmente con un costo di runtime.
  1. Qiskit SDK è in grado di rappresentare un flusso di controllo strutturato e di esportarlo in OpenQASM 3. Le dichiarazioni continue e break possono essere tecnicamente rappresentate da Qiskit, ma non sono ben supportate nemmeno da Qiskit SDK all'interno dell'SDK di Qiskit. for i cicli in Qiskit v2.1.0 non sono ben supportati. Il flusso di controllo annidato il flusso di controllo annidato (come un'istruzione if all'interno di un'altra if o un'istruzione else if ) non è idoneo per l'esecuzione su hardware sull'hardware.
  1. Qiskit SDK supporta la dichiarazione di qualsiasi tipo classico supportato come variabile input sul circuito. Tali variabili non sono attualmente idonee per l'esecuzione su hardware e non possono essere caricate dall'importatore di l'importatore di Qiskit OpenQASM 3. Gli oggetti non vincolati di Parameter presenti in QuantumCircuit vengono esportati come variabili di input float[64] . Alcune opzioni di configurazione del runtime possono consentire l'esecuzione di tali circuiti su alcuni backend.

Passi successivi

Suggerimenti
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.