Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La extensión MicrosoftQuantum Development Kit (QDK) para Visual Studio Code (VS Code) ejecuta automáticamente los programas Q# y OpenQASM en su simulador disperso local.
En este artículo se explica cómo ejecutar programas en el simulador local y cómo agregar Pauli ruido a Q# simulaciones. Para usar los otros QDK simuladores de QDK, consulte Python.
Funcionamiento del simulador local
El simulador disperso almacena solo las amplitudes no cero de un estado cuántico. Cuando la mayoría de las amplitudes de base computacional son cero, esta representación usa menos memoria y puede simular algunos programas con más cúbits que un simulador de estado completo, que almacena cada amplitud.
La ventaja de rendimiento depende de si el estado cuántico permanece disperso en la base computacional. Para obtener más información, vea Jaques y Häner (arXiv:2105.01533).
Ejecución de un programa cuántico en VS Code
- Instale la QDK extensión para VS Code.
- Abra un archivo Q# (
.qs) o un archivo OpenQASM (.qasm). - Seleccione Ejecutar desde la lente de código al principio del archivo o por encima de la Q#
Mainoperación.
La salida de simulación aparece en el VS Code terminal. Para los programas Q#, seleccione Depurar para inspeccionar el estado cuántico del programa a medida que se ejecuta.
Añadir ruido Pauli a las simulaciones Q#
El simulador disperso admite ruido Pauli para los programas Q# en la extensión QDK. Utilice ConfigurePauliNoise para establecer las probabilidades de errores de Pauli $X$, $Y$ y $Z$ en un programa. La configuración de la extensión QDK también admite un modelo de ruido global Pauli.
Note
No se puede agregar un modelo de ruido a una OpenQASM simulación en la QDK extensión. Para crear modelos de ruido específicos de la operación para programas Q# o OpenQASM, use el PythonQDK paquete y la API NoiseConfig.
Añadir ruido Pauli en la configuración VS Code
- En VS Code, configura el ruido global Pauli para los programas Q# en la configuración de usuario Q#> Simulación:Pauli Ruido de la extensión QDK.
La configuración de ruido se aplica a los resultados del histograma para todas las puertas, medidas y cubits en todos los Q# programas de VS Code.
Sin ruido, un histograma para este GHZ programa de ejemplo muestra $\ket{00000}$ durante aproximadamente la mitad de las medidas 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;
}
Con una tasa de ruido por inversión de bits del 1%, los resultados comienzan a dispersarse. En 25%, el histograma es indistinguible de ruido puro.
Agregar Pauli ruido a Q# programas individuales
Utilice ConfigurePauliNoise para establecer o modificar el modelo de ruido de un programa Q# y controlar cuándo y dónde se produce el ruido.
Note
La configuración de VS Code aplica ruido a todos los programas Q#, pero ConfigurePauliNoise anula dicha configuración para el programa que lo invoca.
En el programa anterior, agregue 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 subsequent operations.
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Para aplicar ruido solo a la operación de medición, establezca el modelo de ruido inmediatamente antes de la medición y elimínelo después:
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 cambiar o borrar la configuración de ruido en diferentes puntos del programa, llame a ConfigurePauliNoise varias veces. Por ejemplo, aplique 5% ruido de volteo de bits a la puerta hadamard y, a continuación, borre la configuración de 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#
ConfigurePauliNoise admite cualquier modelo de ruido Pauli. Utilice estas funciones y operaciones del espacio de nombres Std.Diagnostics para configurar o aplicar ruido:
| Function | Description | Ejemplo |
|---|---|---|
ConfigurePauliNoise |
Establece Pauli el ruido para una simulación. Pase las probabilidades de errores de Pauli $X$, $Y$, y $Z$ o un Pauli modelo de ruido. La configuración se aplica a todas las puertas, medidas y cúbits posteriores en un programa Q# y anula la configuración de ruido de la extensión VS Code. Las llamadas posteriores sobrescriben las configuraciones anteriores. | ConfigurePauliNoise(0.1, 0.0, 0.5)o ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Devuelve un modelo de ruido con solo Pauli errores de $X$ con la probabilidad especificada. | 10% ruido de volteo de bits:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Devuelve un modelo de ruido con solo errores Pauli $Z$ con la probabilidad especificada. | 10% ruido de volteo por fase:ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Devuelve un modelo de ruido con probabilidades iguales para Pauli los errores de $X$, $Y$y $Z$. | 6% ruido despolarizanteConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.02, 0.02, 0.02) |
NoNoise |
Devuelve un modelo con cero probabilidades de error. Pásalo a ConfigurePauliNoise para borrar la configuración de ruido actual. |
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]);... |