Skip to main content
IBM Quantum Platform

OpenQASM table à 3 fonctions

Vous trouverez ci-dessous une liste des caractéristiques de la langue OpenQASM 3 .

Pour plus de détails sur ces capacités, voir le site OpenQASM 3.X Live Specification.

Clé :

  • ❌ Non pris en charge
  • 🟡 Soutien partiel
  • ✅ Supporté

La signification de la marque complète "supporté" dépend de la colonne :

  • Qiskit SDK : La fonctionnalité peut être analysée par qiskit.qasm3.loads (à l'aide de qiskit-qasm3-import l'extension ), représentée dans un QuantumCircuit, et exportée vers OpenQASM 3 par qiskit.qasm3.dumps.

  • IBM Quantum Service de calcul : un circuit intégrant la fonctionnalité Qiskit correspondante peut être exécuté avec succès sur le matériel via le service de calcul d’ IBM Quantum.

La signification de l'expression "soutien partiel" dépend généralement des notes liées.

Note

La méthode la plus courante pour soumettre des circuits au service de calcul « IBM Quantum » consiste à créer le circuit via l'interface de l'espace « Python » accessible à l'adresse Qiskit SDK. Les circuits créés et soumis de cette manière n'ont pas besoin d'être importés depuis les fichiers « OpenQASM 3 » vers « Qiskit SDK ».

Si vous n'utilisez pas directement l' OpenQASM ie 3, vous pouvez utiliser en toute sécurité les fonctionnalités prises en charge pour la représentation dans Qiskit SDK, l'exportation vers OpenQASM 3 et la soumission au service de calcul IBM Quantum. Cela inclut les fonctionnalités qui ne peuvent pas être chargées par Qiskit SDK à partir de OpenQASM 3.

OpenQASM 3 Caractéristiques
Fonctionnalité du SDK Qiskit
SDK Qiskit
IBM Quantum Service informatique
Remarques
commentaires1
QASM vstring1
include🟡1, 7
noms unicode
qubitQubit et QuantumRegister🟡2
bitClbit et ClassicalRegister3
boolexpr.Var et les expressions classiques🟡4
int4
uintexpr.Var et les expressions classiques🟡4
floatexpr.Var et les expressions classiques🟡🟡4
angleImplicite, en tant que paramètres de la porte🟡4
complex4
const4
pi/π/tau/τ/euler/Constante pliée dans les paramètres de la porte
Aliasing : laisserRegistres quantique et classique🟡5
concaténation de registresRegistres quantique et classique🟡5
transtypageexpr.Cast expressions classiques🟡🟡4
duration
durationof
ns/µs/us/ms/s/dtDurées des sites delay et box6
stretchexpr.Stretch🟡🟡4, 6
delayDelay/QuantumCircuit.delay6
barrierBarrier/QuantumCircuit.barrier
boxBoxOp/QuantumCircuit.box6
Intégré 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
Opérations booléennes.🟡4
expressions arithmétiques🟡🟡4
comparaisons🟡4
ifQuantumCircuit.if_test8
elseQuantumCircuit.if_test8
else ifQuantumCircuit.if_test8
for bouclesQuantumCircuit.for_loop🟡8
while bouclesQuantumCircuit.while_loop8
continueQuantumCircuit.continue_loop🟡8
breakQuantumCircuit.break_loop🟡8
return
extern
def sous-programmes (classiques)
def sous-programmes (quantum)
inputQuantumCircuit.add_input🟡4, 9
output

Remarques

  1. Ces caractéristiques du programme OpenQASM 3 n'ont aucun impact sur l'exécution et Qiskit les supprime dans le cadre de l'analyse des fichiers dans le cadre de l'analyse des fichiers. Les fichiers qui les utilisent peuvent être soumis, mais ils n'auront aucun effet aucun effet. Pour les fichiers include , stdgates.inc est actuellement pris en charge en tant qu'entrée de Qiskit, et l'exécution en arrière-plan exige toujours que les circuits aient été compilés selon l'architecture de jeu d'instructions (ISA) de l'arrière-plan, où les fichiers include ne sont pas pertinents.
  1. Qiskit SDK prend en charge l'analyse et l'extraction des fichiers OpenQASM 3 avec n'importe quelle déclaration qubit . En ce qui concerne l'exécution exécution sur du matériel, seuls les circuits définis en termes de qubits matériels (par exemple, $0) sont valables. Qiskit SDK produit automatiquement OpenQASM 3 en termes d'identificateurs de qubits matériels pris en charge si le circuit a été transpilé pour un backend avec des informations sur la disposition si le circuit a été transpilé pour un backend avec des informations de mise en page.
  1. bit- et bit[n] dans le SDK Qiskit correspondent aux déclarations Clbit et ClassicalRegister et à des déclarations de type
  1. Depuis juillet 2025, Qiskit SDK peut représenter des variables locales d'un ensemble restreint de types représenter de nombreuses opérations d'exécution sur ces objets, et permet de les envoyer à OpenQASM 3. Cependant, Qiskit SDK (via qiskit-qasm3-import v0.6.0 ) ne prend pas en charge l'analyse OpenQASM 3 fichiers contenant des déclarations de variables, et a un support très limité pour l'analyse des expressions de variables variables. En général, la plupart des éléments que Qiskit peut représenter dans son système d'expression peuvent être exécutés sur des circuits dynamiques appropriés, même s'ils ne peuvent pas encore être analysés par le système d'analyse être exécuté sur des circuits dynamiques appropriés, même si l'expression ne peut pas encore être analysée par le SDK Qiskit Qiskit SDK. Consultez la documentation Qiskit du qiskit.circuit.classical module pour les informations les plus récentes.
  1. Qiskit SDK peut représenter l'aliasing de registre pour les registres quantiques et classiques, mais il est fortement déconseillé d'utiliser l'aliasing pour les registres classiques fortement déconseillé d'utiliser l'aliasing pour les registres classiques. La plupart des expressions sur les registres classiques ne fonctionnent pas avec des alias, et les registres classiques aliasés ne sont pas pris en charge pour l'exécution sur le matériel l'exécution sur le matériel. L'analyseur Qiskit OpenQASM 3 peut résoudre les déclarations d'alias let qui lient le résultat de la concanténation des registres le résultat de la concantation des registres.
  1. Qiskit SDK prend en charge les délais explicites via QuantumCircuit.delay, et les boîtes de circuit (QuantumCircuit.box) peuvent également avoir des durées explicites. Ces durées peuvent inclure des des expressions classiques de stretch variables. Qiskit SDK (à partir de juillet 2025 par le biais de qiskit-qasm3-import v0.6.0 ) ne prend pas en charge l'analyse des déclarations de type duration ou de type stretch à partir des fichiers OpenQASM 3 fichiers. Le matériel a une prise en charge limitée des durées, y compris stretch.
  1. Les circuits doivent être transposés dans le backend ISA pour fonctionner sur le matériel IBM. Cela exclut les définitions personnalisées de gate et les constructions de plus haut niveau telles que les modificateurs de porte (comme inv @) ne sont pas valables pour être exécutées sur le matériel d'être valables pour l'exécution sur le matériel, mais le processus transpile les résout en circuits ISA valables en circuits ISA valides. Le SDK Qiskit (à partir de juillet 2025, par le biais de qiskit-qasm3-import v0.6.0 ) évaluera avec empressement les modificateurs de porte pendant l'analyse, de sorte qu'ils ne seront pas évidents dans le résultat, ce qui peut entraîner un coût d'exécution dans le résultat QuantumCircuit, ce qui peut avoir un coût d'exécution.
  1. Qiskit SDK peut représenter un flux de contrôle structuré et l'exporter vers OpenQASM 3. Les déclarations continue et break peuvent techniquement être représentées par Qiskit, mais ne sont pas bien supportées même dans le SDK de Qiskit. for dans Qiskit v2.1.0 ne sont pas bien supportées. Le flux de contrôle imbriqué (tel qu'un if à l'intérieur d'un autre if ou une instruction else if ) n'est pas éligible à l'exécution sur le matériel sur le matériel.
  1. Qiskit SDK permet de déclarer n'importe quel type classique pris en charge en tant que variable input sur le circuit. De telles variables ne sont pas actuellement éligibles à l'exécution sur le matériel et ne peuvent pas être chargées par l'importateur Qiskit l'importateur Qiskit OpenQASM 3. Les objets non liés de Parameter présents dans QuantumCircuit sont exportés en tant que variables de input float[64] . Certaines options de configuration de l'exécution peuvent permettre l'exécution de tels circuits sur certains backends.

Etapes suivantes

Recommandations
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.