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.
A extensão MicrosoftQuantum Development Kit (QDK) para Visual Studio Code (VS Code) corre Q# e OpenQASM programas automaticamente no seu simulador esparso local.
Este artigo explica como executar programas no simulador local e como adicionar Pauli ruído às Q# simulações. Para usar os outros QDK simuladores de Python, veja Executar simulações quânticas com o QDKPython pacote.
Como funciona o simulador local
O simulador esparso armazena apenas as amplitudes não nulas de um estado quântico. Quando a maioria das amplitudes da base computacional é zero, esta representação consome menos memória e pode simular alguns programas com mais qubits do que um simulador de estado completo, que armazena todas as amplitudes.
O benefício de desempenho depende de o estado quântico permanecer esparso na base computacional. Para mais informações, consulte Jaques e Häner (arXiv:2105.01533).
Executar um programa quântico em VS Code
- Instale a QDK extensão para VS Code.
- Abra um Q# ficheiro (
.qs) ou OpenQASM (.qasm). - Selecione Executar a partir da lente de código no início do ficheiro ou acima da Q#
Mainoperação.
A saída da simulação aparece no VS Code terminal. Para programas Q# , selecione Debug para inspecionar o estado quântico do programa durante a execução.
Adicionar Pauli ruído às Q# simulações
O simulador esparso suporta Pauli de ruído para Q# programas na QDK extensão. Utilize ConfigurePauliNoise para definir as probabilidades de erros de Pauli $X$, $Y$ e $Z$ num programa.
QDK definições de extensão também suportam um modelo global Pauli de ruído.
Note
Não podes adicionar um modelo de ruído a uma OpenQASM simulação na QDK extensão. Para construir modelos de ruído específicos da operação para programas Q# ou OpenQASM, use o pacote QDKPython e a API NoiseConfig.
Adicionar Pauli ruído nas VS Code definições
- Em VS Code, defina ruído global Pauli para Q# programas na Q#> definição do utilizador Simulation:Pauli Ruído para a QDK extensão.
As definições de ruído aplicam-se aos resultados de histogramas para todas as portas, medições e qubits em todos Q# os programas em VS Code.
Sem ruído, um histograma deste GHZ programa de amostragem mostra $\ket{00000}$ para cerca de metade das medições e $\ket{11111}$ para a outra metade.
import Std.Diagnostics.*;
import Std.Measurement.*;
operation Main() : Result[] {
let num = 5;
return GHZSample(num);
}
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
A uma taxa de ruído de 1% de inversão de bits, os resultados começam a espalhar-se. A 25%, o histograma é indistinguível do ruído puro.
Adicionar Pauli ruído a programas individuais Q#
Utilize ConfigurePauliNoise para definir ou alterar o modelo de ruído de um programa Q# e controlar quando e onde ocorre ruído.
Note
As VS Code definições adicionam ruído a todos os Q# programas, mas ConfigurePauliNoise sobrepõe essas definições para o programa que os chama.
No programa anterior, adicionar ruído imediatamente após a atribuição de qubits:
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
// 5% bit-flip noise applies to all subsequent operations.
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Para aplicar ruído apenas à operação de medição, defina o modelo de ruído imediatamente antes da medição e limpe-o depois:
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
// Noise applies only to the measurement operation.
ConfigurePauliNoise(0.05, 0.0, 0.0);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Para alterar ou eliminar a configuração de ruído em diferentes pontos do seu programa, chame ConfigurePauliNoise várias vezes. Por exemplo, aplicar ruído de 5% bit-flip à porta de Hadamard e depois limpar a configuração de ruído para o resto do programa.
operation GHZSample(n: Int) : Result[] {
use qs = Qubit[n];
// Noise applies to the H operation.
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
// Clear the noise settings.
ConfigurePauliNoise(0.0, 0.0, 0.0);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Outras Q# funções de ruído
ConfigurePauliNoise suportam qualquer Pauli modelo de ruído. Utilize estas funções e operações do espaço de nomes Std.Diagnostics para configurar ou aplicar ruído:
| Função | Description | Exemplo |
|---|---|---|
ConfigurePauliNoise |
Define o ruído Pauli para uma simulação. Passe as probabilidades de Pauli erros de $X$, $Y$ e $Z$ ou um Pauli modelo de ruído. A configuração aplica-se a todas as portas, medições e qubits subsequentes num programa Q# e sobrepõe-se às definições de ruído da extensão VS Code. Chamadas subsequentes sobrepõem-se a configurações anteriores. | ConfigurePauliNoise(0.1, 0.0, 0.5)ou ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Retorna um modelo de ruído com apenas Pauli erros de $X$ com a probabilidade especificada. | 10% de ruído de inversão de bits:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Retorna um modelo de ruído com apenas Pauli erros de $Z$ com a probabilidade especificada. | 10% ruído de inversão de faseConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Devolve um modelo de ruído com probabilidades iguais de erros Pauli de $X$, $Y$ e $Z$. | 6% ruído despolarizante:ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.02, 0.02, 0.02) |
NoNoise |
Devolve um modelo com probabilidades de erro zero. Passe-o a ConfigurePauliNoise para limpar a configuração atual de ruído. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Aplica ruído configurado a um único qubit durante a simulação. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |