Quil es una arquitectura de conjunto de instrucciones cuánticas que introdujo por primera vez un modelo de memoria clásica / cuántica compartida. Fue presentado por Robert Smith, Michael Curtis y William Zeng en A Practical Quantum Instruction Set Architecture . [1] Muchos algoritmos cuánticos (incluida la teletransportación cuántica , la corrección de errores cuánticos , la simulación, [2] [3] y los algoritmos de optimización [4] ) requieren una arquitectura de memoria compartida . Quil se está desarrollando para los procesadores cuánticos superconductores desarrollados por Rigetti Computing through the ForestAPI de programación cuántica . [5] [6] Se introdujo una biblioteca Python llamada pyQuil
para desarrollar programas Quil con construcciones de mayor nivel. Un backend de Quil también es compatible con otros entornos de programación cuántica. [7] [8]
Máquina abstracta cuántica subyacente
En el artículo presentado por Smith, Curtis y Zeng, Quil especifica el conjunto de instrucciones para una máquina abstracta cuántica (QAM) similar a una máquina de Turing, pero más práctica para realizar tareas del "mundo real". [1] El estado de QAM se puede representar como una tupla de 6 dónde:
- es el estado (cuántico) de un número fijo pero arbitrario de qubits indexado utilizando una indexación basada en 0 .
- es una memoria clásica de un númerode bits clásicos indexados mediante una indexación basada en 0.
- una lista fija pero arbitraria de puertas estáticas (puertas cuánticas que no dependen de parámetros como la puerta Hadamard ).
- una lista fija pero arbitraria de puertas paramétricas (puertas que dependen de una serie de parámetros complejos como la puerta de cambio de fase que requiere que un parámetro de ángulo esté completamente definido).
- una secuencia de instrucciones de Quil a ejecutar, que representa el programa. El largo de se denota por .
- un contador de programa entero que apunta a la siguiente instrucción a ejecutar. siempre comienza en 0 (apuntando al instrucción) y termina en indicando que el programa se detiene (tenga en cuenta que la última instrucción tiene el índice .) El contador del programa se incrementa después de cada instrucción, excepto para las instrucciones de flujo de control especiales ( saltos condicionales e incondicionales , y la
HALT
instrucción especial que detiene el programa al configurar a .
La semántica del QAM se define utilizando productos tensoriales de los espacios de Hilbert y los mapas lineales entre ellos. [1]
Características
Quil tiene soporte para definir puertas posiblemente parametrizadas en forma matricial (el lenguaje no incluye una forma de verificar que las matrices sean unitarias , lo cual es una condición necesaria para la realizabilidad física de la puerta definida) y su aplicación en qubits. El lenguaje también admite definiciones de tipo macro de circuitos cuánticos posiblemente parametrizados y su expansión, medición de qubit y registro del resultado en la memoria clásica, sincronización con computadoras clásicas con la WAIT
instrucción que pausa la ejecución de un programa Quil hasta que un programa clásico ha terminado su ejecución, bifurcación condicional e incondicional , compatibilidad con pragma , así como la inclusión de archivos para su uso como bibliotecas (se proporciona un conjunto estándar de puertas como una de las bibliotecas).
Rigetti QVM
Rigetti Computing desarrolló una máquina virtual cuántica en Common Lisp que simula la máquina abstracta cuántica definida en una computadora clásica y es capaz de analizar y ejecutar programas Quil con una posible ejecución remota a través de HTTP. [9]
Ejemplo
El siguiente ejemplo demuestra el flujo de control clásico necesario para realizar la teletransportación cuántica del qubit en el registro 2 al registro 1: [10] [11]
# Declarar memoria clásica DECLARAR ro BIT [ 2 ] # Crear par de timbres H 0 CNOT 0 1 # Teletransportar CNOT 2 0 H 2 MEDIDA 2 ro [ 0 ] MEDIDA 0 ro [ 1 ] # Comunicar medidas clásicamente SALTAR A MENOS QUE @ SALTAR ro [ 1 ] X 1 ETIQUETA @ SALTAR SALTAR A MENOS QUE @ FIN ro [ 0 ] Z 1 ETIQUETA @ FIN
En el artículo se dan ejemplos de las implementaciones de la transformada cuántica de Fourier y el Eigensolver cuántico variacional .
Referencias
- ^ a b c Smith, Robert S .; Curtis, Michael J .; Zeng, William J. (10 de agosto de 2016). "Una arquitectura práctica de conjunto de instrucciones cuánticas". arXiv : 1608.03355 [ quant-ph ].
- ^ McClean, Jarrod R .; Romero, Jonathan; Babbush, Ryan; Aspuru-Guzik, Alán (4 de febrero de 2016). "La teoría de los algoritmos clásicos cuánticos híbridos variacionales". Nueva Revista de Física . 18 (2): 023023. arXiv : 1509.04279 . Código bibliográfico : 2016NJPh ... 18b3023M . doi : 10.1088 / 1367-2630 / 18/2/023023 . ISSN 1367-2630 .
- ^ Rubin, Nicholas C. (21 de octubre de 2016). "Un enfoque híbrido clásico / cuántico para estudios a gran escala de sistemas cuánticos con teoría de incrustación de matriz de densidad". arXiv : 1610.06910 [ quant-ph ].
- ^ Farhi, Edward; Goldstone, Jeffrey; Gutmann, Sam (14 de noviembre de 2014). "Un algoritmo de optimización aproximada cuántica". arXiv : 1411,4028 [ quant-ph ].
- ^ "Rigetti lanza servicio de computación cuántica de pila completa y Quantum IC Fab" . IEEE Spectrum: Noticias de tecnología, ingeniería y ciencia . Consultado el 6 de julio de 2017 .
- ^ "Rigetti lanza silenciosamente Beta de la plataforma forestal para programación cuántica en la nube | Informe de computación cuántica" . quantumcomputingreport.com . Consultado el 6 de julio de 2017 .
- ^ "Acelerador XACC Rigetti" . ornl-qci.github.io . Consultado el 6 de julio de 2017 .
- ^ Doiron, Nick (7 de marzo de 2017), jsquil: instrucciones de computadora cuántica para desarrolladores de JavaScript , consultado el 6 de julio de 2017
- ^ La máquina virtual cuántica de alto rendimiento @rigetti .: rigetti / qvm , Rigetti Computing, 2019-04-26 , consultado el 2019-04-28
- ^ Nielsen, Michael A .; Chuang, Isaac L. (2000). Computación cuántica e información cuántica . Prensa de la Universidad de Cambridge. pag. 27. ISBN 978-0-521-63503-5.
- ^ Informática, Rigetti (28 de mayo de 2019). "Documentación de pyQuil" (PDF) . pyQuil Documentaion . Consultado el 6 de junio de 2019 .