Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft Quantum Development Kit (QDK) innehåller en uppsättning neutrala API:er för atomenhetssimulering som du kan använda för att modellera hur programmet körs på en neutral atoms kvantdator. Dessa API:er modellerar de typer av brus som förekommer specifikt på neutral atommaskinvara. Med QDKPython paketet kan du använda brusmodeller för simuleringar med NoiseConfig klassen.
Mer information om brusmodeller i simuleringar finns i QDKSkapa brusmodeller för kvantsimuleringar i QDK.
Anvisningar om hur du installerar och använder QDK simulatorerna finns i Installera och köra QDK kvantsimulatorerna.
API:er för simulering av neutrala atomenheter
Innehåller QDK två API:er NeutralAtomDevice för simulering av neutrala atomenheter och NeutralAtomBackend. Dessa API:er modellerar bruset som inträffar specifikt på neutrala atom-kvantdatorer. Mer information finns i Simulera kvantprogram på neutral atomenhetsmaskinvara.
Typer av brus i neutrala atomenhetssimulatorer
I neutrala atomenheter flyttar lasrar fysiskt kvantbitarna mellan olika zoner i enheten. Brus kan förekomma i neutrala atomenheter i följande situationer:
- Qubitförflyttningar mellan zoner
- Kvantgrindsoperationer på qubits i interaktionszonen
- Kvantbitsmätningar i mätzonen
Neutralatomsenheter har en begränsad uppsättning kvantportar. Simuleringar av enheter med neutrala atomer i QDK stöder brus från följande källor.
| Bruskälla | Brusmodellparameter | Källbeskrivning |
|---|---|---|
| $S_X$ kvantgrind | sx |
En qubit-grind, halvvägs bitflip |
| $R_Z$ kvantgrind | rz |
En en-qubitport, allmän fasrotation |
| $CZ$ kvantgrind | cz |
Två-qubit grind, kontrollerad-$Z$ fasväxling |
| Kvantbitsmätning och återställning | mresetz |
Mätning med en kvantbit och återställning till 0-tillstånd |
| Qubit-rörelse | mov |
Qubitförflyttning mellan enhetszoner |
För dessa bruskällor kan du konfigurera alla brustyper som QDK simulatorerna stöder.
Ditt kvantprogram kan innehålla valfri typ av grind som QIR-målprofilen stöder. API:erna för neutral atomsimulering kompilerar QIR-indata och delar upp programmets portar i den uppsättning portar som finns på neutrala atomenheter: $S_X$, $R_Z$och $CZ$. När du använder NeutralAtomDevice och NeutralAtomBackend för dina simuleringar ska du inte konfigurera brus på andra grindar eftersom bruset inte påverkar simuleringen. Om ditt program till exempel innehåller Hadamard-portar och du konfigurerar brus för Hadamard-grindar visas inte bruset i simuleringen eftersom Hadamard-grindarna delas upp i neutrala atomenhetsgrindar.
API:erna för neutral atomsimulering konverterar alla mått i programmet till instruktioner för mått och återställning. Om du vill inkludera måttbrus konfigurerar du bruset på mresetz. Brus på mz ingår inte i simuleringen.
Skapa en brusmodell för en neutral atomenhetssimulering
Följ dessa steg för att skapa en brusmodell för en neutral atomenhetssimulering.
I VS Codeöppnar du menyn Visa och väljer Kommandopalett.
Ange Skapa: Ny Jupyter Notebook. En tom Jupyter Notebook fil öppnas på en ny flik.
I den första cellen i notebook-filen importerar du de nödvändiga Python objekten.
from qdk import init, TargetProfile from qdk.openqasm import compile from qdk.simulation import NeutralAtomDevice, NoiseConfig from qdk.widgets import HistogramI en ny cell anger du QIR-målprofilen för enheten och kompilerar ett OpenQASM-program till 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)Skapa ett
NoiseConfigobjekt och skapa din brusmodell. Kör till exempel följande kod i en ny cell.noise = NoiseConfig() noise.sx.x = 0.01 noise.rz.z = 0.01 noise.cz.iy = 0.02 noise.mov.loss = 0.005Den här koden genererar följande brusmodell, där brusfrekvensen är sannolikheten att källan orsakar motsvarande typ av brus.
Bruskälla Typ av brus Brusfrekvens $S_X$ port bitvändning 1 % $R_Z$-port Fasvändning 1 % $CZ$ port Bitflip och fasväxling på målqubit 2 % Qubit-rörelse Qubit-förlust 0,5 % Kör simulatorn med brusmodellen och visa ett histogram med mätresultat. Kör till exempel följande kod i en ny cell för att köra 1 000 bilder av ditt program på Clifford-simulatorn.
device = NeutralAtomDevice() results = device.simulate(qir, shots=1000, noise=noise, type="clifford") Histogram(results, labels="kets")