Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft Quantum Development Kit (QDK) innehåller kvantsimulatorer som kör kvantprogram på din lokala dator. Använd dessa lokala simulatorer för att testa och utveckla dina program innan du skickar dem till Azure Quantum målenheter.
QDK innehåller fyra primära simulatorer för att köra kvantprogram:
- Den glese simulatorn
- Stabilisatorsimulatorn
- Simulatorn GPU
- Simulatorn CPU
Den glese simulatorn
Simulatorn för glesa tillstånd representerar qubittillstånd som glesa vektorer och använder gles matrisalgebra för att snabbt simulera program som genererar få icke-noll-amplituder. Det är standardsimulatorn för programmen Q# och QDK i tillägget qsharp.run och för API:erna openqasm.run och PythonOpenQASM. Använd den glesa simulatorn när du vill ha snabba simuleringar av Q#, OpenQASMeller Qiskit program eller när du vill visa kvanttillståndet för ditt program under simuleringen.
Den sparse-simulatorn är tillgänglig i både QDK tillägget för Visual Studio Code (VS Code) och QDKPython paketet. Den här simulatorn är den enda simulatorn som är tillgänglig i QDK tillägget, så tillägget använder den automatiskt när du kör Q# och OpenQASM program i VS Code. I VS Code använder du Q#DumpMachine-funktionen eller felsökningsprogrammet för att visa qubittillståndsvektorer vid olika tidpunkter i simuleringen.
Både VS Code-tillägget och Python-paketet stöder brusmodeller för glesa simuleringar av Q#- och OpenQASM-program. Python Endast paketet stöder gles simulering av Qiskit-program, men det stöder inte brusmodeller för Qiskit-simuleringar.
Mer information om hur du kör simuleringar i tillägget finns i QDKKöra kvantsimuleringar i QDK tillägget för Visual Studio Code.
Stabilisatorsimulatorn
Stabilisatorsimulatorn simulerar snabbt och effektivt Clifford-dominerade program med tusentals kvantbitar. Clifford grindar är vanliga komponenter i kvantfelkorrigeringskretsar. Clifford operationer ökar inte antalet stabilisatorgrenar, så simulatorn kan tillämpa dem effektivt även i breda kretsar. Vanliga Clifford åtgärder är:
- $X$, $Y$, och $Z$
- $S$ och $S^\dagger$
- $H$, eller Hadamard
- $CX$, $CY$, och $CZ$
- $SWAP$
Stabilisatorsimulatorn använder också stabilisatorförgrening för att simulera kretsar med ett begränsat antal icke-Clifford operationer. Simulatorn stöder följande icke-Clifford operationer:
- $T$ och $T^\dagger$
- Rotationer med godtycklig vinkel för $R_X$, $R_Y$, $R_Z$, $R_{XX}$, $R_{YY}$ och $R_{ZZ}$
Varje operation som inte är Clifford kan öka antalet stabilisatorgrenar. Att lägga till icke-Cliffordoperationer kan öka minnesanvändningen och körtiden exponentiellt. Använd stabilisatorsimulatorn för breda kretsar med mestadels Clifford-operationer och ett blygsamt antal icke-Clifford-operationer. Använd en gles eller fulltillståndssimulator för kretsar som har många andra operationer än Clifford.
Stabilisatorsimulatorn stöder anpassningsbar körning, Pauli brus och kvantbitsförlust. Det är tillgängligt i QDKPython paketet för Q#, OpenQASM, Qiskitoch QIR program, men är inte tillgängligt i QDK tillägget för VS Code.
I Python API:er med en simulatorväljare använder du antingen "stabilizer" eller "clifford" för att välja stabilisatorsimulatorn.
Simulatorn GPU
Simulatorn GPU är en fulltillståndssimulator som använder datorns GPU för att köra många bilder av kvantprogrammet parallellt. Simulatorn stöder alla gatetyper men kräver betydande databehandlingsresurser. Simulatorn kan modellera upp till 27 kvantbitar. Kapaciteten hos datorns GPU avgör prestandan, men prestandan är optimal för program som har omkring 20 qubits och många körningar.
Simulatorn GPU accepterar QIR eller Qiskit som indata via vissa QDKPython paket-API:er. Tillägget VS Code stöder inte GPU-simulatorn. Det finns också omfattande stöd för brusmodeller på alla typer av kvantgrindar eller operationer.
Simulatorn CPU
Precis som simulatorn GPU är simulatorn CPU en fulltillståndssimulator som kör program med alla typer av kvantgrindar. Men det är långsammare eftersom det inte kan köra flera körningar parallellt. Den här simulatorn skalar upp till cirka 25 kvantbitar, men saktar ned exponentiellt med fler kvantbitar på grund av minnesproblem. Använd CPU-simulatorn när datorn inte har en GPU, eller när programmet har få kvantbitar och inte kräver många shots.
Simulatorn CPU accepterar QIR eller Qiskit indata. Du kan använda det via vissa QDKPython paket-API:er, men inte via VS Code tillägget. Det finns också omfattande stöd för brusmodeller på alla typer av kvantgrindar eller operationer.
Vilken simulator ska jag använda?
Tänk på dessa faktorer när du väljer en simulator:
- Din utvecklingsmiljö (VS Code eller Python)
- Det ramverk för kvantprogrammering som du använder
- Komplexiteten i ditt program och antalet bilder
- Maskinvarufunktionerna för din lokala dator
- Azure Quantum mål eller annan kvantmaskinvara som du vill köra dina program på
- De brusmodeller som du vill skapa
I följande tabell sammanfattas tillgängligheten för varje QDK simulator och kvantprogrammeringsramverk som stöds:
| Simulator | Availability | Ramverk som stöds |
|---|---|---|
| Sparsamt | VS Code tillägg och Python paket | Q#, OpenQASM, Qiskit |
| Stabilizer | Python Paket | Q#, OpenQASM, , QiskitQIR |
| GPU | Python Paket | Qiskit, QIR |
| CPU | Python Paket | Qiskit, QIR |
Simuleringar i QDK tillägget för VS Code
Tillägget QDK för VS Code stöder endast den glesa simulatorn. Om du vill använda sparse-simulatorn kör du din Q#- eller OpenQASM-fil i VS Code. Du kan lägga till Pauli brusmodeller till glesa simuleringar av Q# program i VS Code, men inte till OpenQASM program.
Simuleringar i QDKPython paketet
Paketet QDKPython stöder flera kvantprogrammeringsramverk och alla fyra QDK simulatorer. Kompatibiliteten varierar beroende på ramverk och API.
I följande tabell visas de simulatorer och programmeringsramverk som varje Python API stöder:
| Python API (applikationsprogrammeringsgränssnitt) | Sparsamt | Stabilizer | GPU | CPU | Programmeringsramverk |
|---|---|---|---|---|---|
qsharp.run |
Supported | Supported | Stöds ej | Stöds ej | Q# |
openqasm.run |
Supported | Supported | Stöds ej | Stöds ej | OpenQASM |
qiskit.QSharpBackend |
Supported | Stöds ej | Stöds ej | Stöds ej | Qiskit |
simulation.NeutralAtomDevice |
Stöds ej | Supported | Supported | Supported | QIR |
qiskit.NeutralAtomBackend |
Stöds ej | Supported | Supported | Supported | Qiskit |
simulation.run_qir |
Stöds ej | Supported | Supported | Supported | QIR |