Visão geral dos simuladores quânticos no QDK

O MicrosoftQuantum Development Kit (QDK) inclui um conjunto de simuladores quânticos que permitem executar programas quânticos em seu computador local. Use os simuladores locais para iterar nos seus programas antes de enviá-los para execução nos destinos Azure Quantum.

O QDK tem quatro simuladores.

  • O simulador esparso
  • O Clifford simulador
  • O GPU simulador
  • O CPU simulador

O simulador esparso

O simulador esparso é o simulador padrão no QDK. Esse simulador representa estados qubit como vetores esparsos para aproveitar a álgebra de matriz esparsa para simulações rápidas, especialmente para programas que não geram muitos estados de superposição. 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 na extensão QDK para Visual Studio Code (VS Code) e na biblioteca QDKPython. Esse simulador é o único simulador disponível na QDK extensão, portanto, o compilador chama automaticamente o simulador esparso quando você executa Q# e OpenQASM programa no VS Code. Com o simulador esparso no VS Code, você pode usar a Q#DumpMachine função ou o depurador para exibir vetores de estado qubit em diferentes pontos na simulação.

A extensão vs code e a biblioteca Python dão suporte a modelos de ruído para simulações esparsas de programas Q# e OpenQASM. Somente a biblioteca Python dá suporte a simulação esparsa para programas Qiskit, mas sem suporte ao modelo de ruído.

Para obter mais informações sobre o simulador esparso, consulte o simulador esparso.

O Clifford simulador

O Clifford simulador é rápido e eficiente para programas com até milhares de qubits, mas só pode simular programas que contêm apenas Clifford portões. Clifford os portões são componentes comuns de circuitos de correção de erro. O conjunto de Clifford portões consiste nos portões H, S e CX, e todos os portões que podem ser construídos a partir desses três portões. Os seguintes Clifford portões são componentes comuns de circuitos quânticos:

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

O simulador Clifford está disponível na biblioteca QDKPython para programas Q#, OpenQASM, Qiskit e QIR, mas não está disponível na extensão QDK para VS Code.

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. Esse simulador pode executar programas que contêm qualquer tipo de portão, mas é caro de executar. 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 simulador GPU usa QIR ou Qiskit como entrada e está disponível por meio de determinadas APIs de biblioteca QDKPython, mas não a extensão vs code. 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 pode executar programas que contêm qualquer tipo de porta quântica. No entanto, o CPU simulador é mais lento porque não pode executar vários tiros 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 simulador CPU quando sua máquina não tiver um GPU ou quando o programa tiver poucos qubits e não exigir muitas execuções.

O simulador CPU usa QIR ou Qiskit como entrada e está disponível por meio de determinadas APIs de biblioteca QDKPython, mas não a extensão vs code. 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?

O melhor simulador a ser usado depende de vários fatores, como:

  • Seu ambiente de desenvolvimento (VS Code ou Python)
  • A estrutura de programação quântica na qual você está desenvolvendo
  • 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 as opções e as QDK estruturas de programação quântica que você pode usar para cada simulador:

Simulador Disponibilidade Estruturas com suporte
Esparsos Extensão do VS Code e biblioteca Python Q#, OpenQASM, Qiskit
Clifford Biblioteca do Python Q#, OpenQASM, , QiskitQIR
GPU Biblioteca do Python Qiskit, QIR
CPU Biblioteca do Python Qiskit, QIR

Simulações na extensão QDK do VS Code

O simulador esparso é o único simulador disponível na QDK extensão do VS Code. Para usar o simulador esparso, execute o arquivo Q# ou OpenQASM no VS Code. Você pode adicionar modelos de ruído limitados ao simulador esparso para programas Q# no VS Code, mas não para programas OpenQASM.

Simulações na biblioteca QDKPython

O ambiente de desenvolvimento QDKPython dá suporte a várias estruturas quânticas e a todos os quatro simuladores de QDK, mas nem todos os simuladores são compatíveis com todas as estruturas e APIs.

Esta tabela mostra os simuladores que você pode usar para cada Python API que chama um QDK simulador e a estrutura de programação compatível com cada API:

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