Introduction à OpenQASM
OpenQASM (open quantum assembly language), une interface de programmation indépendante de la machine compatible avec les QPU IBM®, est un langage de programmation impératif permettant de décrire des circuits quantiques. OpenQASM utilise le modèle de circuit quantique pour exprimer des programmes quantiques comme des séquences ordonnées d'opérations paramétrées (telles que des portes, des mesures et des réinitialisations) et du calcul classique en temps réel. En plus des algorithmes quantiques, OpenQASM peut décrire des circuits destinés à caractériser, valider ou déboguer des processeurs quantiques.
À mesure que les besoins du développement de QPU ont évolué, la liste des fonctionnalités d'OpenQASM s'est étoffée en conséquence ; la dernière version, OpenQASM 3, intègre des extensions telles que le contrôle de flux classique par rétroaction, les modificateurs de portes et les implémentations par impulsions.
OpenQASM est le choix de nombreux publics en raison de sa polyvalence. L'introduction de l'article sur OpenQASM 31 en donne des exemples :
« Bien qu'OpenQASM ne soit pas un langage de haut niveau, de nombreux utilisateurs souhaitent écrire des circuits quantiques simples à la main en utilisant un langage expressif spécifique au domaine. Les chercheurs qui étudient la compilation de circuits ont besoin d'informations de haut niveau enregistrées dans les représentations intermédiaires pour orienter les algorithmes d'optimisation et de synthèse. Les expérimentateurs préfèrent la commodité d'écrire des circuits à un niveau relativement élevé, mais ont souvent besoin de modifier manuellement le timing ou les descriptions de portes au niveau des impulsions à différents endroits du circuit. Les ingénieurs matériels qui conçoivent les contrôleurs classiques et les générateurs de formes d'onde préfèrent des langages pratiques à compiler compte tenu des contraintes matérielles et qui rendent explicite la structure du circuit dont les contrôleurs peuvent tirer parti. »
OpenQASM est le format d'échange commun entre les outils logiciels quantiques indépendants. Pour les développeurs qui préfèrent un outil pour la construction de circuits, un autre pour la transpilation, et ainsi de suite, OpenQASM est la lingua franca qui sert de passerelle entre eux.
Le SDK Qiskit fournit des moyens de convertir entre OpenQASM et la classe QuantumCircuit (voir OpenQASM 2 et Qiskit et OpenQASM 3 et Qiskit pour les instructions).
Pour plus d'informations, consulte la spécification en ligne d'OpenQASM.
Exemple de code OpenQASM : état chat
OPENQASM 3;
include "stdgates.inc";
const n = 3; // number of qubits
qubit[n] q; // a register 'q' of n qubits
bit[n] c; // a register 'c' of n classical bits
h q[0]; // Hadamard
for k in [0:n-1] {
cnot q[k], q[k+1]; // Controlled-NOT from control qubit q[k] to target qubit q[k+1]
}
c = measure q; // measure quantum register
Prochaines étapes
- Apprends à générer du code OpenQASM dans le guide IBM Quantum Composer.
- Consulte le tableau des fonctionnalités d'OpenQASM 3.
- Lis la référence de l'API Qiskit OpenQASM 3.
- Lis la référence de l'API Qiskit OpenQASM 2.
- Visite la spécification en ligne d'OpenQASM.