Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Symulator rzadki wykorzystuje rzadką reprezentację wektorów stanu kwantowego. Rozrzedny stan kwantowy jest stanem, w którym większość współczynników amplitudy wynosi zero. Reprezentacje rozrzedane umożliwiają symulatorowi rozrzedżenia zminimalizowanie ilości pamięci wymaganej do reprezentowania stanów kwantowych, co umożliwia symulacje większej liczby kubitów. Symulator rzadki jest wydajny dla programów ze stanami kwantowymi, które są rzadkie w podstawie obliczeniowej. Symulator rozrzedny umożliwia użytkownikom eksplorowanie większych aplikacji niż symulator pełnego stanu, ponieważ symulatory pełnego stanu tracą pamięć i czas na wykładniczo dużą liczbę amplitud zerowych.
Aby uzyskać więcej informacji na temat symulatora rozrzedliwego, zobacz Jaques i Häner (arXiv:2105.01533).
Wywołaj rzadki symulator
Symulator rzadki jest domyślnym lokalnym symulatorem w rozszerzeniu MicrosoftQuantum Development Kit (QDK) dla Visual Studio Code (VS Code). Korzystanie z symulatora rozproszonego zależy od środowiska programistycznego.
| Środowisko programistyczne | Jak uruchomić symulator rzadki |
|---|---|
| W programie Q# lub OpenQASM w VS Code | Uruchom plik Q# lub OpenQASM |
W programie Python z biblioteką qdk |
qsharp.runlub openqasm.runlub qiskit.QSharpBackend |
W komórce notebooka %%qsharp |
Wywołaj operację wprowadzania programu, na przykład:Main() |
Dodawanie Pauli szumu do rozrzedliwego symulatora w programie VS Code
Symulator rzadki obsługuje dodawanie szumu Pauli do symulacji Q# programów za pomocą rozszerzenia VS Code. Ta funkcja umożliwia symulowanie wpływu szumu na operacje kwantowe i pomiary. Aby określić model szumu w Q# programie, użyj ConfigurePauliNoise funkcji . Funkcja ustawia prawdopodobieństwa występowania operatorów Pauli, X, Y i Z, a także szumu. Można również skonfigurować globalne modele szumów w ustawieniach rozszerzenia.
Dodaj Pauli szum za pomocą VS Code ustawień
Aby ustawić globalny Pauli szum dla Q# programów w VS Code, skonfiguruj ustawienia użytkownika Q#> Symulacja:Pauli Szum związane z rozszerzeniem QDK.
Ustawienia szumu dotyczą wyników histogramu dla wszystkich bram, pomiarów i kubitów we wszystkich programach Q# w VS Code.
Na przykład histogram dla następującego programu próbkowego GHz bez skonfigurowanego szumu pokazuje wynik $\ket{00000}$ dla około połowy pomiarów i $\ket{11111}$ dla drugiej połowy.
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;
}
Jeśli dodasz nawet 1% współczynnik szumu przerzucania bitów, wyniki zaczynają się rozpraszać. Dzięki szumowi wynikającemu z przerzucania 25% bitów histogram jest nie do odróżnienia od czystego szumu.
Dodawanie Pauli szumu do poszczególnych Q# programów
ConfigurePauliNoise Użyj funkcji , aby ustawić lub zmodyfikować model szumu dla poszczególnych Q# programów. Funkcja ConfigurePauliNoise zapewnia kontrolę nad tym, kiedy i gdzie występuje szum w Q# programach.
Uwaga / Notatka
Jeśli skonfigurujesz szum w VS Code ustawieniach, szum zostanie zastosowany do wszystkich Q# programów.
ConfigurePauliNoise Jednak funkcja zastępuje ustawienia szumu VS Code dla programu, który wywołuje funkcję.
Na przykład w poprzednim programie można dodać szum bezpośrednio po alokacji kubitu.
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;
}
Możesz też dodać szum tylko do operacji pomiaru.
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;
}
Aby zmodyfikować lub wyczyścić konfiguracje szumów w różnych punktach programu, wywołaj ConfigurePauliNoise wiele razy. Na przykład można ustawić szum bitowy jako 5% przerzut na bramie Hadamarda, a następnie pozostawić resztę programu bez szumu.
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;
}
Inne Q# funkcje szumu
Funkcja ConfigureNoiseFunction jest wystarczająca do modelowania dowolnego rodzaju szumu Pauli w Twoim programie, ale Q# ma inne funkcje szumu, których również możesz użyć. Następujące funkcje są dostępne w bibliotece Std.Diagnostics do konfigurowania szumu w programach Q#:
| Funkcja | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Konfiguruje Pauli szum dla przebiegu symulatora. Parametry reprezentują prawdopodobieństwo szumu bramy X, Y i Z Pauli . Konfiguracja szumu ma zastosowanie do wszystkich kolejnych bram, pomiarów i kubitów w Q# programie. Zastępuje ustawienia rozszerzenia VS Code dla szumu. Kolejne wywołania ConfigurePauliNoise zastępują szum określony przez poprzednie wywołania. |
ConfigurePauliNoise(0.1, 0.0, 0.5)lub ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Konfiguruje tylko szum bramki X z określonym prawdopodobieństwem. | 10% szum błędu bitowegoConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Konfiguruje tylko szum bramy Z z określonym prawdopodobieństwem. | 10% szum fazowy:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Konfiguruje szum, aby działał jako bramka X, Y lub Z z równymi prawdopodobieństwami. | 6% depolaryzującego szumuConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.2, 0.2, 0.2) |
NoNoise |
Resetuje model szumu do stanu bez szumów. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Stosuje skonfigurowany szum do pojedynczego kubitu podczas symulacji. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |