Introducere în OpenQASM
OpenQASM (limbaj de asamblare cuantică deschis), o interfață de programare independentă de mașină, compatibilă cu QPU-urile IBM®, este un limbaj de programare imperativ pentru descrierea Circuit-urilor cuantice. OpenQASM folosește modelul Circuit cuantic pentru a exprima programele cuantice ca secvențe ordonate de operații parametrizate (precum Gate-uri, măsurători și resetări) și calcul clasic în timp real. Pe lângă algoritmii cuantici, OpenQASM poate descrie Circuit-uri destinate caracterizării, validării sau depanării procesoarelor cuantice.
Pe măsură ce nevoile dezvoltării QPU-urilor au evoluat, lista de funcționalități a OpenQASM s-a extins în consecință; cea mai recentă versiune, OpenQASM 3, incorporează extensii precum controlul fluxului cu feed-forward clasic, modificatori de Gate și implementări la nivel de puls.
OpenQASM este alegerea potrivită pentru o varietate de audiențe datorită versatilității sale. Introducerea articolului despre OpenQASM 31 oferă exemple:
„Deși OpenQASM nu este un limbaj de nivel înalt, mulți utilizatori doresc să scrie Circuit-uri cuantice simple manual, folosind un limbaj expresiv specific domeniului. Cercetătorii care studiază compilarea Circuit-urilor au nevoie de informații de nivel înalt înregistrate în reprezentările intermediare pentru a ghida algoritmii de optimizare și sinteză. Experimentaliștii preferă comoditatea scrierii Circuit-urilor la un nivel relativ ridicat, dar au adesea nevoie să modifice manual temporizarea sau descrierile Gate-urilor la nivel de puls în diverse puncte ale Circuit-ului. Inginerii hardware care proiectează controlerele clasice și generatoarele de forme de undă preferă limbajele care sunt practice de compilat ținând cont de constrângerile hardware și care fac explicită structura Circuit-ului de care controlerele pot profita."
OpenQASM este formatul comun de schimb între instrumentele software cuantice independente. Pentru dezvoltatorii care preferă un instrument pentru construirea Circuit-urilor, altul pentru transpilare și așa mai departe, OpenQASM este lingua franca care acționează ca o punte între acestea.
Qiskit SDK oferă modalități de conversie între OpenQASM și clasa QuantumCircuit (vezi OpenQASM 2 și Qiskit și OpenQASM 3 și Qiskit pentru instrucțiuni).
Pentru mai multe informații, consultă specificația live OpenQASM.
Exemplu de cod OpenQASM: starea cat
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
Pași următori
- Află cum să generezi cod OpenQASM din ghidul IBM Quantum Composer.
- Consultă tabelul de funcționalități OpenQASM 3.
- Citește referința API OpenQASM 3 Qiskit.
- Citește referința API OpenQASM 2 Qiskit.
- Vizitează Specificația Live OpenQASM.