Visão geral dos simuladores quânticos no QDK

O MicrosoftQuantum Development Kit (QDK) inclui simuladores quânticos que executam programas quânticos em seu computador local. Use esses simuladores locais para testar e desenvolver seus programas antes de enviá-los aos Azure Quantum alvos.

O QDK fornece quatro simuladores primários para executar programas quânticos:

  • O simulador esparso
  • O simulador do estabilizador
  • O GPU simulador
  • O CPU simulador

O simulador esparso

O simulador esparso representa estados qubit como vetores esparsos e usa álgebra de matriz esparsa para simular rapidamente programas que geram poucas amplitudes não zero. É o simulador padrão para os programas Q# e OpenQASM na extensão QDK e para as APIs openqasm.run e Pythonqsharp.run. Use o simulador esparso quando desejar simulações rápidas de Q#, OpenQASMou Qiskit programas ou quando quiser exibir o estado quântico do programa durante a simulação.

O simulador esparso está disponível tanto na QDK extensão para Visual Studio Code (VS Code) quanto no QDKPython pacote. Esse simulador é o único simulador disponível na QDK extensão, portanto, a extensão o usa automaticamente quando você executa Q# e OpenQASM programa em VS Code. Em VS Code, use a Q#DumpMachine função ou o depurador para exibir vetores de estado qubit em diferentes pontos na simulação.

Tanto a extensão VS Code quanto o pacote Python dão suporte a modelos de ruído para simulações esparsas de programas Q# e OpenQASM. Somente o Python pacote dá suporte à simulação esparsa de programas Qiskit, mas não dá suporte a modelos de ruído para simulações Qiskit.

Para obter mais informações sobre como executar simulações na QDK extensão, consulte Executar simulações quânticas na QDK extensão para Visual Studio Code.

O simulador do estabilizador

O simulador de estabilizador simula rapidamente e com eficiência programas dominados por Clifford com milhares de qubits. Clifford as portas são componentes comuns de circuitos de correção de erros quânticos. Clifford as operações não aumentam o número de ramificações estabilizadoras, portanto, o simulador pode aplicá-las com eficiência 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 estabilizador também usa ramificação de estabilizador para simular circuitos com um número limitado de operações não Clifford. O simulador dá suporte às 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 que não seja Clifford pode aumentar o número de ramificações estabilizadoras. Adicionar operações não-Clifford pode aumentar o uso de memória e o tempo de captura exponencialmente. Use o simulador de estabilizador para circuitos amplos com predominância de operações Clifford e um número modesto de operações que não sejam Clifford. Use um simulador de estado esparso ou de estado completo para circuitos que têm muitas operações não-Clifford.

O simulador estabilizador dá suporte à execução adaptável, ao ruído Pauli e à perda de qubit. Ele está disponível no pacote QDKQ# para os programas OpenQASM, QIR, Qiskit e QDK, mas não está disponível na extensão VS Code para Python.

Em Python APIs com um seletor de simulador, use "stabilizer" ou "clifford" para selecionar o simulador do estabilizador.

O GPU simulador

O simulador GPU é um simulador de estado completo que utiliza o GPU da sua máquina para executar várias execuções do seu programa quântico em paralelo. O simulador dá suporte a todos os tipos de portas lógicas, mas requer recursos de computação significativos. O simulador pode modelar até 27 qubits. A capacidade do GPU da sua máquina determina o desempenho, mas o desempenho é otimizado para programas com aproximadamente 20 qubits e uma grande quantidade de execuções.

O GPU simulador aceita Qiskit ou QIR como entrada por meio de determinadas QDKPython APIs de pacote. A VS Code extensão não dá suporte ao GPU simulador. Há também suporte avançado para modelos de ruído em qualquer tipo de porta quântica ou operação.

O CPU simulador

Assim 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 pode executar várias execuções em paralelo. Esse simulador escala até cerca de 25 qubits, mas torna-se mais lento exponencialmente com mais qubits devido a problemas de memória. Use o CPU simulador quando o computador não tiver um GPU, ou quando o programa tiver poucos qubits e não exigir muitos shots.

O CPU simulador aceita entrada Qiskit ou QIR. Você pode usá-lo por meio de determinadas QDKPython APIs de pacote, mas não por meio da VS Code extensão. Há também suporte avançado para modelos de ruído em qualquer tipo de porta quântica ou operação.

Que simulador devo usar?

Considere esses fatores ao escolher um simulador:

  • Seu ambiente de desenvolvimento (VS Code ou Python)
  • A estrutura de programação quântica que você usa
  • A complexidade do seu programa e o número de tentativas
  • Os recursos de hardware do computador local
  • Os destinos Azure Quantum ou outro hardware quântico no qual você deseja executar seus programas.
  • Os modelos de ruído que você deseja criar

A tabela a seguir resume a disponibilidade de cada QDK simulador e as estruturas de programação quântica com suporte:

Simulador Disponibilidade Estruturas com suporte
Esparsos VS Code extensão e pacote Python Q#, OpenQASM, Qiskit
Stabilizer Python pacote Q#, OpenQASM, , QiskitQIR
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 oferece suporte apenas ao simulador esparso. Para usar o simulador esparso, execute seu arquivo Q# ou OpenQASM em VS Code. Você pode adicionar Pauli modelos de ruído a simulações esparsas de Q# programas em VS Code, mas não a OpenQASM programas.

Simulações no QDKPython pacote

O QDKPython pacote dá suporte a várias estruturas de programação quântica e a todos os quatro QDK simuladores. A compatibilidade varia de acordo com o framework e a API.

A tabela a seguir lista os simuladores e as estruturas de programação compatíveis com cada Python API:

Python Interface de Programação de Aplicações (API) Esparsos Stabilizer GPU CPU Estrutura de programação
qsharp.run Supported Supported Sem suporte Sem suporte Q#
openqasm.run Supported Supported Sem suporte Sem suporte OpenQASM
qiskit.QSharpBackend Supported Sem suporte Sem suporte Sem suporte Qiskit
simulation.NeutralAtomDevice Sem suporte Supported Supported Supported QIR
qiskit.NeutralAtomBackend Sem suporte Supported Supported Supported Qiskit
simulation.run_qir Sem suporte Supported Supported Supported QIR