Come creare modelli di rumore per le simulazioni di dispositivi a atomi neutri nel QDK

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 NoiseConfig classe .

Per altre informazioni sui modelli di disturbo nelle QDK simulazioni, vedere Come creare modelli di disturbo per le simulazioni quantistiche nel QDKPython pacchetto.

Per istruzioni su come installare e usare i QDK simulatori, vedere Come installare ed eseguire i QDK simulatori quantistici.

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 dispositivi atom neutri nelle situazioni seguenti:

  • 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 ad atomi neutri nel QDK supportano il rumore proveniente dalle seguenti 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 supportato dal profilo di destinazione QIR. Le API di simulazione degli atomi neutri compilano il QIR di input e decompongono i gate del programma nell'insieme di gate disponibili sui 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.

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.

  1. In VS Codeaprire il menu Visualizza e scegliere Riquadro comandi.

  2. Immettere Crea: Nuovo Jupyter Notebook. Un file vuoto Jupyter Notebook viene aperto in una nuova scheda.

  3. 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 Histogram
    
  4. In una nuova cella impostare il profilo di destinazione QIR del dispositivo e compilare un programma OpenQASM 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)
    
  5. Creare un NoiseConfig oggetto e creare il modello di rumore. Ad esempio, eseguire il codice seguente in una nuova cella.

    noise = NoiseConfig()
    
    noise.sx.x = 0.01
    noise.rz.z = 0.01
    noise.cz.iy = 0.02
    noise.mov.loss = 0.005
    

    Questo codice produce il modello di rumore seguente, in cui la frequenza del rumore è la probabilità che l'origine 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%
  6. Eseguire il simulatore con il modello di rumore e visualizzare un istogramma dei risultati della misurazione. Ad esempio, eseguire il codice seguente in una nuova cella per eseguire 1.000 scatti del programma nel simulatore Clifford.

    device = NeutralAtomDevice()
    
    results = device.simulate(qir, shots=1000, noise=noise, type="clifford")
    Histogram(results, labels="kets")