Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il Microsoft Quantum Development Kit (QDK) include una serie di API di simulazione di dispositivi a atomi neutri che è possibile usare per modellare il modo in cui il programma viene eseguito su un computer quantistico a atomi neutri. Queste API modellano i tipi di rumore che si verificano in modo specifico sull'hardware atom neutro. Il QDKPython pacchetto consente di creare modelli di disturbo per le simulazioni con la classe NoiseConfig.
Per altre informazioni sui modelli di disturbo nelle QDK simulazioni, vedere Come creare modelli di disturbo per le simulazioni quantistiche in QDK.
Per istruzioni su come installare e usare i QDK simulatori, vedere Eseguire simulazioni quantistiche con il QDKPython pacchetto.
API per la simulazione di dispositivi a atomi neutri
QDK include due API per la simulazione di dispositivi a atomi neutri, NeutralAtomDevice e NeutralAtomBackend. Queste API modellano il rumore che si verifica in modo specifico nei computer quantistici atom neutrali. Per altre informazioni, vedi Simulare programmi quantistici su hardware di dispositivi a atomi neutri.
Tipi di rumore nei simulatori di dispositivi atom neutri
Nei dispositivi atom neutri, i laser spostano fisicamente i qubit tra zone diverse nel dispositivo. Il rumore può verificarsi in queste situazioni:
- Spostamenti di qubit tra zone
- Operazioni sui gate quantistici sui qubit nella zona di interazione
- Misurazioni qubit nella zona di misurazione
I dispositivi atom neutrali hanno un set limitato di cancelli quantistici. Le simulazioni di dispositivi a atomi neutri nel QDK supportano il rumore proveniente da queste fonti.
| Sorgente di rumore | Parametro del modello di rumore | Descrizione origine |
|---|---|---|
| gate quantistico $S_X$ | sx |
Gate a qubit singolo, capovolgimento a metà bit |
| gate quantistico $R_Z$ | rz |
Gate a qubit singolo, rotazione generale delle fasi |
| gate quantistico $CZ$ | cz |
Gate a due qubit, inversione di fase $Z$ controllata |
| Misurazione e reimpostazione del qubit | mresetz |
Misurazione a qubit singolo e reimpostazione dello stato 0 |
| Spostamento qubit | mov |
Spostamento di qubit tra le zone del dispositivo |
Per queste fonti di rumore, è possibile configurare tutti i tipi di rumore supportati dai QDK simulatori.
Il programma quantistico può contenere qualsiasi tipo di gate che il profilo di destinazione QIR supporta. Le API di simulazione di atomi neutri compilano l'input QIR e scompongono i cancelli del programma nel set di cancelli presenti su dispositivi a atomi neutri: $S_X$, $R_Z$ e $CZ$. Quando si usano NeutralAtomDevice e NeutralAtomBackend per le simulazioni, non configurare il rumore su altri cancelli perché tale rumore non influisce sulla simulazione. Ad esempio, se il programma contiene porte Hadamard e si configura un modello di rumore per le porte Hadamard, tale rumore non compare nella simulazione perché le porte Hadamard vengono scomposte in porte del dispositivo ad atomi neutri.
Le API di simulazione di atomi neutri convertono tutte le misurazioni nel tuo programma in istruzioni di misurazione e ripristino. Per includere il rumore di misurazione, configurare il rumore in mresetz. Il rumore su mz non è incluso nella simulazione.
Quando si usa il back-end di stabilizzazione, le rotazioni $R_Z$ compilate devono avere angoli compatibili con Clifford. Usare il CPU back-end o GPU per simulazioni di atomi neutri che contengono altri angoli $R_Z$.
Costruire un modello di rumore per la simulazione di un dispositivo ad atomi neutri
Per creare un modello di rumore per una simulazione di dispositivi atom neutrali, seguire questa procedura.
In Visual Studio Codeaprire il menu Visualizza e scegliere Riquadro comandi.
Immettere Crea: Nuovo Jupyter Notebook. Un file vuoto Jupyter Notebook viene aperto in una nuova scheda.
Nella prima cella del notebook importare gli oggetti necessari Python .
from qdk import init, TargetProfile from qdk.openqasm import compile from qdk.simulation import NeutralAtomDevice, NoiseConfig from qdk.widgets import HistogramIn una nuova cella impostare il profilo di destinazione del dispositivo QIR e compilare un OpenQASM programma in QIR.
init(target_profile=TargetProfile.Base) qasm_src = """ include "stdgates.inc"; qubit[2] qs; bit[2] r; h qs[0]; cx qs[0], qs[1]; r = measure qs; """ qir = compile(qasm_src)Creare un
NoiseConfigoggetto e creare il modello di rumore. Ad esempio, eseguire questo codice in una nuova cella.noise = NoiseConfig() noise.sx.x = 0.01 noise.rz.z = 0.01 noise.cz.iy = 0.02 noise.mov.l = 0.005Questo codice produce questo modello di rumore, in cui il tasso di rumore è la probabilità che la sorgente causi il tipo di rumore corrispondente.
Sorgente di rumore Tipo di rumore Tasso di rumore porta $S_X$ Inversione di bit 1% gate $R_Z$ Capovolgimento della fase 1% $CZ$ porta Inversione di bit e inversione di fase sul qubit di destinazione 2% Spostamento qubit Perdita di qubit 0.5% Eseguire il simulatore con il modello di rumore e visualizzare un istogramma dei risultati della misurazione. Ad esempio, eseguire questo codice in una nuova cella per eseguire 1.000 shot nel simulatore stabilizer.
device = NeutralAtomDevice() results = device.simulate( qir, shots=1000, noise=noise, type="stabilizer", ) Histogram(results, labels="kets")
Note
Sia type="clifford" che type="stabilizer" selezionano il simulatore di stabilizzatore.