Ruismodellen bouwen voor neutrale atoomapparaatsimulaties in de QDK

De Microsoft Quantum Development-kit (QDK) bevat een reeks API's voor simulatie van neutral-atom-apparaten die u kunt gebruiken om te modelleren hoe uw programma draait op een neutral-atom-quantumcomputer. Deze API's modelleren de soorten ruis die zich specifiek op neutrale atomhardware voordoen. Met QDKPython het pakket kunt u ruismodellen voor simulaties met de NoiseConfig klasse maken.

Voor meer informatie over ruismodellen in QDK-simulaties, zie QDK.

Zie De QDKQDK simulatoren.

De simulatie-API's voor apparaten met neutrale atomen

De QDK bevat twee API's voor de simulatie van neutrale-atoomapparaten, NeutralAtomDevice en NeutralAtomBackend. Deze API's modelleren de ruis die zich specifiek voordoet op kwantumcomputers met een neutraal atoom. Zie Kwantumprogramma's simuleren op neutrale atom-apparaathardware voor meer informatie.

Typen ruis in neutrale atoomapparaatsimulatoren

In neutrale atoomapparaten verplaatsen lasers de qubits fysiek tussen verschillende zones in het apparaat. Ruis kan optreden in neutrale atoomapparaten in de volgende situaties:

  • Qubitverplaatsingen tussen zones
  • Kwantumpoortbewerkingen op qubits in de interactiezone
  • Qubitmetingen in de meetzone

Neutrale atoomapparaten hebben een beperkte set kwantumpoorten. Simulaties van neutrale-atoomapparaten in de QDK ondersteunen ruis uit de volgende bronnen.

Ruisbron Ruismodelparameter Bronbeschrijving
$S_X$ kwantumpoort sx Poort met één qubit, halve bit flip
$R_Z$ kwantumpoort rz Single-qubit gate, algemene faserotatie
$CZ$ kwantumpoort cz Twee-qubitpoort, gecontroleerde $Z$ faseflips
Meting en reset van qubits mresetz Meting met één qubit en opnieuw instellen op de status 0
Qubitverplaatsing mov Qubitverplaatsing tussen apparaatzones

Voor deze ruisbronnen kunt u alle ruistypen configureren die door de QDK simulatoren worden ondersteund.

Uw kwantumprogramma kan elk type poort bevatten dat door het QIR-doelprofiel wordt ondersteund. De API's voor neutrale-atoomsimulatie compileren de ingevoerde QIR en decomponeren de poorten van uw programma naar de verzameling poorten die beschikbaar is op neutrale-atoomapparaten: $S_X$, $R_Z$ en $CZ$. Wanneer u NeutralAtomDevice en NeutralAtomBackend voor uw simulaties gebruikt, configureert u geen ruis op andere poorten omdat die ruis geen invloed heeft op de simulatie. Als uw programma bijvoorbeeld Hadamard-poorten bevat en u ruis configureert voor Hadamard-poorten, wordt die ruis niet weergegeven in de simulatie omdat de Hadamard-poorten zijn uitgevouwen in neutrale atom-apparaatpoorten.

Met de neutrale atomsimulatie-API's worden alle metingen in uw programma omgezet in instructies voor meten en opnieuw instellen. Als u meetruis wilt toevoegen, configureert u de ruis voor mresetz. Ruis op mz is niet meegenomen in de simulatie.

Een ruismodel bouwen voor een neutrale atoomapparaatsimulatie

Volg deze stappen om een ruismodel te bouwen voor een neutrale atoomapparaatsimulatie.

  1. Open VS Codehet menu Beeld en kies Opdrachtpalet.

  2. Voer Creëren: Nieuw Jupyter Notebook in. Er wordt een leeg Jupyter Notebook bestand geopend op een nieuw tabblad.

  3. Importeer de vereiste Python objecten in de eerste cel van het notebook.

    from qdk import init, TargetProfile
    from qdk.openqasm import compile
    from qdk.simulation import NeutralAtomDevice, NoiseConfig
    from qdk.widgets import Histogram
    
  4. Stel in een nieuwe cel het QIR-doelprofiel van het apparaat in en compileer een 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)
    
  5. Maak een NoiseConfig object en bouw uw ruismodel. Voer bijvoorbeeld de volgende code uit in een nieuwe cel.

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

    Deze code produceert het volgende ruismodel, waarbij de ruissnelheid de waarschijnlijkheid is dat de bron het bijbehorende type ruis veroorzaakt.

    Ruisbron Ruistype Ruissnelheid
    $S_X$-poort Bit flippen 1%
    $R_Z$-poort Fase-omkering 1%
    $CZ$ poort Bit-flip en fase-flip op doelqubit 2%
    Qubitverplaatsing Qubitverlies 0,5%
  6. Voer de simulator uit met het ruismodel en bekijk een histogram met meetresultaten. Voer bijvoorbeeld de volgende code uit in een nieuwe cel om 1000 opnamen van uw programma uit te voeren op de Clifford-simulator.

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