Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De sparse-simulator maakt gebruik van een sparse-weergave van kwantumstatusvectoren. Een sparse kwantumstatus is een toestand waarbij de meeste amplitudecoëfficiënten nul zijn. Met sparse-representaties kan de sparsesimulator de geheugenvoetafdruk minimaliseren die nodig is om kwantumstatussen weer te geven, waardoor simulaties via een groter aantal qubits mogelijk zijn. De spaarzame simulator is efficiënt voor programma's met quantumtoestanden die schaars zijn in de rekenbasis. Met de sparse-simulator kunnen gebruikers grotere toepassingen verkennen dan een simulator met volledige status, omdat full-state simulators geheugen en tijd verspillen op een exponentieel groot aantal nul-amplitudes.
Zie Jaques en Häner (arXiv:2105.01533) voor meer informatie over de sparse simulator.
De sparse-simulator aanroepen
De sparse-simulator is de standaard lokale simulator in de extensie MicrosoftQuantum Development-kit (QDK) voor Visual Studio Code (VS Code). Hoe u de sparse-simulator gebruikt, is afhankelijk van uw ontwikkelomgeving.
| Ontwikkelomgeving | Hoe de sparse-simulator aan te roepen |
|---|---|
| In een Q# of OpenQASM programma in VS Code | Het Q#-bestand of het OpenQASM-bestand uitvoeren |
In een Python programma met het qdk pakket |
qsharp.runor openqasm.runor qiskit.QSharpBackend |
In een %%qsharp notebookcel |
Roep de programmavermeldingsbewerking aan, bijvoorbeeld:Main() |
Ruis toevoegen Pauli aan de sparse simulator in VS Code
De sparse simulator ondersteunt het toevoegen van Pauli ruis aan simulaties van uw Q# programma's met de VS Code extensie. Met deze functie kunt u de effecten van ruis op kwantumbewerkingen en metingen simuleren. Als u een ruismodel in uw Q# programma wilt opgeven, gebruikt u de ConfigurePauliNoise functie. De functie stelt waarschijnlijkheden in voor Pauli operators X, Yen Zruis. U kunt ook globale ruismodellen configureren in de extensie-instellingen.
Ruis toevoegen Pauli met behulp van de VS Code instellingen
Als u globale Pauli ruis voor Q# programma's wilt VS Codeinstellen, configureert u de Q#> simulatie:Pauli ruisgebruikersinstelling voor de QDK extensie.
De ruisinstellingen zijn van toepassing op histogramresultaten voor alle poorten, metingen en qubits in alle Q# programma's in VS Code.
Een histogram voor het volgende GHz-voorbeeldprogramma zonder ruis dat is geconfigureerd, toont bijvoorbeeld een resultaat van $\ket{00000}$ voor ongeveer de helft van de metingen en $\ket{11111}$ voor de andere helft.
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;
}
Als u zelfs een bit-flip ruisniveau van 1% toevoegt, beginnen de resultaten te vervagen. Met 25% bit-flip ruis is het histogram niet te onderscheiden van pure ruis.
Ruis toevoegen Pauli aan afzonderlijke Q# programma's
Gebruik de ConfigurePauliNoise functie om het ruismodel voor afzonderlijke Q# programma's in te stellen of te wijzigen. De ConfigurePauliNoise functie geeft u controle over wanneer en waar ruis plaatsvindt in uw Q# programma's.
Opmerking
Als u ruis in de VS Code instellingen configureert, wordt de ruis toegepast op alle Q# programma's. De ConfigurePauliNoise functie overschrijft echter de VS Code ruisinstellingen voor het programma dat de functie aanroept.
In het vorige programma kunt u bijvoorbeeld direct na de toewijzing van qubit ruis toevoegen.
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;
}
U kunt ook alleen ruis toevoegen aan de meetbewerking.
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;
}
Als u ruisconfiguraties op verschillende punten in uw programma wilt wijzigen of wissen, roept u meerdere keren aan ConfigurePauliNoise . U kunt bijvoorbeeld 5% bit-flip ruis instellen op de Hadamard-poort en vervolgens geen ruis instellen voor de rest van het programma.
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;
}
Andere Q# ruisfuncties
De ConfigureNoiseFunction functie is voldoende om elk soort Pauli ruis in uw programma te modelleren, maar Q# heeft andere ruisfuncties die u ook kunt gebruiken. De volgende functies zijn beschikbaar in de Std.Diagnostics bibliotheek voor het configureren van ruis in Q# programma's:
| Functie | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Hiermee configureert Pauli u ruis voor een simulatoruitvoering. Parameters vertegenwoordigen de waarschijnlijkheden van X-, Y- en Z-poortruis Pauli. De ruisconfiguratie is van toepassing op alle volgende poorten, metingen en qubits in een Q# programma. Hiermee overschrijft u de VS Code instellingen voor extensieruis. Verdere oproepen naar ConfigurePauliNoise overschrijven de ruis zoals die is ingesteld door eerdere oproepen. |
ConfigurePauliNoise(0.1, 0.0, 0.5)or ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Hiermee stelt u alleen X-gate ruis in met de opgegeven waarschijnlijkheid. | 10% bitflip fouten:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Hiermee configureert u alleen Z-poortruis met de opgegeven waarschijnlijkheid. | 10% fase-flip ruisConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Hiermee configureert u ruis als X-, Y- of Z-poort met gelijke waarschijnlijkheden. | 6% depolariserende ruis:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.2, 0.2, 0.2) |
NoNoise |
Stelt het ruismodel opnieuw in op geen ruis. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Hiermee past u geconfigureerde ruis toe op één qubit tijdens simulatie. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |