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 Microsoft Quantum Development Kit (QDK) inclui um conjunto de simuladores quânticos aos quais pode aceder a partir da extensão Visual Studio Code (VS Code) e da biblioteca QDKPython. Estes simuladores permitem-lhe testar como os seus programas quânticos correm em hardware quântico real. Este artigo explica como instalar os simuladores e como executar simulações básicas em Jupyter Notebook e VS Code.
Inclui QDK quatro simuladores quânticos:
- Simulador esparso
- Simulador Clifford
- Simulador de GPU
- Simulador de CPU
Para mais informações sobre os QDK simuladores quânticos, veja Visão Geral dos simuladores quânticos no QDK.
Pré-requisitos
Para seguir os passos deste artigo, precisa de instalar as seguintes ferramentas:
- Um ambiente Python (versão 3.10 ou superior), com Python e Pip
- A versão mais recente de Visual Studio Code (VS Code)
- As versões mais recentes da Python extensão e da Jupyter extensão em VS Code
Instalar os simuladores
Os quatro simuladores estão disponíveis na biblioteca QDKPython, mas apenas o simulador esparso está disponível na extensão QDKVS Code.
Para usar o simulador esparso na extensão VS Code, instale a extensão QDK para VS Code.
Para usar os simuladores quânticos em Python e Jupyter Notebook, instale a versão mais recente da biblioteca qdkPython com o extra jupyter:
pip install --upgrade "qdk[jupyter]"
O jupyter extra não é necessário para usar os simuladores, mas instala o qdk.widgets módulo. O módulo widgets permite-lhe criar visualizações a partir dos seus resultados de simulação em Jupyter Notebook.
Executar simulações usando a QDK extensão para VS Code
A extensão QDK para VS Code disponibiliza apenas o simulador esparso. Para executar o seu programa no simulador esparso em VS Code, abra um programa Q# (.qs) ou OpenQASM (.qasm) em VS Code e execute o ficheiro.
Por exemplo, siga estes passos para executar um dos programas de exemplo Q# que vêm com a QDK extensão:
- Em VS Code, abra o menu Ficheiro e selecione Novo Ficheiro de Texto.
- Dá ao ficheiro um nome que termine com a
.qsextensão. - No ficheiro vazio, introduza a amostra. Abre-se uma lista de exemplos de código incluídos.
- Escolha um exemplo de código, por exemplo exemplo Bell Pair.
- Para executar o programa no simulador esparso, selecione o comando Run na CodeLens acima da operação Main.
O VS Code terminal mostra a saída da simulação.
Note
Pode adicionar modelos de ruído limitado a simulações esparsas de programas Q# na QDK extensão. Para mais informações, veja Adicionar ruído de Pauli ao simulador esparso em VS Code.
Executa simulações usando a biblioteca QDKPython
A biblioteca QDKPython oferece os quatro simuladores. Como chamar os simuladores depende do simulador e do quadro de programação quântica.
Chame o simulador esparso
Pode invocar o simulador esparso para programas Q#, OpenQASM e Qiskit. A tabela seguinte mostra como chamar o simulador esparso a partir da biblioteca qdk para 10 execuções em cada framework de programação quântica suportado.
| Estrutura de programação | Python API | Exemplo de chamada |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, shots=10) |
| Qiskit | qiskit.QSharpBackend |
QSharpBackend().run(my_qiskit_program, shots=10) |
Note
Podes adicionar modelos de ruído ao simulador esparso com o noise parâmetro para programas Q# e OpenQASM, mas não podes adicionar modelos de ruído para programas Qiskit.
Por exemplo, siga estes passos para executar o programa Bell pair Q# num Jupyter caderno em VS Code:
Em VS Code, abra o menu Visualizar e selecione Paleta de Comandos.
Inserir Criar: Novo Jupyter Notebook. Um ficheiro vazio do caderno abre numa nova aba.
Na primeira célula, importa o
qsharpmódulo daqdkbiblioteca.from qdk import qsharpNuma célula nova, usa o
%%qsharpcomando mágico para escrever o código Q#.%%qsharp operation Main() : (Result, Result) { use (q1, q2) = (Qubit(), Qubit()); PrepareBellPair(q1, q2); (MResetZ(q1), MResetZ(q2)) } operation PrepareBellPair(q1 : Qubit, q2 : Qubit) : Unit { H(q1); CNOT(q1, q2); }Criar uma nova célula. Para executar o programa Q# no simulador esparso, chama a
runfunção doqsharpmódulo e especifica o número de disparos.qsharp.run("Main()", shots=10)
Invocar o simulador Clifford
Pode chamar o simulador Clifford para programas Q#, OpenQASM, Qiskit e QIR. A tabela seguinte mostra como chamar o simulador Clifford a partir da biblioteca qdk para 10 execuções em cada um dos frameworks de programação quântica suportados.
| Estrutura de programação | Python API | Exemplo de chamada |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", type='clifford', shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, type='clifford', shots=10) |
| Qiskit | simulation.NeutralAtomBackend |
simulation.NeutralAtomBackend().run(my_qiskit_program, simulator_type='clifford', shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type='clifford', shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type='clifford', shots=10) |
Note
As NeutralAtomDevice APIs e NeutralAtomBackend destinam-se especificamente a simulações em computadores quânticos de átomos neutros. Para mais informações, consulte Visão geral do simulador de dispositivo de átomos neutros.
Por exemplo, o seguinte código Python cria um programa OpenQASM simples e executa-o no simulador Clifford:
from qdk.openqasm import run
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
run(qasm_code, type='clifford', shots=10)
Chamar os simuladores da GPU e do CPU
Pode invocar os simuladores de GPU e CPU para programas em Qiskit e QIR. A tabela seguinte mostra como chamar o simulador de GPU a partir da biblioteca qdk para 10 execuções em cada uma das estruturas de programação quântica suportadas. Para chamar o simulador de CPU, substitua 'gpu' por 'cpu' para os parâmetros do tipo de simulador.
| Estrutura de programação | Python API | Exemplo de chamada |
|---|---|---|
| Qiskit | simulation.NeutralAtomBackend |
simulation.NeutralAtomBackend().run(my_qiskit_program, simulator_type='gpu', shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type='gpu', shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type='gpu', shots=10) |
Por exemplo, o seguinte código Python converte um programa OpenQASM simples em QIR e executa o QIR no simulador da GPU:
from qdk.openqasm import compile#, ProgramType
from qdk.simulation import run_qir
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
qir = compile(qasm_code)
run_qir(qir, type='gpu', shots=10)