Introduzione a OpenQASM
OpenQASM (open quantum assembly language), un'interfaccia di programmazione indipendente dalla macchina e compatibile con le QPU di IBM®, è un linguaggio di programmazione imperativo per la descrizione di circuiti quantistici. OpenQASM utilizza il modello dei circuiti quantistici per esprimere i programmi quantistici come sequenze ordinate di operazioni parametrizzate (come porte, misure e reset) e la computazione classica in tempo reale. Oltre agli algoritmi quantistici, OpenQASM può descrivere i circuiti destinati alla caratterizzazione, alla convalida o al debug dei processori quantistici.
Con l'evolversi delle esigenze di sviluppo delle QPU, l'elenco delle funzionalità dell' OpenQASM's e si è ampliato di conseguenza; l'ultima versione, l' OpenQASM e 3, incorpora estensioni che includono il controllo di flusso feed-forward classico, i modificatori di gate e le implementazioni di impulsi.
OpenQASM è la scelta di diversi tipi di pubblico grazie alla sua versatilità. L'introduzione al documento OpenQASM 31 fornisce alcuni esempi:
"Sebbene OpenQASM non sia un linguaggio di alto livello, molti utenti vorrebbero scrivere a mano semplici circuiti quantistici utilizzando un linguaggio espressivo specifico del dominio. I ricercatori che studiano la compilazione dei circuiti hanno bisogno di informazioni di alto livello registrate nelle rappresentazioni intermedie per informare gli algoritmi di ottimizzazione e sintesi. Gli sperimentatori preferiscono la comodità di scrivere i circuiti a un livello relativamente alto, ma spesso devono modificare manualmente la temporizzazione o le descrizioni dei gate a livello di impulsi in vari punti del circuito. Gli ingegneri hardware che progettano i controllori classici e i generatori di forme d'onda preferiscono linguaggi che siano pratici da compilare, dati i vincoli dell'hardware, e che rendano esplicita la struttura dei circuiti di cui i controllori possono usufruire"
OpenQASM è il formato di interscambio comune tra gli strumenti software quantistici indipendenti. Per gli sviluppatori che preferiscono uno strumento per la costruzione di circuiti, un altro per la trasposizione e così via, OpenQASM è la lingua franca che fa da ponte tra di essi.
L'SDK Qiskit fornisce modi per convertire tra OpenQASM e la classe QuantumCircuit (vedere OpenQASM 2 e Qiskit e OpenQASM 3 e Qiskit per le istruzioni).
Per ulteriori informazioni, consulta le specifiche live dell' OpenQASM.
OpenQASM esempio di codice: stato del gatto
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
Passi successivi
- Per sapere come generare il codice OpenQASM, consultate la guida IBM Quantum Composer.
- Rivedere la tabella delle caratteristiche di OpenQASM 3.
- Leggete il riferimento all' API di OpenQASM 3 Qiskit.
- Leggete il riferimento all' API di OpenQASM 2 Qiskit.
- Visitate il sito OpenQASM Live Specification.
Footnotes
-
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 ↩