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.
Tillägget MicrosoftQuantum Development Kit (QDK) för Visual Studio Code (VS Code) kör automatiskt Q#- och OpenQASM-program på dess lokala sparse-simulator.
Den här artikeln beskriver hur du kör program på den lokala simulatorn och hur du lägger till Pauli brus i Q#-simuleringar. Om du vill använda de andra QDK simulatorerna från Pythonkan du läsa Köra kvantsimuleringar med QDKPython paketet.
Så här fungerar den lokala simulatorn
Den sparsamma simulatorn lagrar endast icke-nollamplituderna i ett kvanttillstånd. När de flesta beräkningsbassamplituder är noll använder den här representationen mindre minne och kan simulera vissa program med fler qubitar än en fulltillståndssimulator, som lagrar varje amplitud.
Prestandafördelarna beror på om kvanttillståndet förblir glest i beräkningsbasen. Mer information finns i Jaques och Häner (arXiv:2105.01533).
Kör ett kvantprogram i VS Code
- Installera QDK tillägget för VS Code.
- Öppna en Q# (
.qs) eller OpenQASM (.qasm) fil. - Välj Kör från kodlinsen i början av filen eller ovanför åtgärden Q#
Main.
Simuleringsutdata visas i VS Code terminalen. För Q# program väljer du Felsök för att inspektera programmets kvanttillstånd när det körs.
Lägg till Pauli brus till Q# simuleringar
Sparse-simulatorn stöder Pauli noise för Q# program i QDK tillägget. Använd ConfigurePauliNoise för att ange sannolikheterna Pauli för felen $X$, $Y$och $Z$ i ett program. Tilläggsinställningarna QDK stöder också en global Pauli brusmodell.
Note
Du kan inte lägga till en brusmodell i en OpenQASM simulering i QDK tillägget. Om du vill skapa operationsspecifika brusmodeller för Q#- eller QDK-program använder du PythonNoiseConfig-paketet och OpenQASM API:et.
Lägg till Pauli brus i VS Code inställningarna
- I VS Code anger du globalt Pauli brus för Q# program i Q#> användarinställningen Simulering:Pauli Noise för tillägget QDK.
Brusinställningarna gäller för histogramresultat för alla portar, mått och kvantbitar i alla Q# program i VS Code.
Utan brus visar ett histogram för det här GHZ exempelprogrammet $\ket{00000}$ för ungefär hälften av mätningarna och $\ket{11111}$ för den andra hälften.
import Std.Diagnostics.*;
import Std.Measurement.*;
operation Main() : Result[] {
let num = 5;
return GHZSample(num);
}
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Med en brusfrekvens på 1% bit-flip börjar resultaten spridas. Vid 25 % är histogrammet oskiljaktigt från rent brus.
Lägga till Pauli brus i enskilda Q# program
Använd ConfigurePauliNoise för att ställa in eller ändra ett Q# programs brusmodell och styra när och var brus uppstår.
Note
VS Code Inställningarna lägger till brus i alla Q# program, men ConfigurePauliNoise åsidosätter de inställningarna för programmet som anropar det.
I föregående program lägger du till brus omedelbart efter kvantbitsallokering:
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
// 5% bit-flip noise applies to all subsequent operations.
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Om du bara vill tillämpa brus på mätningsåtgärden ställer du in brusmodellen omedelbart före mätningen och rensar den efteråt:
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
// Noise applies only to the measurement operation.
ConfigurePauliNoise(0.05, 0.0, 0.0);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Om du vill ändra eller rensa bruskonfigurationen vid olika tidpunkter i programmet anropar du ConfigurePauliNoise flera gånger. Använd till exempel 5% bit-flip-brus på Hadamard-grinden och rensa sedan bruskonfigurationen för resten av programmet.
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
// Noise applies to the H operation.
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
// Clear the noise settings.
ConfigurePauliNoise(0.0, 0.0, 0.0);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Andra Q# brusfunktioner
ConfigurePauliNoise stöder vilken Pauli brusmodell som helst. Använd dessa funktioner och åtgärder från Std.Diagnostics namnområdet för att konfigurera eller tillämpa brus:
| Funktion | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Ställer in Pauli störning för en simulering. Skicka antingen sannolikheterna Pauli för felen $X$, $Y$och $Z$ eller en Pauli brusmodell. Konfigurationen gäller för alla efterföljande portar, mätningar och kvantbitar i ett Q# program och åsidosätter inställningarna för VS Code tilläggsbrus. Efterföljande anrop åsidosätter tidigare konfigurationer. | ConfigurePauliNoise(0.1, 0.0, 0.5)eller ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Returnerar en brusmodell med endast Pauli $X$-fel med angiven sannolikhet. | 10% bit-flip störningConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Returnerar en brusmodell med endast Pauli $Z$-fel vid den angivna sannolikheten. | 10% fasvänd brus:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Returnerar en brusmodell med lika sannolikheter för Pauli $X$-, $Y$- och $Z$-fel. | 6% avpolariserande brus:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.02, 0.02, 0.02) |
NoNoise |
Returnerar en modell med noll felannolikheter. Skicka det vidare till ConfigurePauliNoise för att rensa den aktuella bruskonfigurationen. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Tillämpar konfigurerat brus på en enda kvantbit under simuleringen. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |