Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você 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 você pode usar para modelar como seu programa é executado em um computador quântico de átomos neutros. Essas APIs modelam os tipos de ruído que ocorrem especificamente no hardware atom neutro. O QDKPython pacote permite que você crie modelos de ruído para simulações com a NoiseConfig classe.
Para obter mais informações sobre modelos de ruído em QDK simulações, consulte Como criar modelos de ruído para simulações quânticas no QDK.
Para obter instruções sobre como instalar e usar os QDK simuladores, consulte Como instalar e executar os QDK simuladores quânticos.
As APIs de simulação de dispositivos de átomos neutros
O QDK inclui duas APIs de simulação de dispositivos de átomos neutros, NeutralAtomDevice e NeutralAtomBackend. Essas APIs modelam o ruído que ocorre especificamente em computadores quânticos de átomos neutros. Para obter mais informações, consulte Simular programas quânticos em hardware de dispositivos de átomos neutros.
Tipos de ruído em simuladores de dispositivos de átomos neutros
Em dispositivos atom neutros, os lasers movem fisicamente os qubits entre diferentes zonas no dispositivo. O ruído pode ocorrer em dispositivos atom neutros nas seguintes situações:
- Movimentos de qubit entre zonas
- Operações de porta quântica em qubits na zona de interação
- Medidas de qubit na zona de medição
Dispositivos atom neutros têm um conjunto limitado de portas quânticas. As simulações de dispositivos de átomos neutros no QDK oferecem suporte a ruído das seguintes fontes.
| Fonte de ruído | Parâmetro do modelo de ruído | Descrição da origem |
|---|---|---|
| Porta quântica $S_X$ | sx |
Porta de um único qubit, inversão parcial de bit |
| Portão quântico $R_Z$ | rz |
Porta de qubit único, rotação da fase geral |
| Porta quântica $CZ$ | cz |
Porta de dois qubits, inversão de fase $Z$ controlada |
| Medição e reinicialização de qubit | mresetz |
Medição de um único qubit e redefinição para o estado 0 |
| Movimento do qubit | mov |
Movimentação de qubit entre zonas de dispositivo |
Para essas fontes de ruído, você pode configurar todos os tipos de ruído compatíveis com os QDK simuladores.
Seu programa quântico pode conter qualquer tipo de portão compatível com o perfil de destino QIR. 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 existente em dispositivos de átomos neutros: $S_X$, $R_Z$ e $CZ$. Quando você usa NeutralAtomDevice e NeutralAtomBackend para suas simulações, não configure o ruído em outras portas porque esse ruído não afeta a simulação. Por exemplo, se o seu programa contém portas Hadamard e você configura ruído para essas portas, o ruído não será exibido na simulação porque as portas Hadamard são decompostas em portas do dispositivo de átomos neutros.
As APIs de simulação atômica neutra convertem todas as medidas em seu programa em instruções de medida e redefinição. Para incluir o ruído de medida, configure o ruído em mresetz. O ruído em mz não está incluído na simulação.
Criar um modelo de ruído para uma simulação de um dispositivo de átomos neutros
Para criar um modelo de ruído para uma simulação de dispositivo de átomos neutros, siga estas etapas.
In VS Code, abra o menu Exibir e escolha Paleta de Comandos.
Insira Criar: Novo Jupyter Notebook. Um arquivo Jupyter Notebook vazio é aberto em uma nova guia.
Na primeira célula do notebook, importe 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 HistogramEm uma nova célula, defina o perfil de destino QIR do dispositivo e compile um programa OpenQASM em 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)Crie um
NoiseConfigobjeto e crie seu modelo de ruído. Por exemplo, execute o código a seguir em uma nova célula.noise = NoiseConfig() noise.sx.x = 0.01 noise.rz.z = 0.01 noise.cz.iy = 0.02 noise.mov.loss = 0.005Esse código produz o seguinte modelo de ruído, em que a taxa de ruído é a probabilidade de a origem causar o tipo correspondente de ruído.
Fonte de ruído Tipo de ruído Taxa de ruído porta $S_X$ Inversão de bit 1% Porta $R_Z$ Inversão de fase 1% porta $CZ$ Inversão de bit e inversão de fase no qubit de destino 2% Movimento do qubit Perda de qubit 0,5% Execute o simulador com o modelo de ruído e exiba um histograma dos resultados da medida. Por exemplo, execute o código a seguir em uma nova célula para executar 1.000 capturas do seu programa no simulador Clifford.
device = NeutralAtomDevice() results = device.simulate(qir, shots=1000, noise=noise, type="clifford") Histogram(results, labels="kets")