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 deqiskit-qasm3-importl'extension ), représentée dans unQuantumCircuit, et exportée vers OpenQASM 3 parqiskit.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.
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 |
|---|---|---|---|---|
| commentaires | ✅ | ✅ | 1 | |
| QASM vstring | ✅ | ✅ | 1 | |
include | 🟡 | ❌ | 1, 7 | |
| noms unicode | ✅ | ✅ | ||
qubit | Qubit et QuantumRegister | ✅ | 🟡 | 2 |
bit | Clbit et ClassicalRegister | ✅ | ✅ | 3 |
bool | expr.Var et les expressions classiques | 🟡 | ✅ | 4 |
int | ❌ | ✅ | 4 | |
uint | expr.Var et les expressions classiques | 🟡 | ✅ | 4 |
float | expr.Var et les expressions classiques | 🟡 | 🟡 | 4 |
angle | Implicite, en tant que paramètres de la porte | ❌ | 🟡 | 4 |
complex | ❌ | ❌ | 4 | |
const | ❌ | ❌ | 4 | |
pi/π/tau/τ/euler/ℇ | Constante pliée dans les paramètres de la porte | ✅ | ✅ | |
| Aliasing : laisser | Registres quantique et classique | 🟡 | ❌ | 5 |
| concaténation de registres | Registres quantique et classique | 🟡 | ❌ | 5 |
| transtypage | expr.Cast expressions classiques | 🟡 | 🟡 | 4 |
duration | ❌ | ❌ | ||
durationof | ❌ | ❌ | ||
ns/µs/us/ms/s/dt | Durées des sites delay et box | ✅ | ✅ | 6 |
stretch | expr.Stretch | 🟡 | 🟡 | 4, 6 |
delay | Delay/QuantumCircuit.delay | ✅ | ✅ | 6 |
barrier | Barrier/QuantumCircuit.barrier | ✅ | ✅ | |
box | BoxOp/QuantumCircuit.box | ✅ | ❌ | 6 |
Intégré 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 | |
| Opérations booléennes. | 🟡 | ✅ | 4 | |
| expressions arithmétiques | 🟡 | 🟡 | 4 | |
| comparaisons | 🟡 | ✅ | 4 | |
if | QuantumCircuit.if_test | ✅ | ✅ | 8 |
else | QuantumCircuit.if_test | ✅ | ✅ | 8 |
else if | QuantumCircuit.if_test | ✅ | ❌ | 8 |
for boucles | QuantumCircuit.for_loop | 🟡 | ❌ | 8 |
while boucles | QuantumCircuit.while_loop | ✅ | ❌ | 8 |
continue | QuantumCircuit.continue_loop | 🟡 | ❌ | 8 |
break | QuantumCircuit.break_loop | 🟡 | ❌ | 8 |
return | ❌ | ❌ | ||
extern | ❌ | ❌ | ||
def sous-programmes (classiques) | ❌ | ❌ | ||
def sous-programmes (quantum) | ❌ | ❌ | ||
input | QuantumCircuit.add_input | ✅ | 🟡 | 4, 9 |
output | ❌ | ❌ |
Remarques
- 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.incest 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 fichiersincludene sont pas pertinents.
- 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.
bit- etbit[n]dans le SDK Qiskit correspondent aux déclarationsClbitetClassicalRegisteret à des déclarations de type
- 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-importv0.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 duqiskit.circuit.classicalmodule pour les informations les plus récentes.
- 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
letqui lient le résultat de la concanténation des registres le résultat de la concantation des registres.
- 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 destretchvariables. Qiskit SDK (à partir de juillet 2025 par le biais deqiskit-qasm3-importv0.6.0 ) ne prend pas en charge l'analyse des déclarations de typedurationou de typestretchà partir des fichiers OpenQASM 3 fichiers. Le matériel a une prise en charge limitée des durées, y comprisstretch.
- 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
gateet les constructions de plus haut niveau telles que les modificateurs de porte (commeinv @) 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 processustranspileles résout en circuits ISA valables en circuits ISA valides. Le SDK Qiskit (à partir de juillet 2025, par le biais deqiskit-qasm3-importv0.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ésultatQuantumCircuit, ce qui peut avoir un coût d'exécution.
- Qiskit SDK peut représenter un flux de contrôle structuré et l'exporter vers OpenQASM 3. Les déclarations
continueetbreakpeuvent techniquement être représentées par Qiskit, mais ne sont pas bien supportées même dans le SDK de Qiskit.fordans Qiskit v2.1.0 ne sont pas bien supportées. Le flux de contrôle imbriqué (tel qu'unifà l'intérieur d'un autreifou une instructionelse if) n'est pas éligible à l'exécution sur le matériel sur le matériel.
- Qiskit SDK permet de déclarer n'importe quel type classique pris en charge en tant que variable
inputsur 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 deParameterprésents dansQuantumCircuitsont exportés en tant que variables deinput float[64]. Certaines options de configuration de l'exécution peuvent permettre l'exécution de tels circuits sur certains backends.
Etapes suivantes
- Apprenez à générer le code OpenQASM à l'aide de IBM Quantum Composer.
- Voir la référence de l 'API Qiskit sur OpenQASM 3.
- Voir la référence de l 'API Qiskit sur OpenQASM 2.
- Consultez la rubrique « Vérifier votre programme ».
- Visitez le site OpenQASM Live Specification.