Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der sparse Simulator verwendet eine geringe Darstellung von Quantenzustandsvektoren. Ein geringer Quantenzustand ist ein Zustand, in dem die meisten Amplitudenkoeffizienten null sind. Geringe Darstellungen ermöglichen es dem sparsamen Simulator, den Speicherbedarf zu minimieren, der zum Darstellen von Quantenzuständen erforderlich ist, was Simulationen über eine größere Anzahl von Qubits ermöglicht. Der sparse Simulator ist effizient für Programme mit Quantenzuständen, die in der Rechenbasis spärlich sind. Mit dem sparsamen Simulator können Benutzer größere Anwendungen als einen Vollzustandssimulator erkunden, da Vollzustandssimulatoren Arbeitsspeicher und Zeit auf einer exponentiell großen Anzahl von Null-Amplituden verschwenden.
Weitere Informationen zum Sparse-Simulator finden Sie in Jaques und Häner (arXiv:2105.01533).
Rufen Sie den Sparse-Simulator auf
Der Sparse Simulator ist der Standard lokale Simulator im MicrosoftQuantum Development Kit (QDK) für Visual Studio Code (VS Code). Die Nutzung des dünn besetzten Simulators hängt von Ihrer Entwicklungsumgebung ab.
| Entwicklungsumgebung | So rufen Sie den Sparsesimulator auf |
|---|---|
| In einem Q# oder OpenQASM Programm in VS Code | Führen Sie die Datei Q# oder OpenQASM aus |
In einem Python-Programm mit der Bibliothek qdk |
qsharp.runoder openqasm.runoder qiskit.QSharpBackend |
In einer %%qsharp Notizbuchzelle |
Rufen Sie beispielsweise den Programmeingabevorgang auf:Main() |
Fügen Sie Pauli Rauschen zum Sparsesimulator in VS Code hinzu
Der Sparse-Simulator unterstützt das Hinzufügen von Pauli Rauschen in Simulationen Ihrer Q#-Programme mit der VS Code-Erweiterung. Mit diesem Feature können Sie die Auswirkungen von Rauschen auf Quantenvorgänge und Messungen simulieren. Verwenden Sie die Funktion ConfigurePauliNoise, um ein Rauschmodell in Ihrem Q# Programm anzugeben. Die Funktion legt Wahrscheinlichkeiten für Pauli Operatoren X, Y, und Z sowie für das Auftreten von Rauschen fest. Sie können auch globale Rauschmodelle in den Erweiterungseinstellungen konfigurieren.
Füge Pauli Rauschen mithilfe der VS Code Einstellungen hinzu
Um das globale Pauli-Rauschen für Q#-Programme in VS Code festzulegen, konfigurieren Sie die Benutzereinstellung Q#> Simulation:Pauli Rauschen für die QDK-Erweiterung.
Die Rauscheinstellungen gelten für Histogrammergebnisse für alle Gatter, Messungen und Qubits in allen Q# Programmen in VS Code.
Beispielsweise zeigt ein Histogramm für das folgende GHz-Beispielprogramm ohne Rauschen ein Ergebnis von $\ket{00000}$ für etwa die Hälfte der Maße und $\ket{11111}$ für die andere Hälfte.
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;
}
Wenn Sie sogar eine 1% Bit-Flip-Rauschrate hinzufügen, beginnen die Ergebnisse zu diffus. Bei 25% Bit-Flip-Rauschen ist das Histogramm von reinem Rauschen nicht mehr zu unterscheiden.
Hinzufügen von Pauli Rauschen zu einzelnen Q# Programmen
Verwenden Sie die ConfigurePauliNoise Funktion, um das Rauschmodell für einzelne Q# Programme festzulegen oder zu ändern. Mit der ConfigurePauliNoise Funktion können Sie steuern, wann und wo Rauschen in Ihren Q# Programmen auftreten.
Hinweis
Wenn Sie Rauschen in den VS Code Einstellungen konfigurieren, wird das Rauschen auf alle Q# Programme angewendet. Die Funktion überschreibt jedoch die ConfigurePauliNoise Rauscheinstellungen für das Programm, VS Code das die Funktion aufruft.
Im vorherigen Programm können Sie z. B. unmittelbar nach der Qubit-Zuweisung Rauschen hinzufügen.
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;
}
Oder Sie können nur dem Messvorgang Rauschen hinzufügen.
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;
}
Um Rauschkonfigurationen an verschiedenen Stellen in Ihrem Programm zu ändern oder zu löschen, rufen Sie ConfigurePauliNoise mehrmals auf. Sie können z. B. 5% Bit-Flip-Rauschen auf das Hadamard-Tor festlegen und dann keinen Rauschen für den Rest des Programms festlegen.
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# Rauschfunktionen
Die ConfigureNoiseFunction Funktion reicht aus, um jede Art von Pauli Rauschen in Ihrem Programm zu modellieren, verfügt jedoch Q# über andere Rauschfunktionen, die Sie auch verwenden können. Die folgenden Funktionen stehen in der Std.Diagnostics Bibliothek zum Konfigurieren von Rauschen in Q# Programmen zur Verfügung:
| Funktion | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Konfiguriert Rauschen Pauli für eine Simulatorausführung. Parameter stellen die Wahrscheinlichkeit von X-, Y- und Z-Torgeräuschen Pauli dar. Die Rauschkonfiguration gilt für alle nachfolgenden Gates, Messungen und Qubits in einem Q# Programm. Setzt die Rauscheinstellungen der Erweiterung VS Code außer Kraft. Nachfolgende Aufrufe von ConfigurePauliNoise überschreiben das durch vorherige Aufrufe gesetzte Rauschen. |
ConfigurePauliNoise(0.1, 0.0, 0.5)oder ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Konfiguriert nur X-Gate-Rauschen mit der angegebenen Wahrscheinlichkeit. | 10% Bit-Flip-Rauschen:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Konfiguriert nur Z-Gate-Rauschen mit der angegebenen Wahrscheinlichkeit. | 10% Phasen-Flip-Rauschen:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Konfiguriert das Rauschen so, dass es mit gleicher Wahrscheinlichkeit ein X-, Y- oder Z-Gate ist. | 6% depolarisierendes Rauschen:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.2, 0.2, 0.2) |
NoNoise |
Setzt das Rauschmodell auf ein rauschfreies Modell zurück. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Wendet konfiguriertes Rauschen während der Simulation auf einen einzelnen Qubit an. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |