Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O MicrosoftQuantum Development Kit (QDK) inclui simuladores quânticos que executam programas quânticos na sua máquina local. Utilize estes simuladores locais para testar e desenvolver os seus programas antes de os submeter aos Azure Quantum destinos.
O QDK fornece quatro simuladores principais para executar programas quânticos:
- O simulador esparso
- Simulador do estabilizador
- O GPU simulador
- O CPU simulador
O simulador esparso
O simulador esparso representa os estados dos qubits como vetores esparsos e utiliza álgebra de matrizes esparsas para simular rapidamente programas que geram poucas amplitudes não nulas. É o simulador padrão para Q# e QDK programas na extensão qsharp.run e para as APIs openqasm.run e PythonOpenQASM. Use o simulador esparso quando quiser simulações rápidas de Q#, OpenQASM, ou Qiskit programas, ou quando quiser mostrar o estado quântico do seu programa durante a simulação.
O simulador esparso está disponível tanto na QDK extensão para Visual Studio Code (VS Code) como no QDKPython pacote. Este simulador é o único disponível na extensão QDK, por isso a extensão usa-o automaticamente quando executa programas Q# e OpenQASM em VS Code. Em VS Code, usa a Q#DumpMachine função ou o depurador para mostrar vetores de estado do qubit em diferentes pontos da simulação.
Tanto a VS Code extensão como o Python pacote suportam modelos de ruído para simulações esparsas de Q# e OpenQASM programas. Apenas o pacote Python suporta simulação esparsa de programas Qiskit, mas não suporta modelos de ruído para simulações Qiskit.
Para mais informações sobre como executar simulações na QDK extensão, veja Executar simulações quânticas na QDK extensão para Visual Studio Code.
O simulador do estabilizador
O simulador estabilizador simula rápida e eficientemente programas dominados por Clifford com milhares de qubits. Clifford portas são componentes comuns dos circuitos de correção quântica de erros. Clifford As operações não aumentam o número de ramos estabilizadores, pelo que o simulador pode aplicá-los de forma eficiente mesmo em circuitos largos. As operações comuns Clifford incluem:
- $X$, $Y$ e $Z$
- $S$ e $S^\dagger$
- $H$, ou Hadamard
- $CX$, $CY$ e $CZ$
- $SWAP$
O simulador de estabilizadores também utiliza ramificação de estabilizadores para simular circuitos com um número limitado de operações não-Clifford. O simulador suporta as seguintes operações não Clifford:
- $T$ e $T^\dagger$
- Rotações de ângulo arbitrário $R_X$, $R_Y$, $R_Z$, $R_{XX}$, $R_{YY}$ e $R_{ZZ}$
Cada operação não-Clifford pode aumentar o número de ramos estabilizadores. Adicionar operações não-Clifford pode aumentar exponencialmente o uso de memória e o tempo de execução. Use o simulador estabilizador para circuitos amplos com maioritariamente operações Clifford e um número modesto de operações não Clifford. Usa um simulador esparso ou de estado completo para circuitos que têm muitas operações não-Clifford.
O simulador estabilizador suporta execução adaptativa, Pauli ruído e perda de qubits. Está disponível no pacote QDKPython para Q#, OpenQASM, Qiskit e QIR programas, mas não está disponível na extensão QDK para VS Code.
Em Python APIs com seletor de simulador, use "stabilizer" ou "clifford" para selecionar o simulador estabilizador.
O GPU simulador
O GPU simulador é um simulador de estado completo que usa a tua máquina GPU para executar várias execuções do teu programa quântico em paralelo. O simulador suporta todos os tipos de portas, mas requer recursos computacionais significativos. O simulador pode modelar até 27 qubits. O poder de processamento da tua máquina GPU determina o desempenho, mas o desempenho é ideal para programas que têm cerca de 20 qubits e muitas execuções.
O GPU simulador aceita QIR ou Qiskit como entrada através de certas QDKPython APIs de pacotes. A VS Code extensão não suporta o GPU simulador. Existe também um amplo suporte para modelos de ruído em qualquer tipo de porta quântica ou operação.
O CPU simulador
Tal como o GPU simulador, o CPU simulador é um simulador de estado completo que executa programas com qualquer tipo de porta quântica. Mas é mais lento porque não consegue fazer várias execuções em paralelo. Este simulador pode aumentar até aproximadamente 25 qubits, mas desacelera exponencialmente à medida que o número de qubits aumenta, devido a problemas de memória. Usa o CPU simulador quando a tua máquina não tem um GPU, ou quando o teu programa tiver poucos qubits e não precisar de muitos shots.
O simulador CPU aceita entrada QIR ou Qiskit. Podes usá-lo através de certas QDKPython APIs de pacotes, mas não através da VS Code extensão. Há também um suporte rico para modelos de ruído em qualquer tipo de porta quântica ou operação.
Que simulador devo usar?
Considere estes fatores ao escolher um simulador:
- O seu ambiente de desenvolvimento (VS Code ou Python)
- O framework de programação quântica que usas
- A complexidade do teu programa e o número de disparos
- As capacidades de hardware da sua máquina local
- Os Azure Quantum alvos ou outro hardware quântico onde pretende executar os seus programas
- Os modelos de ruído que queres construir
A tabela seguinte resume a disponibilidade de cada simulador QDK e os frameworks de programação quântica suportados:
| Simulador | Availability | Estruturas suportadas |
|---|---|---|
| Dispersos | VS Code Extensão e Python pacote | Q#, OpenQASM, Qiskit |
| Stabilizer | Python Pacote | Q#, OpenQASM, Qiskit, QIR |
| GPU | Python Pacote | Qiskit, QIR |
| CPU | Python Pacote | Qiskit, QIR |
Simulações na QDK extensão para VS Code
A extensão QDK para VS Code suporta apenas o simulador esparso. Para usar o simulador de esparsão, execute o seu ficheiro Q# ou OpenQASM em VS Code. Podes adicionar Pauli modelos de ruído a simulações esparsas em VS Code de programas Q#, mas não a programas OpenQASM.
Simulações no QDKPython pacote
O QDKPython pacote suporta múltiplos frameworks de programação quântica e os quatro QDK simuladores. A compatibilidade varia consoante o framework e a API.
A tabela seguinte lista os simuladores e frameworks de programação que cada Python API suporta:
| Python API (Interface de Programação de Aplicações) | Dispersos | Stabilizer | GPU | CPU | Estrutura de programação |
|---|---|---|---|---|---|
qsharp.run |
Supported | Supported | Não suportado | Não suportado | Q# |
openqasm.run |
Supported | Supported | Não suportado | Não suportado | OpenQASM |
qiskit.QSharpBackend |
Supported | Não suportado | Não suportado | Não suportado | Qiskit |
simulation.NeutralAtomDevice |
Não suportado | Supported | Supported | Supported | QIR |
qiskit.NeutralAtomBackend |
Não suportado | Supported | Supported | Supported | Qiskit |
simulation.run_qir |
Não suportado | Supported | Supported | Supported | QIR |