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.
Microsoft Quantum Development Kit (QDK) zawiera symulatory kwantowe, które uruchamiają programy kwantowe na maszynie lokalnej. Użyj tych lokalnych symulatorów do testowania i opracowywania programów przed przesłaniem ich do Azure Quantum targetów docelowych.
Moduł QDK udostępnia cztery podstawowe symulatory do uruchamiania programów kwantowych:
- Symulator rzadkiego układu
- Symulator stabilizatora
- Symulator GPU
- Symulator CPU
Symulator rzadkiego układu
Symulator rzadki reprezentuje stany kubitu jako wektory rzadkie i używa algebry rzadkich macierzy do szybkiego symulowania programów, które generują kilka niezerowych amplitud. Jest to domyślny symulator dla programów Q# i OpenQASM w rozszerzeniu QDK oraz dla interfejsów API qsharp.run i openqasm.runPython. Użyj rozrzednego symulatora, jeśli chcesz szybko symulować Q#programy , OpenQASMlub Qiskit , gdy chcesz wyświetlić stan kwantowy programu podczas symulacji.
Symulator rzadki jest dostępny zarówno w rozszerzeniu dla VS Code (Visual Studio Code), jak i w pakiecie QDKPython. Ten symulator jest jedynym symulatorem dostępnym QDK w rozszerzeniu, więc rozszerzenie automatycznie używa go podczas uruchamiania Q# i OpenQASM programów w programie VS Code. W VS Codesystemie użyj Q#DumpMachine funkcji lub debugera, aby wyświetlić wektory stanu kubitu w różnych punktach symulacji.
Zarówno rozszerzenie VS Code, jak i pakiet Python obsługują modele szumów dla rzadkich symulacji programów Q# i OpenQASM. Tylko pakiet Python obsługuje symulacje rzadkie programów Qiskit, ale nie obsługuje modeli szumu dla symulacji Qiskit.
Aby uzyskać więcej informacji na temat uruchamiania symulacji w QDK rozszerzeniu, zobacz Uruchamianie symulacji kwantowych w QDK rozszerzeniu dla programu Visual Studio Code.
Symulator stabilizatora
Symulator stabilizatora szybko i skutecznie symuluje programy zdominowane przez Clifford z tysiącami kubitów. Clifford bramki są typowymi składnikami obwodów korygowania błędów kwantowych. Clifford operacje nie zwiększają liczby gałęzi stabilizatora, więc symulator może je skutecznie stosować nawet w szerokich obwodach. Typowe Clifford operacje obejmują:
- $X$, $Y$ i $Z$
- $S$ i $S^\dagger$
- $H$, lub Hadamard
- $CX$, $CY$, i $CZ$
- $SWAP$
Symulator stabilizatora używa również rozgałęziania stabilizatora do symulowania obwodów z ograniczoną liczbą operacji innych niż Clifford. Symulator obsługuje następujące operacje inne niż Clifford:
- $T$ i $T^\dagger$
- Obroty $R_X$, $R_Y$, $R_Z$, $R_{XX}$, $R_{YY}$ i $R_{ZZ}$ o dowolnym kącie
Każda operacja inna niż Clifford może zwiększyć liczbę gałęzi stabilizatora. Dodawanie operacji innych niż Clifford może wykładniczo zwiększyć użycie pamięci i czas wykonania. Użyj symulatora stabilizatora dla szerokich obwodów z głównie Clifford operacjami i skromną liczbą operacji innych niż Clifford. Użyj rzadkiego lub pełnego symulatora dla obwodów, które mają wiele operacji innych niż Clifford.
Symulator stabilizatora obsługuje adaptacyjne wykonywanie obwodu, Pauli szum i utratę kubitów. Jest on dostępny w pakiecie QDKPython dla Q#programów , OpenQASM, Qiskit, i QIR , ale nie jest dostępny w QDK rozszerzeniu dla programu VS Code.
W Python interfejsach API z selektorem symulatora użyj "stabilizer" lub "clifford", aby wybrać symulator stabilizera.
Symulator GPU
Symulator GPU jest symulatorem pełnego stanu, który używa maszyny GPU do równoległego uruchamiania licznych wywołań programu kwantowego. Symulator obsługuje wszystkie typy bram, ale wymaga znaczących zasobów obliczeniowych. Symulator może modelować maksymalnie 27 kubitów. Moc maszyny GPU określa wydajność, ale wydajność jest optymalna dla programów, które mają około 20 kubitów i wiele zdjęć.
Symulator GPU akceptuje QIR lub Qiskit jako dane wejściowe za pośrednictwem niektórych QDKPython interfejsów API pakietu. Rozszerzenie VS Code nie obsługuje symulatora GPU . Istnieje również bogate wsparcie dla modeli szumów dla dowolnego typu wrot kwantowych lub operacji.
Symulator CPU
Podobnie jak symulator GPU, symulator CPU jest symulatorem pełnego stanu, który uruchamia programy z dowolnym typem bramy kwantowej. Ale jest wolniejsza, ponieważ nie może uruchamiać wielu uruchomień równolegle. Ten symulator skaluje się do około 25 kubitów, ale wraz ze wzrostem liczby kubitów spowalnia wykładniczo z powodu problemów z pamięcią. Użyj symulatora CPU, gdy maszyna nie ma GPU, lub gdy program ma kilka kubitów i nie wymaga wielu prób.
Symulator CPU akceptuje QIR lub Qiskit dane wejściowe. Można go używać za pośrednictwem niektórych QDKPython interfejsów API pakietów, ale nie za pośrednictwem VS Code rozszerzenia. Istnieje również bogata obsługa modeli szumów dla dowolnego typu bramy kwantowej lub operacji.
Jakiego symulatora należy używać?
Podczas wybierania symulatora należy wziąć pod uwagę następujące czynniki:
- Środowisko projektowe (VS Code lub Python)
- Struktura programowania kwantowego, której używasz
- Złożoność programu i liczba zdjęć
- Możliwości sprzętowe maszyny lokalnej
- Obiekt docelowy Azure Quantum lub inny sprzęt kwantowy, na którym chcesz uruchamiać programy
- Modele szumów, które chcesz skompilować
Poniższa tabela zawiera podsumowanie dostępności każdego QDK symulatora i obsługiwanych frameworków programowania kwantowego:
| Symulator | Availability | Obsługiwane platformy |
|---|---|---|
| Rzadkie | VS Code rozszerzenie i Python pakiet | Q#, OpenQASM, Qiskit |
| Stabilizer | Python Pakiet | Q#, , OpenQASM, , QiskitQIR |
| GPU | Python Pakiet | Qiskit, QIR |
| CPU | Python Pakiet | Qiskit, QIR |
Symulacje w QDK rozszerzeniu dla VS Code
Rozszerzenie QDK dla programu VS Code obsługuje tylko symulator rozrzedzony. Aby użyć symulatora rozrzedzonego, uruchom plik Q# lub OpenQASM w VS Code. Modele szumów można dodawać Pauli do symulacji rozrzedzonych Q# programów w VS Code programach, ale nie do OpenQASM programów.
Symulacje w pakiecie QDKPython
Pakiet QDKPython obsługuje wiele frameworków programowania kwantowego i wszystkie cztery symulatory QDK. Zgodność różni się w zależności od frameworku i interfejsu API.
W poniższej tabeli wymieniono symulatory i frameworki programistyczne obsługiwane przez każdy Python interfejs API:
| Python Interfejs Programowania Aplikacji (API) | Rzadkie | Stabilizer | GPU | CPU | Struktura programowania |
|---|---|---|---|---|---|
qsharp.run |
Supported | Supported | Nieobsługiwane | Nieobsługiwane | Q# |
openqasm.run |
Supported | Supported | Nieobsługiwane | Nieobsługiwane | OpenQASM |
qiskit.QSharpBackend |
Supported | Nieobsługiwane | Nieobsługiwane | Nieobsługiwane | Qiskit |
simulation.NeutralAtomDevice |
Nieobsługiwane | Supported | Supported | Supported | QIR |
qiskit.NeutralAtomBackend |
Nieobsługiwane | Supported | Supported | Supported | Qiskit |
simulation.run_qir |
Nieobsługiwane | Supported | Supported | Supported | QIR |