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 simulador esparso utiliza uma representação esparsa de vetores de estado quântico. Um estado quântico esparso é um estado em que a maioria dos coeficientes de amplitude é zero. Representações esparsas permitem que o simulador esparso minimize o volume de memória necessário para representar estados quânticos, o que permite simulações em um número maior de qubits. O simulador esparso é eficiente para programas com estados quânticos esparsos na base computacional. O simulador esparso permite que os usuários explorem aplicativos maiores do que um simulador de estado completo porque simuladores de estado completo desperdiçam memória e tempo em um número exponencialmente grande de amplitudes zero.
Para obter mais informações sobre o simulador esparso, consulte Jaques e Häner (arXiv:2105.01533).
Execute o simulador parcimonioso
O simulador esparso é o simulador local padrão na extensão MicrosoftQuantum Development Kit (QDK) para Visual Studio Code (VS Code). Como usar o simulador esparso depende do seu ambiente de desenvolvimento.
| Ambiente de desenvolvimento | Como chamar o simulador esparso |
|---|---|
| Em um programa Q# ou OpenQASM em VS Code | Execute o arquivo Q# ou o arquivo OpenQASM |
Em um programa Python com a biblioteca qdk |
qsharp.runou openqasm.runou qiskit.QSharpBackend |
Em uma célula de %%qsharp notebook |
Chame a operação de entrada do programa, por exemplo:Main() |
Adicionar Pauli ruído ao simulador esparso em VS Code
O simulador esparso suporta a adição de Pauli ruído a simulações de seus Q# programas com a VS Code extensão. Esse recurso permite que você simule os efeitos do ruído em operações e medidas quânticas. Para especificar um modelo de ruído no programa Q#, use a função ConfigurePauliNoise. A função define probabilidades para que os operadores Pauli, X, Y e Z, bem como o ruído, ocorram. Você também pode definir modelos globais de ruído nas configurações de extensão.
Adicionar Pauli ruído usando as VS Code configurações
Para definir o ruído global
As configurações de ruído se aplicam aos resultados do histograma para todas as portas, medições e qubits em todos os Q# programas em VS Code.
Por exemplo, um histograma do seguinte programa de exemplo em GHz, configurado sem ruído, mostra um resultado de $\ket{00000}$ para aproximadamente 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;
}
Se você adicionar uma taxa de ruído de 1% de bit-flip, os resultados começarão a se dispersar. Com 25% de ruído de bit-flip, o histograma torna-se indistinguível de um ruído puro.
Adicione ruído individual a programas PauliQ#
Use a ConfigurePauliNoise função para definir ou modificar o modelo de ruído para programas individuais Q# . A ConfigurePauliNoise função fornece controle sobre quando e onde o ruído ocorre em seus Q# programas.
Observação
Se você configurar o ruído nas VS Code configurações, o ruído será aplicado a todos os Q# programas. No entanto, a ConfigurePauliNoise função substitui as VS Code configurações de ruído para o programa que chama a função.
Por exemplo, no programa anterior, você pode adicionar ruído imediatamente após a alocação de qubit.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
// 5% bit-flip noise applies to all operations
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Ou você pode adicionar ruído apenas à operação de medição.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
// Noise applies to only the measurement operation
ConfigurePauliNoise(0.05, 0.0, 0.0);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Para modificar ou limpar as configurações de ruído em diferentes pontos do programa, chame ConfigurePauliNoise várias vezes. Por exemplo, você pode definir 5% de ruído de inversão de bits para a porta Hadamard e, em seguida, não aplicar ruído para o restante 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
A ConfigureNoiseFunction função é suficiente para modelar qualquer tipo de Pauli ruído em seu programa, mas Q# tem outras funções de ruído que você também pode usar. Estão disponíveis as seguintes funções na biblioteca Std.Diagnostics para ajustar o ruído em programas Q#:
| Função | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Configura o Pauli ruído para uma execução de simulador. Os parâmetros representam as probabilidades de ruído nas portas X, Y e Z Pauli. A configuração de ruído se aplica a todas as portas, medições e qubits subsequentes em um programa Q#. Substitui as configurações de ruído da extensão VS Code. Chamadas subsequentes para ConfigurePauliNoise substituem o ruído configurado por chamadas anteriores. |
ConfigurePauliNoise(0.1, 0.0, 0.5)ou ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Configura apenas o ruído do portão X com a probabilidade especificada. | 10% ruído de inversão de bitsConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Configura apenas o ruído do portão Z com a probabilidade especificada. | 10% ruído de inversão de fase:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Configura o ruído como porta X, Y ou Z com probabilidades iguais. | Ruído despolarizante de 6%ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.2, 0.2, 0.2) |
NoNoise |
Redefine o modelo de ruído para não ter ruído. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Aplica o 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]);... |