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.
Den glesa simulatorn använder en gles representation av kvanttillståndsvektorer. Ett glest kvanttillstånd är ett tillstånd där de flesta amplitudkoefficienterna är noll. Med glesa representationer kan den glesa simulatorn minimera det minnesavtryck som krävs för att representera kvanttillstånd, vilket möjliggör simuleringar över ett större antal kvantbitar. Den glesa simulatorn är effektiv för program med kvanttillstånd som är glesa i beräkningsbasen. Med den glesa simulatorn kan användarna utforska större program än en fulltillståndssimulator eftersom fulltillståndssimulatorer slösar bort minne och tid på ett exponentiellt stort antal noll amplituder.
Mer information om sparse-simulatorn finns i Jaques och Häner (arXiv:2105.01533).
Kalla på den glesa simulatorn
Den glesa simulatorn är den lokala standardsimulatorn i tillägget MicrosoftQuantum Development Kit (QDK) för Visual Studio Code (VS Code). Hur du använder den glesa simulatorn beror på din utvecklingsmiljö.
| Utvecklingsmiljö | Så här anropar du sparse-simulatorn |
|---|---|
| I ett Q# eller OpenQASM program i VS Code | Kör Q#-filen eller OpenQASM-filen |
I ett Python program med qdk paketet |
qsharp.runeller openqasm.runeller qiskit.QSharpBackend |
I en %%qsharp notebook-cellen |
Anropa inmatningsoperationen för programmet, till exempel:Main() |
Lägg till Pauli brus i den glesa simulatorn i VS Code
Den glesa simulatorn stöder tillägg av Pauli brus till simuleringar av dina Q# program med VS Code tillägget. Med den här funktionen kan du simulera effekterna av brus på kvantåtgärder och mätningar. Om du vill ange en brusmodell i programmet Q# använder du ConfigurePauliNoise funktionen. Funktionen anger sannolikheter för Pauli operatorerna X, Yoch Z, brus som ska uppstå. Du kan också konfigurera globala brusmodeller i tilläggsinställningarna.
Lägg till Pauli brus med hjälp av VS Code inställningarna
Om du vill ange globalt Pauli brus för Q# program i VS Codekonfigurerar du Q#> inställningen Simulering:Pauli Brusanvändare för QDK tillägget.
Brusinställningarna gäller för histogramresultat för alla portar, mått och kvantbitar i alla Q# program i VS Code.
Ett histogram för följande GHz-exempelprogram utan konfigurerat brus visar till exempel ett resultat av $\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;
}
Om du lägger till en 1 % bit-flip-brusnivå börjar resultaten spridas. Med 25% bit-flip brus är histogrammet oskiljaktigt från rent brus.
Lägga till Pauli brus i enskilda Q# program
ConfigurePauliNoise Använd funktionen för att ange eller ändra brusmodellen för enskilda Q# program. Funktionen ConfigurePauliNoise ger dig kontroll över när och var brus uppstår i dina Q# program.
Anmärkning
Om du konfigurerar brus i VS Code inställningarna tillämpas bruset på alla Q# program. Funktionen åsidosätter dock ConfigurePauliNoiseVS Code brusinställningarna för programmet som anropar funktionen.
I det föregående programmet kan du till exempel lägga till brus direkt efter kvantbitsallokering.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
// 5% bit-flip noise applies to all operations
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Eller så kan du bara lägga till brus i mätningsåtgärden.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
// Noise applies to only the measurement operation
ConfigurePauliNoise(0.05, 0.0, 0.0);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Om du vill ändra eller rensa bruskonfigurationer vid olika tidpunkter i programmet anropar du ConfigurePauliNoise flera gånger. Du kan till exempel ange 5% bit-flip-brus till Hadamard-porten och sedan ange inget brus 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
Funktionen ConfigureNoiseFunction räcker för att modellera alla typer av Pauli brus i ditt program, men Q# har andra brusfunktioner som du också kan använda. Följande funktioner är tillgängliga i Std.Diagnostics biblioteket för att konfigurera brus i Q# program:
| Funktion | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Konfigurerar Pauli brus för en simulatorkörning. Parameter representerar sannolikheterna för brus från X-, Y- och Z-gaterna Pauli. Brusinställningen gäller för alla efterföljande grindar, mätningar och kvantbitar i ett Q# program. Åsidosätter VS Code inställningar för utökningsbrus. Efterföljande anrop av ConfigurePauliNoise åsidosätter bruset som angetts av tidigare anrop. |
ConfigurePauliNoise(0.1, 0.0, 0.5)eller ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Konfigurerar endast X-gate-brus med den angivna sannolikheten. | 10% bit-flip störningConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Konfigurerar endast Z-gatebrus med angiven sannolikhet. | 10% fasvänd brus:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Konfigurerar brus till X-, Y- eller Z-port med lika sannolikhet. | 6% avpolariserande brus:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.2, 0.2, 0.2) |
NoNoise |
Återställer brusmodellen till att inte ha något brus. |
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]);... |