OpenQASM tabla de 3 características
A continuación encontrará una lista de las características lingüísticas de OpenQASM 3 .
Para más detalles sobre estas capacidades, consulte la especificación OpenQASM 3.X Live.
Clave:
- ❌ No compatible
- 🟡 Ayuda parcial
- ✅ Compatible
El significado de la marca "supported" completa depende de la columna:
-
Qiskit SDK : La característica se puede analizar mediante
qiskit.qasm3.loads(utilizando laqiskit-qasm3-importextensión ), representarse en un y exportarse a OpenQASMQuantumCircuite 3 medianteqiskit.qasm3.dumps. -
IBM Qiskit Runtime : Un circuito que contenga la característica Qiskit correspondiente puede ejecutarse con éxito en hardware a través de IBM® Qiskit Runtime.
El significado de "ayuda parcial" suele depender de las notas vinculadas.
El método más común para enviar circuitos a IBM Qiskit Runtime es crear el circuito en la interfaz Python -space de Qiskit SDK. Los circuitos construidos y enviados de esta manera no necesitan ser cargados desde OpenQASM 3 archivos en Qiskit SDK.
Si no utiliza directamente OpenQASM 3, puede utilizar con seguridad las funciones compatibles con la representación en Qiskit SDK, la exportación a OpenQASM 3 y el envío a IBM Qiskit Runtime. Esto incluye características que no pueden ser cargadas por Qiskit SDK desde OpenQASM 3.
OpenQASM 3 Características | Características del SDK de Qiskit | SDK de Qiskit | IBM Qiskit Runtime | Notas |
|---|---|---|---|---|
| comentarios | ✅ | ✅ | 1 | |
| QASM vstring | ✅ | ✅ | 1 | |
include | 🟡 | ❌ | 1, 7 | |
| nombres unicode | ✅ | ✅ | ||
qubit | Qubit y QuantumRegister | ✅ | 🟡 | 2 |
bit | Clbit y ClassicalRegister | ✅ | ✅ | 3 |
bool | expr.Var y expresiones clásicas | 🟡 | ✅ | 4 |
int | ❌ | ✅ | 4 | |
uint | expr.Var y expresiones clásicas | 🟡 | ✅ | 4 |
float | expr.Var y expresiones clásicas | 🟡 | 🟡 | 4 |
angle | Implícito, como parámetros de puerta | ❌ | 🟡 | 4 |
complex | ❌ | ❌ | 4 | |
const | ❌ | ❌ | 4 | |
pi/π/tau/τ/euler/ℇ | Constante plegada en parámetros de puerta | ✅ | ✅ | |
| Aliasing: let | Registros cuánticos y clásicos | 🟡 | ❌ | 5 |
| concatenación de registros | Registros cuánticos y clásicos | 🟡 | ❌ | 5 |
| conversión | expr.Cast expresiones clásicas | 🟡 | 🟡 | 4 |
duration | ❌ | ❌ | ||
durationof | ❌ | ❌ | ||
ns/µs/us/ms/s/dt | Duraciones de delay y box | ✅ | ✅ | 6 |
stretch | expr.Stretch | 🟡 | 🟡 | 4, 6 |
delay | Delay/QuantumCircuit.delay | ✅ | ✅ | 6 |
barrier | Barrier/QuantumCircuit.barrier | ✅ | ✅ | |
box | BoxOp/QuantumCircuit.box | ✅ | ❌ | 6 |
Incorporado U | UGate/QuantumCircuit.u | ✅ | ✅ | |
gate | 🟡 | 🟡 | 7 | |
gphase | QuantumCircuit.global_phase | 🟡 | ❌ | 7 |
ctrl @/ negctrl @ | AnnotatedOperation | 🟡 | ❌ | 7 |
inv @ | AnnotatedOperation | 🟡 | ❌ | 7 |
pow(k) @ | AnnotatedOperation | 🟡 | ❌ | 7 |
reset | Reset/QuantumCircuit.reset | ✅ | ✅ | |
measure | Measure/QuantumCircuit.measure | ✅ | ✅ | |
| operaciones de bits | 🟡 | ✅ | 4 | |
| Operaciones booleanas | 🟡 | ✅ | 4 | |
| expresiones aritméticas | 🟡 | 🟡 | 4 | |
| comparaciones | 🟡 | ✅ | 4 | |
if | QuantumCircuit.if_test | ✅ | ✅ | 8 |
else | QuantumCircuit.if_test | ✅ | ✅ | 8 |
else if | QuantumCircuit.if_test | ✅ | ❌ | 8 |
for bucles | QuantumCircuit.for_loop | 🟡 | ❌ | 8 |
while bucles | QuantumCircuit.while_loop | ✅ | ❌ | 8 |
continue | QuantumCircuit.continue_loop | 🟡 | ❌ | 8 |
break | QuantumCircuit.break_loop | 🟡 | ❌ | 8 |
return | ❌ | ❌ | ||
extern | ❌ | ❌ | ||
def subrutinas (clásicas) | ❌ | ❌ | ||
def subrutinas (quantum) | ❌ | ❌ | ||
input | QuantumCircuit.add_input | ✅ | 🟡 | 4, 9 |
output | ❌ | ❌ |
Notas
- Estos OpenQASM 3 características del programa no tienen ningún impacto en la ejecución y Qiskit les quita como parte del análisis de los archivos. Los archivos que los utilicen podrán presentarse pero no tendrán ningún efecto. Para los archivos
include,stdgates.inces soportado actualmente como entrada a Qiskit, y la ejecución backend siempre requiere que los circuitos hayan sido compilados a la Arquitectura del Conjunto de Instrucciones (ISA) backend, donde los archivosincludeson irrelevantes.
- Qiskit SDK admite el análisis sintáctico y el volcado de archivos OpenQASM 3 con cualquier declaración
qubit. Para ejecución en hardware, sólo son válidos los circuitos definidos en términos de qubits hardware (por ejemplo,$0). Qiskit SDK automáticamente salidas OpenQASM 3 en términos de hardware soportado-qubit si el circuito fue transpilado para un backend con información de diseño.
bit- ybit[n]-typed variable declarations in Qiskit SDK correspond toClbitandClassicalRegisterdeclaraciones.
- Desde julio de 2025, Qiskit SDK puede representar variables locales de un conjunto restringido de tipos, puede representar muchas operaciones de tiempo de ejecución en estos objetos, y apoya la salida de ellos a OpenQASM 3.
Sin embargo, el SDK de Qiskit (a través de
qiskit-qasm3-importv0.6.0 ) no permite analizar OpenQASM 3 que contienen declaraciones de variables, y tiene un soporte muy limitado para el análisis sintáctico de variables variables. En general, la mayor parte de lo que Qiskit puede representar en su sistema de expresión puede ser ejecutarse en el hardware de circuitos dinámicos adecuado, incluso si la expresión aún no puede ser analizada por el SDK de Qiskit SDK. Consulte la documentación de Qiskit deqiskit.circuit.classicalMódulo para obtener la información más actualizada.
- Qiskit SDK puede representar aliasing de registros tanto para registros cuánticos como clásicos, pero es desaconseja encarecidamente el uso de aliasing de registros clásicos. La mayoría de las expresiones sobre registros no funcionan con alias, y los registros clásicos con alias no están soportados para su ejecución en hardware. El analizador Qiskit OpenQASM 3 puede resolver
letalias declaraciones que se unen el resultado de la concatenación de registros.
- Qiskit SDK soporta retardos explícitos a través de
QuantumCircuit.delay, y las cajas de circuitos (QuantumCircuit.box) también pueden tener duraciones explícitas. Estas duraciones pueden incluir expresiones de variablesstretch. Qiskit SDK (a partir de julio de 2025 a través deqiskit-qasm3-importv0.6.0 ) no soporta el análisis sintáctico de declaraciones de tipodurationostretchde archivos OpenQASM 3 archivos. El hardware tiene un soporte limitado para duraciones que incluyenstretch.
- Los circuitos deben transpilarse al ISA backend para ejecutarse en el hardware IBM. Esto impide definiciones personalizadas de
gatey construcciones de más alto nivel como modificadores de puerta (comoinv @) de sean válidas para su ejecución en hardware literalmente, pero el procesotranspilelas resuelve en circuitos ISA válidos. Qiskit SDK (a partir de julio de 2025, a través deqiskit-qasm3-importv0.6.0 ) evaluará ansiosamente los modificadores de puerta durante el análisis sintáctico, por lo que éstos no serán evidentes en el resultado de, lo que puede suponer un coste en tiempo de ejecución evidentes en el resultadoQuantumCircuit, potencialmente con un coste en tiempo de ejecución.
- Qiskit SDK puede representar el flujo de control estructurado y exportarlo a OpenQASM 3. Las declaraciones
continueybreakpueden ser técnicamente representadas por Qiskit, pero no están bien soportadas ni siquiera dentro de Qiskit SDK.forbucles en Qiskit v2.1.0 no están bien soportados. El flujo de control anidado (como unifdentro de otroif, o una sentenciaelse if) no es elegible para ejecución en hardware.
- Qiskit SDK permite declarar cualquier tipo clásico soportado como una variable
inputen el circuito. Tales variables no son actualmente elegibles para la ejecución en el hardware, y no puede ser cargado por el importador de Qiskit OpenQASM 3. Los objetosParameterno vinculados presentes enQuantumCircuitse exportan como variablesinput float[64]. Ciertas opciones de configuración en tiempo de ejecución pueden permitir la ejecución de dichos circuitos en algunos backends.
Próximos pasos
- Aprenda a generar código OpenQASM utilizando IBM Quantum Composer.
- Consulte la referencia de la API de Qiskit en OpenQASM 3.
- Consulte la referencia de la API de Qiskit en OpenQASM 2.
- Consulte el apartado «Verificar su programa ».
- Visite la especificación OpenQASM Live.