Introducción a OpenQASM
OpenQASM (lenguaje ensamblador cuántico abierto), una interfaz de programación independiente de la máquina compatible con los QPUs de IBM®, es un lenguaje de programación imperativo para describir circuitos cuánticos. OpenQASM utiliza el modelo de circuito cuántico para expresar programas cuánticos como secuencias ordenadas de operaciones parametrizadas (como gates, mediciones y reinicios) y computación clásica en tiempo real. Además de los algoritmos cuánticos, OpenQASM puede describir circuitos destinados a caracterizar, validar o depurar procesadores cuánticos.
A medida que las necesidades del desarrollo de QPUs han evolucionado, la lista de funcionalidades de OpenQASM se ha ampliado en respuesta; la última versión, OpenQASM 3, incorpora extensiones que incluyen control de flujo clásico con retroalimentación, modificadores de gates e implementaciones de pulsos.
OpenQASM es la opción elegida por distintos tipos de usuarios gracias a su versatilidad. La introducción al artículo sobre OpenQASM 31 ofrece algunos ejemplos:
"Aunque OpenQASM no es un lenguaje de alto nivel, muchos usuarios desearían escribir circuitos cuánticos sencillos a mano usando un lenguaje de dominio específico expresivo. Los investigadores que estudian la compilación de circuitos necesitan información de alto nivel registrada en las representaciones intermedias para orientar los algoritmos de optimización y síntesis. Los experimentadores prefieren la comodidad de escribir circuitos a un nivel relativamente alto, pero con frecuencia necesitan modificar manualmente la temporización o las descripciones de gates a nivel de pulso en distintos puntos del circuito. Los ingenieros de hardware que diseñan los controladores clásicos y los generadores de formas de onda prefieren lenguajes que sean prácticos de compilar dadas las restricciones del hardware y que hagan explícita la estructura del circuito de la que los controladores pueden sacar provecho."
OpenQASM es el formato de intercambio común entre las herramientas de software cuántico independientes. Para los desarrolladores que prefieren una herramienta para la construcción de circuitos, otra para la transpilación, etc., OpenQASM es la lingua franca que actúa como puente entre ellas.
El SDK de Qiskit ofrece formas de convertir entre OpenQASM y la clase QuantumCircuit (consulta OpenQASM 2 y Qiskit y OpenQASM 3 y Qiskit para ver las instrucciones).
Para más información, consulta la especificación en vivo de OpenQASM.
Ejemplo de código OpenQASM: estado cat
OPENQASM 3;
include "stdgates.inc";
const n = 3; // number of qubits
qubit[n] q; // a register 'q' of n qubits
bit[n] c; // a register 'c' of n classical bits
h q[0]; // Hadamard
for k in [0:n-1] {
cnot q[k], q[k+1]; // Controlled-NOT from control qubit q[k] to target qubit q[k+1]
}
c = measure q; // measure quantum register
Pasos siguientes
- Aprende a generar código OpenQASM en la guía de IBM Quantum Composer.
- Revisa la tabla de funcionalidades de OpenQASM 3.
- Lee la referencia de la API de OpenQASM 3 para Qiskit.
- Lee la referencia de la API de OpenQASM 2 para Qiskit.
- Visita la especificación en vivo de OpenQASM.