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.
Die MicrosoftQuantum Development Kit (QDK) Erweiterung für Visual Studio Code (VS Code) führt Q# und OpenQASM Programme automatisch auf seinem lokalen Sparsesimulator aus.
In diesem Artikel wird erläutert, wie Sie Programme auf dem lokalen Simulator ausführen und wie Sie Q# Rauschen zu Pauli Simulationen hinzufügen. Wenn Sie die anderen QDK Simulatoren von Python verwenden möchten, lesen Sie Ausführen von Quantensimulationen mit dem QDKPython Paket.
Funktionsweise des lokalen Simulators
Der Sparse-Simulator speichert nur die Nichtnull-Amplituden eines Quantenzustands. Wenn die meisten Amplituden der Rechenbasis null sind, verwendet diese Darstellung weniger Arbeitsspeicher und kann einige Programme mit mehr Qubits als ein Vollzustandssimulator simulieren, der jede Amplitude speichert.
Der Leistungsvorteil hängt davon ab, ob der Quantenzustand in der Rechenbasis spärlich bleibt. Weitere Informationen finden Sie unter Jaques und Häner (arXiv:2105.01533).
Quantenprogramm in VS Code ausführen
- Installieren Sie die QDK Erweiterung für VS Code.
- Öffnen Sie eine Datei vom Typ Q# (
.qs) oder OpenQASM (.qasm). - Wählen Sie "Ausführen" aus der Codelinse am Anfang der Datei oder oberhalb des Q#
MainVorgangs aus.
Die Simulationsausgabe wird im VS Code Terminal angezeigt. Wählen Sie für Q# Programme "Debuggen " aus, um den Quantenzustand des Programms während der Ausführung zu prüfen.
Rauschen zu Q# Simulationen hinzufügen
Der sparse Simulator unterstützt Pauli Rauschen für Q# Programme in der QDK Erweiterung. Verwenden Sie ConfigurePauliNoise, um die Wahrscheinlichkeiten von Pauli $X$-, $Y$- und $Z$-Fehlern in einem Programm festzulegen. Die QDK Erweiterungseinstellungen unterstützen auch ein globales Pauli Rauschmodell.
Note
Sie können einer QDK Simulation in der OpenQASM Erweiterung kein Rauschmodell hinzufügen. Verwenden Sie das QDKPython Paket und die NoiseConfig API, um betriebsspezifische Rauschmodelle für Q# oder OpenQASM Programme zu erstellen.
Rauschen in den VS Code Einstellungen hinzufügen Pauli
- Legen Sie in VS Code globales Rauschen Pauli für Q# Programme in der Q#> Simulation:Pauli Benutzereinstellung: Rauschen für die QDK Erweiterung fest.
Die Rauscheinstellungen gelten für Histogrammergebnisse für alle Gatter, Messungen und Qubits in allen Q# Programmen in VS Code.
Ohne Rauschen zeigt ein Histogramm für dieses GHZ Beispielprogramm $\ket{00000}$ für etwa die Hälfte der Messungen 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;
}
Bei einer 1% Bit-Flip-Rauschrate beginnen die Ergebnisse sich zu streuen. Bei 25%ist das Histogramm von reinem Rauschen nicht zu unterscheiden.
Hinzufügen von Pauli Rauschen zu einzelnen Q# Programmen
Wird verwendet ConfigurePauliNoise , um das Rauschmodell eines Q# Programms festzulegen oder zu ändern und zu steuern, wann und wo Rauschen auftritt.
Note
Die VS Code Einstellungen wenden Rauschen auf alle Q# Programme an, aber ConfigurePauliNoise überschreibt diese Einstellungen für das Programm, das es aufruft.
Fügen Sie im vorherigen Programm unmittelbar nach der Qubit-Zuordnung Rauschen hinzu:
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;
}
Um Rauschen nur auf den Messvorgang anzuwenden, legen Sie das Rauschmodell unmittelbar vor der Messung fest und löschen Sie es anschließend:
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;
}
Um die Rauschkonfiguration an verschiedenen Stellen in Ihrem Programm zu ändern oder zu löschen, rufen Sie ConfigurePauliNoise mehrmals an. Wenden Sie beispielsweise 5% Bit-Flip-Rauschen auf das Hadamard-Gate an, und löschen Sie dann die Rauschkonfiguration für den Rest des Programms.
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
ConfigurePauliNoise unterstützt jedes Pauli Rauschmodell. Verwenden Sie diese Funktionen und Vorgänge aus dem Std.Diagnostics-Namespace, um Rauscheffekte zu konfigurieren oder anzuwenden:
| Function | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Legt Pauli Rauschen für eine Simulation fest. Übergeben Sie entweder die Wahrscheinlichkeiten von Pauli $X$, $Y$, und $Z$-Fehler oder ein Pauli Rauschmodell. Die Konfiguration gilt für alle nachfolgenden Tore, Messungen und Qubits in einem Q# Programm und setzt die VS Code Erweiterungsgeräuscheinstellungen außer Kraft. Nachfolgende Aufrufe überschreiben frühere Konfigurationen. | ConfigurePauliNoise(0.1, 0.0, 0.5)oder ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Gibt ein Rauschmodell mit nur Pauli $X$-Fehlern mit der angegebenen Wahrscheinlichkeit zurück. | 10% Bit-Flip-Rauschen:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Gibt ein Rauschmodell mit nur Pauli $Z$-Fehlern mit der angegebenen Wahrscheinlichkeit zurück. | 10% Phasen-Flip-Rauschen:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Gibt ein Rauschmodell mit gleicher Wahrscheinlichkeit für Pauli $X$, $Y$ und $Z$-Fehler zurück. | 6% depolarisierendes Rauschen:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.02, 0.02, 0.02) |
NoNoise |
Gibt ein Modell mit Fehlerwahrscheinlichkeiten von null zurück. Übergeben Sie es an ConfigurePauliNoise, um die aktuelle Rauschkonfiguration zu löschen. |
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]);... |