Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
El simulador disperso utiliza una representación dispersa de vectores de estado cuántico. Un estado cuántico disperso es un estado donde la mayoría de los coeficientes de amplitud son cero. Las representaciones dispersas permiten al simulador disperso minimizar la superficie de memoria necesaria para representar estados cuánticos, lo que permite simulaciones en un mayor número de cúbits. El simulador disperso es eficaz para programas con estados cuánticos dispersos en la base computacional. El simulador disperso permite a los usuarios explorar aplicaciones más grandes que un simulador de estado completo porque los simuladores de estado completo pierden memoria y tiempo en un número exponencialmente grande de amplitudes cero.
Para obtener más información sobre el simulador disperso, vea Jaques y Häner (arXiv:2105.01533).
Llamada al simulador disperso
El simulador disperso es el simulador local predeterminado en la extensión MicrosoftQuantum Development Kit (QDK) para Visual Studio Code (VS Code). El modo de usar el simulador disperso varía según el entorno de desarrollo.
| Entorno de desarrollo | Cómo ejecutar el simulador disperso |
|---|---|
| En un programa Q# o OpenQASM en VS Code | Ejecutar el archivo Q# o OpenQASM |
En un programa de Python con la biblioteca de qdk |
qsharp.runo openqasm.runo qiskit.QSharpBackend |
En una celda del %%qsharp cuaderno |
Llame a la función de inicio del programa, por ejemplo:Main() |
Agregar Pauli ruido al simulador disperso en VS Code
El simulador disperso admite la adición de Pauli ruido a las simulaciones de sus programas Q# con la extensión VS Code. Esta característica permite simular los efectos del ruido en las operaciones cuánticas y las medidas. Para especificar un modelo de ruido en el programa Q#, use la función ConfigurePauliNoise. La función establece las probabilidades de que se produzcan Pauli los operadores X, Y, Z y ruido. También puede configurar modelos globales de ruido en la configuración de la extensión.
Añadir Pauli ruido utilizando la VS Code configuración
Para establecer el ruido global Pauli para Q# los programas de VS Code, configure la Q#> configuración de usuario Simulation:Pauli Noise para la QDK extensión.
La configuración de ruido se aplica a los resultados del histograma para todas las puertas, medidas y cúbits en todos los Q# programas de VS Code.
Por ejemplo, un histograma para el siguiente programa de ejemplo de GHz sin ruido configurado muestra un resultado de $\ket{00000}$ durante aproximadamente la mitad de las mediciones y $\ket{11111}$ para la otra mitad.
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;
}
Si agrega incluso una tasa de ruido por volteo de bits del 1%, los resultados comienzan a difundirse. Con un 25% de ruido de volteo de bits, el histograma se vuelve indistinguible del ruido puro.
Agregar Pauli ruido a Q# programas individuales
Use la ConfigurePauliNoise función para establecer o modificar el modelo de ruido para programas individuales Q# . La ConfigurePauliNoise función le proporciona control sobre cuándo y dónde se produce ruido en los Q# programas.
Nota:
Si configura ruido en la VS Code configuración, el ruido se aplica a todos los Q# programas. Sin embargo, la ConfigurePauliNoise función invalida la configuración de ruido de VS Code del programa que llama a la función.
Por ejemplo, en el programa anterior puede agregar ruido inmediatamente después de la asignación de cúbits.
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;
}
O bien, puede agregar ruido solo a la operación de medición.
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 o borrar configuraciones de ruido en diferentes puntos del programa, llame varias ConfigurePauliNoise veces. Por ejemplo, puede establecer un ruido de volteo de bits del 5% en la puerta Hadamard y luego no establecer ruido para el resto del 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;
}
Otras funciones de ruido Q#
La función ConfigureNoiseFunction es suficiente para modelar cualquier tipo de Pauli ruido en su programa, pero Q# tiene otras funciones de ruido que también puede usar. Las siguientes funciones están disponibles en la Std.Diagnostics biblioteca para configurar el ruido en Q# programas:
| Función | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Pauli Configura el ruido de una ejecución del simulador. Los parámetros representan las probabilidades de ruido de las puertas X, Y y Z Pauli. La configuración de ruido se aplica a todas las puertas, mediciones y qubits posteriores en un programa Q#. Sobrescribe los ajustes de ruido de la extensión VS Code. Las llamadas posteriores a ConfigurePauliNoise sobrescriben el ruido establecido por llamadas anteriores. |
ConfigurePauliNoise(0.1, 0.0, 0.5)o ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Configura solo el ruido de la puerta X con la probabilidad especificada. | 10% ruido de volteo de bits:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Configura solo el ruido de la puerta Z con la probabilidad especificada. | 10% ruido de volteo por fase:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Configura el ruido para que sea la puerta X, Y o Z con probabilidades iguales. | 6% ruido despolarizanteConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.2, 0.2, 0.2) |
NoNoise |
Restablece el modelo de ruido para que no tenga ruido. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Aplica el ruido configurado a un solo cúbit durante la simulación. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |