Articulo de referencia

OpenQASM

El lenguaje de ensamblaje cuántico abierto ( OpenQASM ; pronunciado open kazm ) [ 1 ] es un lenguaje de programación diseñado para describir circuitos cuánticos y algoritmos par...

El lenguaje de ensamblaje cuántico abierto ( OpenQASM ; pronunciado open kazm ) [ 1 ] es un lenguaje de programación diseñado para describir circuitos cuánticos y algoritmos para su ejecución en computadoras cuánticas.

Idioma

Está diseñado para ser una representación intermedia que pueden utilizar los compiladores de nivel superior para comunicarse con el hardware cuántico, y permite la descripción de una amplia gama de operaciones cuánticas, así como el control de flujo clásico de realimentación directa basado en los resultados de las mediciones.

El lenguaje incluye un mecanismo para describir la temporización explícita de las instrucciones y permite adjuntar definiciones de bajo nivel a las compuertas para tareas como la calibración. [ 1 ] OpenQASM no está diseñado para la computación clásica de propósito general, y las implementaciones de hardware del lenguaje pueden no admitir la gama completa de manipulación de datos descrita en la especificación. Se espera que los compiladores para OpenQASM admitan una amplia gama de operaciones clásicas para constantes en tiempo de compilación, pero la compatibilidad con estas operaciones en valores en tiempo de ejecución puede variar entre implementaciones. [ 2 ]

El lenguaje se describió por primera vez en un artículo publicado en julio de 2017, [ 1 ] y se publicó una implementación de código fuente de referencia como parte del kit de software de información cuántica ( Qiskit ) de IBM para su uso con su plataforma de computación cuántica en la nube IBM Quantum Experience . [ 3 ] El lenguaje tiene cualidades similares a los lenguajes de descripción de hardware tradicionales como Verilog .

OpenQASM define su versión al inicio de un archivo fuente como un número, como en la declaración:

OPENQASM 3 ;

El nivel de las implementaciones originales publicadas de OpenQASM es OpenQASM 2.0. La versión 3.0 de la especificación es la actual y se puede consultar en el repositorio de OpenQASM en GitHub . [ 4 ]

Ejemplos

A continuación se muestra un ejemplo del código fuente de OpenQASM de la biblioteca oficial. El programa suma dos números de cuatro bits. [ 5 ]

/* * sumador cuántico de transporte de ondas * Cuccaro et al, quant-ph/0410184 */ OPENQASM 3 ; incluya "stdgates.inc" ;mayoritaria de puerta a , b , c { cx c , b ; cx c , a ; ccx a , b , c ; }puerta unmaj a , b , c { ccx a , b , c ; cx c , a ; cx a , b ; }qubit [ 1 ] cin ; qubit [ 4 ] a ; qubit [ 4 ] b ; qubit [ 1 ] cout ; bit [ 5 ] ans ; uint [ 4 ] a_in = 1 ; // a = 0001 uint [ 4 ] b_in = 15 ; // b = 1111 // inicializar qubits reset cin ; reset a ; reset b ; reset cout ;// establecer estados de entrada para i en [ 0 : 3 ] { if ( bool ( a_in [ i ])) x a [ i ]; if ( bool ( b_in [ i ])) x b [ i ]; } // sumar a a b, almacenando el resultado en b mayoritaria cin [ 0 ], b [ 0 ], a [ 0 ]; para i en [ 0 : 2 ] { mayoritaria a [ i ], b [ i + 1 ], a [ i + 1 ]; } cx a [ 3 ], cout [ 0 ]; para i en [ 2 : - 1 : 0 ] { unmaj a [ i ], b [ i + 1 ], a [ i + 1 ]; } unmaj cin [ 0 ], b [ 0 ], a [ 0 ]; medida b [ 0 : 3 ] -> ans [ 0 : 3 ]; medida cout [ 0 ] -> ans [ 4 ];

Véase también

Referencias

  1. 1 2 3 Cross, Andrew W.; Bishop, Lev S.; Smolin, John A.; Gambetta, Jay M. (2017). "Open Quantum Assembly Language". arXiv : 1707.03429 [ quant-ph ].
  2. "Especificación en vivo de OpenQASM" . Consultado el 26 de diciembre de 2022 .
  3. qiskit-openqasm: Especificación OpenQASM , International Business Machines, 4 de julio de 2017, archivado del original el 10 de noviembre de 2020 , consultado el 6 de julio de 2017.
  4. https://github.com/openqasm/openqasm OpenQASM
  5. ^ "openqasm/adder.qasm en master · openqasm/openqasm · GitHub" . GitHub . 29 de enero de 2022.
  • Sitio web oficial
  • OpenQASM en GitHub