Panoramica dei simulatori quantistici in QDK

Il MicrosoftQuantum Development Kit (QDK) include un set di simulatori quantistici che consentono di eseguire programmi quantistici nel computer locale. Utilizzare i simulatori locali per testare i programmi prima di inviarli per l'esecuzione sui target Azure Quantum.

Il QDK ha quattro simulatori:

  • Simulatore di tipo sparse
  • Il Clifford simulatore
  • Il GPU simulatore
  • Il CPU simulatore

Simulatore di tipo sparse

Il simulatore di tipo sparse è il simulatore predefinito in QDK. Questo simulatore rappresenta gli stati qubit come vettori di tipo sparse per sfruttare l'algebra della matrice di tipo sparse per le simulazioni veloci, soprattutto per i programmi che non generano molti stati di sovrapposizione. 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 il compilatore chiama automaticamente il simulatore sparso quando si eseguono i programmi Q# e OpenQASM in VS Code. Con il simulatore di tipo sparse in VS Code, è possibile usare la Q#DumpMachine funzione o il debugger per visualizzare vettori di stato qubit in punti diversi nella simulazione.

Sia l'estensione VS Code che il Python pacchetto supportano modelli di disturbo per simulazioni sparse di Q# programmi e OpenQASM . Solo il Python pacchetto supporta la simulazione di tipo sparse per Qiskit i programmi, ma senza supporto del modello di disturbo.

Per altre informazioni sul simulatore di tipo sparse, vedere Simulatore di tipo sparse.

Il Clifford simulatore

Il Clifford simulatore è veloce ed efficiente per i programmi con fino a migliaia di qubit, ma può simulare solo programmi che contengono solo Clifford gate. Clifford gate sono componenti comuni nei circuiti di correzione degli errori. Il set di Clifford cancelli è costituito dai cancelli H, S e CX e tutti i cancelli che possono essere costruiti da questi tre cancelli. Le seguenti porte Clifford sono componenti comuni dei circuiti quantistici.

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

Il Clifford simulatore è disponibile nel QDKPython pacchetto per Q#i programmi , OpenQASM, Qiskite QIR , ma non è disponibile nell' QDK estensione per VS Code.

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. Questo simulatore può eseguire programmi che contengono qualsiasi tipo di gate, ma è costoso da eseguire. 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 ed è disponibile tramite determinate QDKPython API del pacchetto, ma non l'estensione di VS Code. È 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 può eseguire programmi che contengono qualsiasi tipo di gate quantistico. Tuttavia, il CPU simulatore è 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 si eseguono molte esecuzioni.

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

Quale simulatore è necessario usare?

Il simulatore migliore da usare dipende da diversi fattori, ad esempio:

  • Ambiente di sviluppo (VS Code o Python)
  • Framework di programmazione quantistica che stai sviluppando
  • 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 le QDK opzioni e i framework di programmazione quantistica che è possibile usare per ogni simulatore:

Simulatore Availability Framework supportati
Scarso Estensione e Python pacchetto di VS Code Q#, OpenQASM, Qiskit
Clifford Python pacchetto Q#, OpenQASM, QiskitQIR
GPU Python pacchetto Qiskit, QIR
CPU Python pacchetto Qiskit, QIR

Simulazioni nell'estensione QDK per VS Code

Il simulatore "sparse" è l'unico simulatore disponibile nell'estensione QDK per VS Code. Per utilizzare il simulatore sparse, esegui i file Q# o OpenQASM su VS Code. È possibile aggiungere modelli di disturbo limitati al simulatore rado per Q# i programmi in VS Code, ma non per OpenQASM i programmi.

Simulazioni nel QDKPython pacchetto

L'ambiente di sviluppo supporta più framework quantistici e tutti e quattro i simulatori < />c2, ma non tutti i simulatori sono compatibili con tutti i framework e le API.

Questa tabella illustra i simulatori che è possibile usare per ogni Python API che chiama un QDK simulatore e il framework di programmazione supportato da ogni API:

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