Visão geral dos simuladores quânticos na QDK

O MicrosoftQuantum Development Kit (QDK) inclui um conjunto de simuladores quânticos que permitem executar programas quânticos na sua máquina local. Usa os simuladores locais para iterar nos programas antes de os submeter para execução em 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. Este simulador representa estados de qubits como vetores esparsos para tirar partido da álgebra matricial esparsa para simulações rápidas, especialmente para programas que não geram muitos estados de superposição. 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 extensão QDK para Visual Studio Code (VS Code) como na biblioteca QDKPython. Este simulador é o único disponível na QDK extensão, por isso o compilador chama automaticamente o simulador esparso quando executa Q# e OpenQASM programa em VS Code. Com o simulador esparso no VS Code, pode usar a Q#DumpMachine função ou o depurador para mostrar vetores de estado dos qubits em diferentes pontos da simulação.

Tanto a extensão VS Code como a biblioteca Python suportam modelos de ruído para simulações esparsas de programas Q# e OpenQASM. Apenas a biblioteca Python suporta simulação esparsa para programas Qiskit, mas sem suporte para modelos de ruído.

Para 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 contenham apenas Clifford portas. Clifford As portas são componentes comuns dos circuitos de correção de erros. O conjunto de Clifford portas consiste nos portões H, S e CX, e em todos os portões que podem ser construídos a partir desses três portões. As seguintes Clifford portas são componentes comuns dos 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 os programas Q#, OpenQASM, Qiskit e QIR, mas não está disponível na extensão QDK para VS Code.

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. Este simulador pode executar programas que contenham qualquer tipo de porta, mas é caro de executar. 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 simulador GPU recebe QIR ou Qiskit como entrada, e está disponível através de certas APIs de biblioteca QDKPython, mas não da extensão VS Code. 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 pode executar programas que contenham qualquer tipo de porta quântica. No entanto, o CPU simulador é mais lento porque não consegue executar vários tiros 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. Use o CPU simulador quando a sua máquina não tiver um GPU, ou quando o seu programa tiver poucos qubits e não estiver a correr muitas execuções.

O simulador CPU recebe QIR ou Qiskit como entrada, e está disponível através de certas APIs de biblioteca QDKPython, mas não da extensão VS Code. 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?

O melhor simulador a utilizar depende de vários fatores, tais como:

  • O seu ambiente de desenvolvimento (VS Code ou Python)
  • O framework de programação quântica em que estás a desenvolver
  • 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 as QDK opções e frameworks de programação quântica que pode usar para cada simulador:

Simulador Availability Estruturas suportadas
Dispersos Extensão VS Code e biblioteca Python Q#, OpenQASM, Qiskit
Clifford Biblioteca Python Q#, OpenQASM, Qiskit, QIR
GPU Biblioteca Python Qiskit, QIR
CPU Biblioteca Python Qiskit, QIR

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

O simulador esparso é o único simulador disponível na QDK extensão do VS Code. Para usar o simulador esparso, executa o seu Q# ficheiro ou OpenQASM no VS Code. Podes adicionar modelos de ruído limitado ao simulador esparso para Q# programas no VS Code, mas não para OpenQASM programas.

Simulações na biblioteca QDKPython

O ambiente de desenvolvimento QDKPython suporta múltiplos frameworks quânticos e os quatro simuladores QDK, mas nem todos os simuladores são compatíveis com todos os frameworks e APIs.

Esta tabela mostra os simuladores que pode usar para cada Python API que chama um QDK simulador, e o framework de programação que cada API suporta:

Python API (Interface de Programação de Aplicações) Dispersos 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