Overzicht van kwantumsimulators in de QDK

De MicrosoftQuantum Development-kit (QDK) bevat een set kwantumsimulators waarmee u kwantumprogramma's kunt uitvoeren op uw lokale computer. Gebruik de lokale simulators om uw programma's te herhalen voordat u ze verzendt om uit te voeren op Azure Quantum doelen.

De QDK heeft vier simulators:

  • De spaarzame simulator
  • De Clifford simulator
  • De GPU simulator
  • De CPU simulator

De spaarzame simulator

De sparse-simulator is de standaardsimulator in de QDK. Deze simulator vertegenwoordigt qubitstatussen als sparse vectoren om te profiteren van sparsematrix-algebra voor snelle simulaties, met name voor programma's die niet veel superpositiestatussen genereren. Gebruik de sparse-simulator wanneer u snelle simulaties van Q#, OpenQASMprogramma's of Qiskit programma's wilt gebruiken of wanneer u de kwantumstatus van uw programma tijdens simulatie wilt weergeven.

De sparse-simulator is beschikbaar in zowel de QDK extensie voor Visual Studio Code (VS Code) als het QDKPython pakket. Deze simulator is de enige beschikbare simulator in de QDK extensie, dus de compiler roept automatisch de sparse-simulator aan wanneer u uitvoert Q# en OpenQASM programma's in VS Code. Met de sparsesimulator in VS Code kunt u de Q#DumpMachine functie of het foutopsporingsprogramma gebruiken om qubitstatusvectoren weer te geven op verschillende punten in de simulatie.

Zowel de VS Code-extensie als het Python pakket ondersteunen ruismodellen voor sparsesimulaties van Q# en OpenQASM programma's. Alleen het Python pakket ondersteunt sparse-simulatie voor Qiskit programma's, maar zonder ondersteuning voor ruismodellen.

Zie De sparse-simulator voor meer informatie over de sparse-simulator.

De Clifford simulator

De Clifford simulator is snel en efficiënt voor programma's met maximaal duizenden qubits, maar kan alleen programma's simuleren die alleen Clifford poorten bevatten. Clifford poorten zijn veelvoorkomende onderdelen van foutcorrectiecircuits. De set Clifford poorten bestaat uit de H-, S- en CX-poorten, en alle poorten die van die drie poorten kunnen worden gebouwd. De volgende Clifford poorten zijn algemene onderdelen van kwantumcircuits:

  • $X$, $Y$ en $Z$
  • $S$ en $S^\dagger$
  • $H$, of Hadamard
  • $CX$, $CY$ en $CZ$
  • SWAP en iSWAP

De Clifford simulator is beschikbaar in het QDKPython pakket voorQ#, OpenQASMen QiskitQIR programma's, maar is niet beschikbaar in de QDK extensie voor VS Code.

De GPU simulator

De GPU simulator is een volledig-toestandsimulator die gebruikmaakt van uw machine's GPU om veel uitvoeringen van uw kwantumprogramma parallel uit te voeren. Deze simulator kan programma's uitvoeren die elk type poort bevatten, maar is duur om uit te voeren. De simulator kan maximaal 27 qubits modelleren. De kracht van de machine GPU bepaalt de prestaties, maar de prestaties zijn optimaal voor programma's met ongeveer 20 qubits en veel opnamen.

De GPU simulator neemt QIR of Qiskit als invoer en is beschikbaar via bepaalde QDKPython pakket-API's, maar niet de VS Code-extensie. Er is ook uitgebreide ondersteuning voor ruismodellen op elk type kwantumpoort of -bewerking.

De CPU simulator

Net als de GPU simulator is de CPU simulator een volledige simulator die programma's kan uitvoeren die elk type kwantumpoort bevatten. De CPU simulator is echter langzamer omdat er niet meerdere opnamen parallel kunnen worden uitgevoerd. Deze simulator schaalt tot ongeveer 25 qubits, maar vertraagt exponentieel met meer qubits vanwege geheugenproblemen. Gebruik de CPU simulator wanneer uw computer geen GPU heeft, of wanneer uw programma weinig qubits heeft en u niet veel shots uitvoert.

De CPU simulator neemt QIR of Qiskit als invoer en is beschikbaar via bepaalde QDKPython pakket-API's, maar niet de VS Code-extensie. Er is ook uitgebreide ondersteuning voor ruismodellen op elk type kwantumpoort of -bewerking.

Welke simulator moet ik gebruiken?

De beste simulator die u kunt gebruiken, is afhankelijk van verschillende factoren, zoals:

  • Uw ontwikkelomgeving (VS Code of Python)
  • Het kwantumprogrammeerframework waarin u ontwikkelt
  • De complexiteit van uw programma en het aantal opnamen
  • De hardwaremogelijkheden van uw lokale computer
  • De Azure Quantum doelapparatuur of andere kwantumhardware waarop u uw programma's wilt uitvoeren
  • De ruismodellen die u wilt bouwen

De volgende tabel bevat een overzicht van de QDK opties en frameworks voor kwantumprogrammering die u voor elke simulator kunt gebruiken:

Simulator Availability Ondersteunde frameworks
Spaarzaam VS Code-extensie en Python -pakket Q#, OpenQASM, Qiskit
Clifford Python Pakket Q#,OpenQASM,Qiskit,QIR
GPU Python Pakket Qiskit, QIR
CPU Python Pakket Qiskit, QIR

Simulaties in de QDK extensie voor VS Code

De sparse-simulator is de enige beschikbare simulator in de QDK extensie voor VS Code. Als u de sparse simulator wilt gebruiken, voert u uw Q# of OpenQASM bestand uit in VS Code. U kunt beperkte ruismodellen toevoegen aan de sparsesimulator voor Q# programma's in VS Code, maar niet voor OpenQASM programma's.

Simulaties in het QDKPython pakket

De ontwikkelomgeving QDKPython ondersteunt meerdere kwantumframeworks en alle vier QDK simulators, maar niet alle simulators zijn compatibel met alle frameworks en API's.

In deze tabel ziet u de simulators die u kunt gebruiken voor elke Python API die een QDK simulator aanroept en het programmeerframework dat door elke API wordt ondersteund:

Python API Spaarzaam Clifford GPU CPU Programmeerframework
qsharp.run Q#
openqasm.run OpenQASM
qiskit.QSharpBackend Qiskit
simulation.NeutralAtomDevice QIR
simulation.NeutralAtomBackend Qiskit
simulation.run_qir QIR