Introducción a la OpenQASM
OpenQASM (lenguaje ensamblador cuántico abierto), una interfaz de programación independiente de la máquina compatible con las QPU 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 puertas, mediciones y reinicios) y computación clásica en tiempo real. Además de algoritmos cuánticos, OpenQASM puede describir circuitos destinados a caracterizar, validar o depurar procesadores cuánticos.
A medida que han evolucionado las necesidades del desarrollo de QPU, la lista de características de OpenQASM's se ha ampliado en respuesta a ello; la última versión, OpenQASM 3, incorpora extensiones que incluyen control de flujo clásico feed-forward, modificadores de puerta e implementaciones de pulso.
OpenQASM es la elección para una gran variedad de públicos por su versatilidad. En la introducción del documento OpenQASM 31 se dan ejemplos:
"Aunque OpenQASM no es un lenguaje de alto nivel, a muchos usuarios les gustaría escribir a mano circuitos cuánticos sencillos utilizando un lenguaje expresivo específico del dominio. Los investigadores que estudian la compilación de circuitos necesitan información de alto nivel registrada en las representaciones intermedias para fundamentar los algoritmos de optimización y síntesis. Los experimentadores prefieren la comodidad de escribir circuitos a un nivel relativamente alto, pero a menudo necesitan modificar manualmente la temporización o las descripciones de las puertas a nivel de impulsos en varios 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 limitaciones del hardware y que expliciten la estructura del circuito que pueden aprovechar los controladores."
OpenQASM es el formato común de intercambio entre 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 sirve de puente entre ellas.
El SDK de Qiskit proporciona maneras de convertir entre OpenQASM y la QuantumCircuit (consulte OpenQASM 2 y Qiskit y OpenQASM 3 y Qiskit para obtener instrucciones).
Para obtener más información, consulte la especificación en vivo de OpenQASM.
OpenQASM Ejemplo de código: estado del gato
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
Próximos pasos
- Aprenda a generar código OpenQASM en la guía IBM Quantum Composer.
- Revise la tabla de características de OpenQASM 3.
- Lee la referencia de la API de Qiskit en OpenQASM 3.
- Lee la referencia de la API de Qiskit en OpenQASM 2.
- Visite la especificación OpenQASM Live.
Footnotes
-
Andrew W. Cross et al. ""OpenQASM 3: A broader and deeper quantum assembly language," ACM Transactions on Quantum Computing, Volume 3, Issue 3 (2022). https://doi.org/10.48550/arXiv.2104.14722 ↩