Panoramica dei simulatori quantistici in QDK

Microsoft Quantum Development Kit (QDK) include simulatori quantistici che eseguono programmi quantistici nel computer locale. Usa questi simulatori locali per testare e sviluppare i programmi prima di inviarli ai Azure Quantum target.

QDK fornisce quattro simulatori primari per eseguire programmi quantistici:

  • Simulatore di tipo sparse
  • Simulatore dello stabilizzatore
  • Il GPU simulatore
  • Il CPU simulatore

Simulatore di tipo sparse

Il simulatore sparso rappresenta gli stati del qubit come vettori sparsi e usa l'algebra delle matrici sparse per simulare rapidamente i programmi che generano poche ampiezze diverse da zero. Si tratta del simulatore predefinito per i programmi Q# e OpenQASM nell'estensione QDK e per le API qsharp.run e openqasm.runPython. Quando si vuole ottenere simulazioni rapide di programmi Q#, OpenQASM o Qiskit, o visualizzare lo stato quantico del programma durante la simulazione, utilizzare il simulatore sparse.

Il simulatore di tipo sparse è disponibile sia nell'estensione QDK per Visual Studio Code (VS Code) che nel QDKPython pacchetto. Questo simulatore è l'unico simulatore disponibile nell'estensione QDK, quindi l'estensione lo usa automaticamente quando si eseguono programmi Q# e OpenQASM in VS Code. In VS Code, usare la funzione Q#DumpMachine o il debugger per visualizzare i vettori di stato dei qubit in punti diversi della simulazione.

Sia l'estensione VS Code che il pacchetto Python supportano modelli di rumore per simulazioni sparse di programmi Q# e OpenQASM. Solo il pacchetto Python supporta la simulazione sparse di programmi Qiskit, ma non supporta modelli di rumore per simulazioni Qiskit.

Per altre informazioni su come eseguire simulazioni nell'estensione QDK , vedere Eseguire simulazioni quantistiche nell'estensione QDK per Visual Studio Code.

Simulatore dello stabilizzatore

Il simulatore di stabilizzatori simula in modo rapido ed efficiente programmi dominati da Clifford con migliaia di qubit. Clifford le porte sono componenti comuni dei circuiti di correzione degli errori quantistici. Clifford le operazioni stabilizzatrici non aumentano il numero di rami stabilizzatori, quindi il simulatore può applicarle in modo efficiente anche in circuiti di grandi dimensioni. Le operazioni comuni Clifford includono:

  • $X$, $Y$ e $Z$
  • $S$ e $S^\dagger$
  • $H$, o Hadamard
  • $CX$, $CY$ e $CZ$
  • $SWAP$

Il simulatore di stabilizzazione usa anche la diramazione dello stabilizzatore per simulare circuiti con un numero limitato di operazioni non-Clifford. Il simulatore supporta le seguenti operazioni non-Clifford:

  • $T$ e $T^\dagger$
  • Rotazioni arbitrarie $R_X$, $R_Y$, $R_Z$, $R_{XX}$, $R_{YY}$e $R_{ZZ}$

Ogni operazione non-Clifford può aumentare il numero di rami stabilizzatori. L'aggiunta di operazioni non-Clifford può aumentare esponenzialmente l'utilizzo della memoria e il tempo di campionamento. Usare il simulatore stabilizer per circuiti ampi con operazioni principalmente Clifford e un numero modesto di operazioni non-Clifford. Usare un simulatore a stato sparso o completo per i circuiti che dispongono di molte operazioni non-Clifford.

Il simulatore di stabilizzatore supporta l'esecuzione adattiva, Pauli il rumore e la perdita di qubit. È disponibile nel QDKPython pacchetto per Q#i programmi , OpenQASM, Qiskite QIR , ma non è disponibile nell' QDK estensione per VS Code.

Nelle Python API con un selettore del simulatore usare "stabilizer" o "clifford" per selezionare il simulatore di stabilizzatore.

Il GPU simulatore

Il GPU simulatore è un simulatore di stato completo che utilizza il computer GPU per eseguire in parallelo molte istanze del programma quantistico. Il simulatore supporta tutti i tipi di gate, ma richiede risorse di calcolo significative. Il simulatore può modellare fino a 27 qubit. La potenza della tua macchina GPU determina le prestazioni, ma queste sono ottimali per i programmi con circa 20 qubit e molte esecuzioni.

Il GPU simulatore accetta QIR o Qiskit come input tramite determinate QDKPython API del pacchetto. L'estensione VS Code non supporta il GPU simulatore. È anche disponibile un supporto avanzato per i modelli di disturbo su qualsiasi tipo di gate quantistico o operazione.

Il CPU simulatore

Come il GPU simulatore, il CPU simulatore è un simulatore di stato completo che esegue programmi con qualsiasi tipo di gate quantistico. Ma è più lento perché non può eseguire più scatti in parallelo. Questo simulatore aumenta fino a circa 25 qubit, ma rallenta in modo esponenziale con più qubit a causa di problemi di memoria. Usare il CPU simulatore quando il computer non ha un GPU, o quando il programma ha pochi qubit e non richiede molti shots.

Il simulatore CPU accetta input Qiskit o QIR. È possibile usarlo tramite determinate QDKPython API del pacchetto, ma non tramite l'estensione VS Code . È anche disponibile un supporto avanzato per i modelli di disturbo su qualsiasi tipo di gate o operazione quantistica.

Quale simulatore è necessario usare?

Prendere in considerazione questi fattori quando si sceglie un simulatore:

  • Ambiente di sviluppo (VS Code o Python)
  • Framework di programmazione quantistica che usi
  • La complessità del programma e il numero di scatti
  • Funzionalità hardware del computer locale
  • Le destinazioni Azure Quantum o altri hardware quantistici in cui si desidera eseguire i programmi
  • I modelli di rumore che vuoi costruire

La tabella seguente riepiloga la disponibilità di ogni QDK simulatore e i framework di programmazione quantistici supportati:

Simulatore Availability Framework supportati
Scarso VS Code estensione e Python pacchetto Q#, OpenQASM, Qiskit
Stabilizer Python pacchetto Q#, OpenQASM, QiskitQIR
GPU Python pacchetto Qiskit, QIR
CPU Python pacchetto Qiskit, QIR

Simulazioni nell'estensione QDK per VS Code

L'estensione QDK per VS Code supporta solo il simulatore sparse. Per usare il simulatore di tipo sparse, eseguire il file Q# o OpenQASM in VS Code. È possibile aggiungere Pauli modelli di disturbo a simulazioni sparse di programmi Q# in VS Code, ma non ai programmi OpenQASM.

Simulazioni nel QDKPython pacchetto

Il QDKPython pacchetto supporta più framework di programmazione quantistica e tutti e quattro QDK i simulatori. La compatibilità varia in base al framework e all'API.

La tabella seguente elenca i simulatori e i framework di programmazione supportati da ogni Python API:

API Python Scarso Stabilizer GPU CPU Framework di programmazione
qsharp.run Supported Supported Non supportato Non supportato Q#
openqasm.run Supported Supported Non supportato Non supportato OpenQASM
qiskit.QSharpBackend Supported Non supportato Non supportato Non supportato Qiskit
simulation.NeutralAtomDevice Non supportato Supported Supported Supported QIR
qiskit.NeutralAtomBackend Non supportato Supported Supported Supported Qiskit
simulation.run_qir Non supportato Supported Supported Supported QIR