Rappresentazione intermedia quantistica

Quantum Intermediate Representation (QIR) è una rappresentazione intermedia che funge da interfaccia comune tra linguaggi di programmazione quantistici/framework e piattaforme di calcolo quantistico mirate. QIR specifica un set di regole per rappresentare i programmi quantistici usando un linguaggio e un formato indipendente dall'hardware all'interno del runtime di integrazione LLVM. QiR è un progetto sviluppato dall'QIR Alliance di cui Microsoft è uno dei suoi membri.

Che cos'è una rappresentazione intermedia?

Un modello comune nei compilatori classici consiste nel compilare il linguaggio di origine in una rappresentazione intermedia. Una rappresentazione intermedia è, come indicato dal nome, un passaggio intermedio nella conversione delle istruzioni dal codice sorgente al linguaggio del computer.

Una rappresentazione intermedia funge da rappresentazione astratta di un programma. Tutti i programmi, indipendentemente dal linguaggio in cui sono scritti, vengono tradotti in questa rappresentazione intermedia da un cosiddetto compilatore front-end, mentre un componente back-end è responsabile della conversione di tale rappresentazione intermedia in una rappresentazione automatica. La rappresentazione intermedia consente quindi di separare i linguaggi di origine dalle piattaforme hardware e di creare un compilatore in modo modulare, in cui ogni nuovo linguaggio richiede solo il supporto di un nuovo front-end in tutte le piattaforme per cui è disponibile un back-end.

La rappresentazione intermedia è in genere progettata per consentire la rappresentazione di molti linguaggi di origine diversi. Inoltre, a questo livello intermedio è anche possibile eseguire alcune ottimizzazioni e riorganizzazioni del circuito che rendono l'implementazione finale più efficiente. Una volta nota la piattaforma di esecuzione finale target , la rappresentazione intermedia può essere compilata in codice eseguibile effettivo.

Questo approccio consente a molti linguaggi di origine di condividere un set comune di ottimizzatori e generatori eseguibili. Semplifica inoltre la compilazione di un singolo linguaggio di origine per molti tipi diversi targets. La rappresentazione intermedia fornisce una piattaforma comune che può essere condivisa tra molte origini e targets consente un notevole riutilizzo nei macchinari del compilatore.

Cos'è Quantum Intermediate Representation?

QIR è una rappresentazione intermedia per i programmi quantistici sviluppati dall'Alleanza QIR, a cui Appartiene Microsoft. Fornisce un'interfaccia comune che supporta molti linguaggi e target piattaforme per il calcolo quantistico. Si può pensare a QIR come un linguaggio universale di livello intermedio che consente la comunicazione tra linguaggi di alto livello e computer. Durante Q# la compilazione in QIR, QIR non è specifico di Q#: qualsiasi framework di programmazione quantistica può sfruttare QIR per rappresentare un programma quantistico. È indipendente dall'hardware, il che significa che non specifica un set di istruzioni o gate quantistici, lasciandolo all'ambiente target di calcolo.

QIR si basa sul popolare compilatore classico LLVM open source. LLVM è una raccolta di tecnologie modulari e riutilizzabili del compilatore e toolchain adattate da un ampio set di linguaggi. QIR specifica un set di regole per la rappresentazione dei costrutti quantistici in LLVM, ma non richiede estensioni o modifiche a LLVM.

Il fatto che LLVM sia la toolchain sottostante significa che QIR è naturalmente in grado di elaborare logica classica e quantistica. Questa funzionalità è essenziale per gli algoritmi quantistici classici ibridi, che sono diventati sempre più importanti per le applicazioni di calcolo quantistico. Inoltre, consente di sfruttare gli strumenti di compilazione e ottimizzazione del settore informatico classico e, pertanto, per ridurre i costi di scrittura delle traduzioni.

Molti settori leader del calcolo quantistico hanno già adottato QIR. Ad esempio, NVIDIA, Oak Ridge National Laboratory, Quantinuum, Quantum Circuits Inc. e Rigetti Computing stanno creando toolchain che sfruttano QIR.

Per altre informazioni, vedere la specifica QIR. Se si è interessati a strumenti e progetti del compilatore che usano QIR, vedere questi repository QIR.

Che cos'è l'Alleanza QIR?

L'Alleanza QIR è uno sforzo congiunto per sviluppare una rappresentazione quantistica avanzata con l'obiettivo di abilitare l'interoperabilità completa all'interno dell'ecosistema quantistico, ridurre lo sforzo di sviluppo da tutte le parti e fornire una rappresentazione adatta per processori quantistici eterogenei attuali e futuri.

