Introducción a los simuladores cuánticos en QDK

El MicrosoftQuantum Development Kit (QDK) incluye un conjunto de simuladores cuánticos que permiten ejecutar programas cuánticos en la máquina local. Utiliza los simuladores locales para iterar sobre tus programas antes de enviarlos para que se ejecuten en destinos Azure Quantum.

El QDK tiene cuatro simuladores:

  • El simulador disperso
  • El Clifford simulador
  • El GPU simulador
  • El CPU simulador

El simulador disperso

El simulador disperso es el simulador predeterminado en QDK. Este simulador representa estados cuánticos como vectores dispersos para aprovechar el álgebra de matriz dispersa para simulaciones rápidas, especialmente para programas que no generan muchos estados de superposición. Use el simulador disperso cuando desee simulaciones rápidas de Q#, OpenQASMo Qiskit programas, o cuando desee mostrar el estado cuántico del programa durante la simulación.

El simulador disperso está disponible tanto en la QDK extensión para Visual Studio Code (VS Code) como en el QDKPython paquete. Este simulador es el único disponible en la extensión QDK, por lo que el compilador llama automáticamente al simulador escaso al ejecutar programas Q# y OpenQASM en VS Code. Con el simulador disperso en VS Code, puede usar la Q#DumpMachine función o el depurador para mostrar vectores de estado de cúbit en diferentes puntos de la simulación.

Tanto la extensión de VS Code como el Python paquete admiten modelos de ruido para simulaciones dispersas de Q# y OpenQASM programas. Solo el Python paquete admite simulación dispersa para Qiskit programas, pero sin compatibilidad con el modelo de ruido.

Para obtener más información sobre el simulador disperso, consulte El simulador disperso.

El Clifford simulador

El Clifford simulador es rápido y eficaz para programas con hasta miles de cúbits, pero solo puede simular programas que solo contienen Clifford puertas. Clifford las puertas son componentes comunes de los circuitos de corrección de errores. El conjunto de puertas consta de Clifford las puertas H, S y CX, y todas las puertas que se pueden construir a partir de esas tres puertas. Las siguientes Clifford puertas son componentes comunes de circuitos cuánticos:

  • $X$, $Y$, y $Z$
  • $S$ y $S^\dagger$
  • $H$, o Hadamard
  • $CX$, $CY$, y $CZ$
  • SWAP e iSWAP

El Clifford simulador está disponible en el QDKPython paquete para Q#los programas , OpenQASM, Qiskity QIR , pero no está disponible en la QDK extensión para VS Code.

El GPU simulador

El simulador GPU es un simulador de estado completo que utiliza el GPU de tu máquina para ejecutar muchas iteraciones de tu programa cuántico en paralelo. Este simulador puede ejecutar programas que contengan cualquier tipo de puerta, pero su ejecución resulta costosa. El simulador puede modelar hasta 27 cúbits. La potencia del GPU de tu máquina determina el rendimiento, pero este es óptimo para programas que tengan alrededor de 20 qubits y muchas iteraciones.

El GPU simulador toma QIR o Qiskit como entrada y está disponible a través de determinadas QDKPython API de paquete, pero no la extensión de VS Code. También hay un sólido soporte para modelos de ruido en cualquier tipo de puerta cuántica u operación.

El CPU simulador

Al igual que el GPU simulador, el CPU simulador es un simulador de estado completo que puede ejecutar programas que contienen cualquier tipo de puerta cuántica. Sin embargo, el CPU simulador es más lento porque no puede ejecutar varias capturas en paralelo. Este simulador se escala hasta alrededor de 25 cúbits, pero se ralentiza exponencialmente con más cúbits debido a problemas de memoria. Utiliza el simulador CPU cuando tu máquina no disponga de un GPU, o cuando tu programa tenga pocos qubits y no vayas a ejecutar muchas ejecuciones.

El CPU simulador toma QIR o Qiskit como entrada y está disponible a través de determinadas QDKPython API de paquete, pero no la extensión de VS Code. También hay un soporte extenso para los modelos de ruido en cualquier tipo de puerta cuántica u operación.

¿Qué simulador debo usar?

El mejor simulador que se va a usar depende de varios factores, como:

  • Su entorno de desarrollo (VS Code o Python)
  • El marco de programación cuántica que estás desarrollando
  • La complejidad de tu programa y el número de ejecuciones
  • Las funcionalidades de hardware de la máquina local
  • Los objetivos Azure Quantum u otro hardware cuántico en el que desees ejecutar tus programas
  • Los modelos de ruido que desea compilar

En la tabla siguiente se resumen las opciones y los QDK marcos de programación cuántica que puede usar para cada simulador:

Simulador Disponibilidad Marcos admitidos
Dispersos Extensión y Python paquete de VS Code Q#, , OpenQASM, Qiskit
Clifford Python paquete Q#, OpenQASM, , Qiskit, QIR
GPU Python paquete Qiskit, QIR
CPU Python paquete Qiskit, QIR

Simulaciones en la QDK extensión para VS Code

El simulador disperso es el único simulador disponible en la QDK extensión para VS Code. Para usar el simulador disperso, ejecute el archivo Q# o OpenQASM en VS Code. Puedes añadir modelos de ruido limitados al simulador disperso para programas Q# en VS Code, pero no para programas OpenQASM.

Simulaciones en el QDKPython paquete

El entorno de desarrollo QDKPython admite varios marcos cuánticos y los cuatro simuladores QDK, pero no todos los simuladores son compatibles con todos los marcos y las API.

En esta tabla se muestran los simuladores que puede usar para cada Python API que llama a un QDK simulador y el marco de programación que admite cada API:

Python Interfaz de Programación de Aplicaciones (API) Dispersos Clifford GPU CPU Marco de programación
qsharp.run Q#
openqasm.run OpenQASM
qiskit.QSharpBackend Qiskit
simulation.NeutralAtomDevice QIR
simulation.NeutralAtomBackend Qiskit
simulation.run_qir QIR