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 APIs de simulação de dispositivos de átomos neutros que pode usar para modelar como o seu programa corre num computador quântico de átomos neutros. Estas APIs modelam os tipos de ruído que ocorrem especificamente em hardware de átomos neutros. O pacote QDKPython permite-te criar modelos de ruído para simulações com a classe NoiseConfig.
Para mais informações sobre modelos de ruído em QDK simulações, veja Como construir modelos de ruído para simulações quânticas em .QDK
Para instruções sobre como instalar e usar os QDK simuladores, veja Como instalar e executar os QDK simuladores quânticos.
As APIs de simulação de dispositivos de átomos neutros
Inclui QDK duas APIs de simulação de dispositivos de átomos neutros, NeutralAtomDevice e NeutralAtomBackend. Estas APIs modelam o ruído que ocorre especificamente em computadores quânticos de átomos neutros. Para mais informações, veja Simular programas quânticos em hardware de dispositivos de átomos neutros.
Tipos de ruído em simuladores de dispositivos de átomos neutros
Em dispositivos de átomos neutros, os lasers movem fisicamente os qubits entre diferentes zonas do dispositivo. O ruído pode ocorrer em dispositivos de átomos neutros nas seguintes situações:
- Movimentos de qubits entre zonas
- Operações de porta quântica em qubits na zona de interação
- Medições de qubits na zona de medição
Os dispositivos de átomos neutros têm um conjunto limitado de portas quânticas. As simulações de dispositivos com átomos neutros no QDK suportam ruído proveniente das seguintes fontes.
| Fonte de ruído | Parâmetro do modelo de ruído | Descrição da fonte |
|---|---|---|
| $S_X$ porta quântica | sx |
Porta de qubit único, inversão de meio bit |
| $R_Z$ porta quântica | rz |
Porta de qubit único, rotação de fase geral |
| Porta quântica $CZ$ | cz |
Porta de dois qubits, inversão de fase controlada $Z$ |
| Medição e reset do qubit | mresetz |
Medição de um único qubit e reset para o estado 0 |
| Movimento dos Qubits | mov |
Movimento dos qubits entre zonas de dispositivos |
Para estas fontes de ruído, podes configurar todos os tipos de ruído que os QDK simuladores suportam.
O seu programa quântico pode conter qualquer tipo de porta que o perfil alvo QIR suporte. As APIs de simulação de átomos neutros compilam o QIR de entrada e decompõem as portas do seu programa no conjunto de portas que existem em dispositivos de átomos neutros: $S_X$, $R_Z$ e $CZ$. Quando usas NeutralAtomDevice e NeutralAtomBackend para as tuas simulações, não configures ruído noutras portas porque esse ruído não afeta a simulação. Por exemplo, se o teu programa contém portas de Hadamard e configuras ruído para portas de Hadamard, esse ruído não aparece na simulação porque as portas de Hadamard são decompostas em portas de dispositivos atómicos neutros.
As APIs de simulação de átomos neutros convertem todas as medições no seu programa em instruções de medição e reposição. Para incluir o ruído de medição, configure o ruído em mresetz. O ruído em mz não está incluído na simulação.
Construir um modelo de ruído para uma simulação de dispositivo de átomos neutros
Para construir um modelo de ruído para uma simulação de dispositivo de átomos neutros, siga estes passos.
No VS Code, abra o menu Exibir e escolha Paleta de comandos.
Inserir Criar: Novo Jupyter Notebook. Um ficheiro vazio Jupyter Notebook abre-se num novo separador.
Na primeira célula do caderno, importa os objetos necessários Python .
from qdk import init, TargetProfile from qdk.openqasm import compile from qdk.simulation import NeutralAtomDevice, NoiseConfig from qdk.widgets import HistogramNuma nova célula, defina o perfil alvo QIR do dispositivo e compile um programa OpenQASM para QIR.
init(target_profile=TargetProfile.Base) qasm_src = """ include "stdgates.inc"; qubit[2] qs; bit[2] r; h qs[0]; cx qs[0], qs[1]; r = measure qs; """ qir = compile(qasm_src)Cria um
NoiseConfigobjeto e constrói o teu modelo de ruído. Por exemplo, execute o código seguinte numa nova célula.noise = NoiseConfig() noise.sx.x = 0.01 noise.rz.z = 0.01 noise.cz.iy = 0.02 noise.mov.loss = 0.005Este código produz o seguinte modelo de ruído, onde a taxa de ruído é a probabilidade de a fonte causar o tipo correspondente de ruído.
Fonte de ruído Tipo de ruído Taxa de ruído $S_X$ porta Inversão de bits 1% Porta $R_Z$ Inversão de fase 1% Portão $CZ$ Inversão de bit e inversão de fase no qubit alvo 2% Movimento dos Qubits Perda de qubits 0,5% Executa o simulador com o modelo de ruído e visualiza um histograma dos resultados das medições. Por exemplo, execute o código seguinte numa nova célula para executar 1.000 imagens do seu programa no simulador Clifford.
device = NeutralAtomDevice() results = device.simulate(qir, shots=1000, noise=noise, type="clifford") Histogram(results, labels="kets")