Gli SDK quantistici e i linguaggi appaiono e si evolvono rapidamente, insieme ai nuovi processori quantistici con funzionalità univoche e distinte l'una dall'altra. Per garantire l'interoperabilità tra nuovi linguaggi e nuove funzionalità hardware, è fondamentale per l'ecosistema sviluppare e condividere una rappresentazione intermedia che funziona con hardware quantistico presente e futuro.

Con il loro lavoro collettivo e la loro partnership, l'Alleanza QIR mira a:

  • Ridurre il necessario sforzo di sviluppo per tutte le parti promuovendo l'interoperabilità tra framework e linguaggi diversi.
  • Abilitare lo sviluppo di librerie condivise sia per lo sviluppo di applicazioni quantistiche che per lo sviluppo del compilatore quantistico.
  • Basarsi sulla tecnologia del compilatore all'avanguardia e sfruttare strumenti, librerie e apprendimento esistenti dal calcolo ad alte prestazioni.
  • Consentire l'evoluzione incrementale e progressiva nel modo in cui i calcoli classici e quantistici possono interagire a livello di hardware.
  • Offrire la flessibilità necessaria per connettere facilmente le tecnologie emergenti in modo da consentire la sperimentazione con funzionalità hardware distinte e differenziate.

L'Alleanza QIR fa parte del lavoro della Fondazione per lo sviluppo congiunto di Linux su standard aperti. I membri fondatori includono Microsoft, così come Quantinuum (in precedenza Honeywell), Oak Ridge National Laboratory, Quantum Circuits Inc. e Rigetti Computing.

Che aspetto ha Quantum Intermediate Representation ?

Poiché QIR è basato su LLVM, QIR ha un aspetto simile a LLVM.

Si consideri ad esempio il codice seguente Q# per generare una coppia Bell:

operation CreateBellPair(q1 : Qubit, q2 : Qubit) : Unit {
    H(q1);
    CNOT(q1, q2);
}

Quando viene compilato in QIR, diventa:

define void @CreateBellPair__body(%Qubit* %q1, %Qubit* %q2) {
entry:
  call void @__quantum__qis__h(%Qubit* %q1)
  call void @__quantum__qis__cnot(%Qubit* %q1, %Qubit* %q2)
  ret void
}

In questo frammento di codice è possibile visualizzare alcune funzionalità di QIR:

  • Le operazioni in Q# (o qualsiasi altro linguaggio di programmazione quantistico) sono rappresentate dalle funzioni LLVM.
  • I qubit sono rappresentati come puntatori a un tipo di struttura opaca denominato %Qubit.

Sebbene l'qiR per l'operazione CreateBellPair sia molto semplice, QIR eredita tutte le funzionalità di LLVM per esprimere cicli, condizionali e altri flussi di controllo complessi. QIR eredita anche la capacità di LLVM di esprimere calcoli classici arbitrari.

Per altre informazioni, guardare la sessione per sviluppatori di Microsoft dall'evento Q2B 2021.

Perché è Quantum Intermediate Representation importante?

QIR è uno strumento essenziale quando si eseguono algoritmi quantistici su hardware reale. Ma le rappresentazioni intermedie possono svolgere un ruolo importante anche se si vogliono sviluppare algoritmi a un livello più teorico.

Ad esempio, un'applicazione abilitata da QIR consiste nell'usare il compilatore Clang, un front-end del linguaggio C per LLVM, per compilare QIR nel codice del computer eseguibile per un linguaggio classico target. Questo fornisce un percorso semplice per la creazione di un simulatore in C o C++ implementando le istruzioni quantistiche, che potrebbero semplificare la creazione di simulatori quantistici.

Inoltre, è possibile usare la rappresentazione intermedia per generare codice fornito successivamente come input in un simulatore quantistico, anziché in un dispositivo reale, che potrebbe usare un linguaggio diverso rispetto al codice sorgente. In questo modo, è possibile confrontare e confrontare facilmente diversi linguaggi o simulatori usando un framework comune.

In termini di ottimizzazione del codice, esistono passaggi di ottimizzazione che possono essere eseguiti a livello intermedio che possono rendere più efficiente l'implementazione complessiva dell'algoritmo. L'analisi di questa ottimizzazione del codice di input consente di comprendere meglio dove rendere gli algoritmi più efficienti e come migliorare i linguaggi di programmazione quantistica.

Un'altra applicazione consiste nell'usare l'infrastruttura "pass" LLVM standard per creare ottimizzatori di codice quantistico che operano su QIR. L'approccio indipendente dal linguaggio e dall'hardware di QIR consente di riutilizzare tali ottimizzatori per linguaggi di calcolo e piattaforme di calcolo diversi senza sforzo.