Introduzione a OpenQASM
OpenQASM (open quantum assembly language), un'interfaccia di programmazione indipendente dalla macchina compatibile con le QPU IBM®, è un linguaggio di programmazione imperativo per descrivere i circuiti quantistici. OpenQASM utilizza il modello a circuito quantistico per esprimere i programmi quantistici come sequenze ordinate di operazioni parametrizzate (come gate, misurazioni e reset) e calcolo classico in tempo reale. Oltre agli algoritmi quantistici, OpenQASM può descrivere circuiti destinati a caratterizzare, validare o fare il debug dei processori quantistici.
Man mano che le esigenze dello sviluppo delle QPU si sono evolute, l'elenco delle funzionalità di OpenQASM si è espanso di conseguenza; l'ultima versione, OpenQASM 3, incorpora estensioni come il controllo di flusso classico feed-forward, i modificatori di gate e le implementazioni a livello di impulso.
OpenQASM è la scelta di un'ampia varietà di utenti grazie alla sua versatilità . L'introduzione al paper di OpenQASM 31 riporta alcuni esempi:
"Sebbene OpenQASM non sia un linguaggio di alto livello, molti utenti vorrebbero scrivere circuiti quantistici semplici a mano usando un linguaggio espressivo specifico per il dominio. I ricercatori che studiano la compilazione di circuiti hanno bisogno di informazioni di alto livello registrate nelle rappresentazioni intermedie per guidare gli algoritmi di ottimizzazione e sintesi. Gli sperimentatori preferiscono la comodità di scrivere circuiti a un livello relativamente alto, ma spesso hanno bisogno di modificare manualmente la temporizzazione o le descrizioni dei gate a livello di impulso in vari punti del circuito. Gli ingegneri hardware che progettano i controller classici e i generatori di forme d'onda preferiscono linguaggi pratici da compilare date le limitazioni hardware, e che rendano esplicita la struttura del circuito di cui i controller possono avvalersi."
OpenQASM è il formato di interscambio comune tra strumenti software quantistici indipendenti. Per gli sviluppatori che preferiscono uno strumento per la costruzione di circuiti, un altro per la transpilazione e così via, OpenQASM è la lingua franca che funge da ponte tra di essi.
Il Qiskit SDK fornisce modi per convertire tra OpenQASM e la classe QuantumCircuit (vedi OpenQASM 2 e Qiskit e OpenQASM 3 e Qiskit per le istruzioni).
Per ulteriori informazioni, consulta la specifica live di OpenQASM.
Esempio di codice OpenQASM: cat state​
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​
- Scopri come generare codice OpenQASM nella guida IBM Quantum Composer.
- Consulta la tabella delle funzionalità di OpenQASM 3.
- Leggi il riferimento all'API Qiskit di OpenQASM 3.
- Leggi il riferimento all'API Qiskit di OpenQASM 2.
- Visita la specifica live di OpenQASM.