Skip to main content
IBM Quantum Platform

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

Suggerimenti

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

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.