Sari la conținutul principal

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

Recomandări

Footnotes

  1. Andrew W. Cross et al. "OpenQASM 3: A broader and deeper quantum assembly language," ACM Transactions on Quantum Computing, Volume 3, Issue 3 (2022). https://doi.org/10.48550/arXiv.2104.14722