Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Řídký simulátor využívá zhuštěnou reprezentaci kvantových stavových vektorů. Řídký kvantový stav je stav, ve kterém je většina amplitudových koeficientů nula. Řídké reprezentace umožňují řídkému simulátoru minimalizovat nároky na paměť vyžadované k reprezentaci kvantových stavů, což umožňuje simulaci nad větším počtem qubitů. Řídký simulátor je efektivní pro programy s kvantovými stavy, které jsou řídké ve výpočetním základu. Řídký simulátor umožňuje uživatelům zkoumat větší aplikace než simulátor plného stavu, protože simulátory plného stavu plýtvají pamětí a časem na exponenciálně velký počet nulových amplitud.
Další informace o řídkém simulátoru viz Jaques a Häner (arXiv:2105.01533).
Zavolejte sporý simulátor
Řídký simulátor je výchozí místní simulátor v rozšíření MicrosoftQuantum Development Kit (QDK) pro Visual Studio Code (VS Code). Způsob použití simulátoru závisí na vašem vývojovém prostředí.
| Vývojové prostředí | Jak použít řídký simulátor |
|---|---|
| V programu Q# nebo OpenQASM v VS Code | Spusťte soubor Q# nebo OpenQASM |
V programu Python s balíčkem qdk |
qsharp.runnebo openqasm.runnebo qiskit.QSharpBackend |
V buňce poznámkového %%qsharp bloku |
Zavolejte vstupní operaci programu, například:Main() |
Přidejte Pauli šum do řídkého simulátoru v VS Code
Řídký simulátor podporuje přidání šumu Pauli do simulací vašich Q# programů s rozšířením VS Code . Tato funkce umožňuje simulovat účinky šumu na kvantové operace a měření. K určení modelu šumu v Q# programu použijte ConfigurePauliNoise funkci. Funkce nastaví pravděpodobnosti pro Pauli operátory X, Y a Z, aby došlo k šumu. V nastavení rozšíření můžete také nakonfigurovat globální modely šumu.
Přidejte Pauli šum pomocí VS Code nastavení.
Pokud chcete nastavit globální Pauli šum pro Q# programy v VS Code, nakonfigurujte Q#> Simulaci:Pauli Nastavení uživatelského šumu pro QDK rozšíření.
Nastavení šumu platí pro výsledky histogramu pro všechna hradla, měření a qubity ve všech Q# programech v VS Code.
Například histogram pro následující ukázkový program GHz bez nakonfigurovaného šumu ukazuje výsledek $\ket{00000}$ přibližně pro polovinu měření a $\ket{11111}$ pro druhou polovinu.
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;
}
Pokud přidáte jen 1% míru šumu způsobeného překlápěním bitů, začnou se výsledky rozptylovat. Při 25% bit-flip šumu je histogram nerozeznatelný od samotného šumu.
Přidání Pauli šumu do jednotlivých Q# programů
ConfigurePauliNoise Pomocí funkce můžete nastavit nebo upravit model šumu pro jednotlivé Q# programy. Funkce ConfigurePauliNoise vám dává kontrolu nad tím, kdy a kde ve vašich Q# programech dochází k šumu.
Poznámka:
Pokud v nastavení nakonfigurujete šum VS Code , použije se šum pro všechny Q# programy. Funkce ConfigurePauliNoise však přepíše nastavení šumu VS Code pro program, který funkci volá.
Například v předchozím programu můžete přidat šum hned po přidělení qubitu.
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;
}
Nebo můžete přidat šum pouze do operace měření.
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;
}
Pokud chcete upravit nebo vymazat konfigurace šumu v různých bodech programu, zavolejte ConfigurePauliNoise několikrát. Můžete například nastavit 5% chyby překlápění bitů pro Hadamardovu bránu a pak žádný šum nenastavovat pro zbytek programu.
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;
}
Další Q# funkce šumu
Funkce ConfigureNoiseFunction je dostatečná k modelování jakéhokoli druhu šumu Pauli v programu, ale Q# má další funkce šumu, které můžete také použít. V knihovně Std.Diagnostics jsou k dispozici následující funkce pro konfiguraci šumu v Q# programech:
| Funkce | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Nakonfiguruje Pauli šum pro spuštění simulátoru. Parametry představují pravděpodobnosti šumu brány Pauli X, Y a Z. Konfigurace šumu se vztahuje na všechny následné brány, měření a qubity v Q# programu. Přepíše nastavení šumu VS Code rozšíření. Následná volání přepíší šum nastavený předchozími voláními prostřednictvím ConfigurePauliNoise. |
ConfigurePauliNoise(0.1, 0.0, 0.5)nebo ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Konfiguruje pouze šum brány X se zadanou pravděpodobností. | 10% šum z bit-flipůConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Konfiguruje pouze šum brány Z se zadanou pravděpodobností. | 10% šum při překlápění fázeConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Konfiguruje šum tak, aby s rovnoměrnou pravděpodobností používal bránu X, Y nebo Z. | 6% depolarizační šumConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.2, 0.2, 0.2) |
NoNoise |
Resetuje model šumu tak, aby neměl žádný šum. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Použije nakonfigurovaný šum na jeden qubit během simulace. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |