Skip to main content
IBM Quantum Platform

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 la qiskit-qasm3-import extensión ), representarse en un y exportarse a OpenQASMQuantumCircuite 3 mediante qiskit.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.

Note

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
comentarios1
QASM vstring1
include🟡1, 7
nombres unicode
qubitQubit y QuantumRegister🟡2
bitClbit y ClassicalRegister3
boolexpr.Var y expresiones clásicas🟡4
int4
uintexpr.Var y expresiones clásicas🟡4
floatexpr.Var y expresiones clásicas🟡🟡4
angleImplícito, como parámetros de puerta🟡4
complex4
const4
pi/π/tau/τ/euler/Constante plegada en parámetros de puerta
Aliasing: letRegistros cuánticos y clásicos🟡5
concatenación de registrosRegistros cuánticos y clásicos🟡5
conversiónexpr.Cast expresiones clásicas🟡🟡4
duration
durationof
ns/µs/us/ms/s/dtDuraciones de delay y box6
stretchexpr.Stretch🟡🟡4, 6
delayDelay/QuantumCircuit.delay6
barrierBarrier/QuantumCircuit.barrier
boxBoxOp/QuantumCircuit.box6
Incorporado UUGate/QuantumCircuit.u
gate🟡🟡7
gphaseQuantumCircuit.global_phase🟡7
ctrl @/ negctrl @AnnotatedOperation🟡7
inv @AnnotatedOperation🟡7
pow(k) @AnnotatedOperation🟡7
resetReset/QuantumCircuit.reset
measureMeasure/QuantumCircuit.measure
operaciones de bits🟡4
Operaciones booleanas🟡4
expresiones aritméticas🟡🟡4
comparaciones🟡4
ifQuantumCircuit.if_test8
elseQuantumCircuit.if_test8
else ifQuantumCircuit.if_test8
for buclesQuantumCircuit.for_loop🟡8
while buclesQuantumCircuit.while_loop8
continueQuantumCircuit.continue_loop🟡8
breakQuantumCircuit.break_loop🟡8
return
extern
def subrutinas (clásicas)
def subrutinas (quantum)
inputQuantumCircuit.add_input🟡4, 9
output

Notas

  1. 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.inc es 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 archivos include son irrelevantes.
  1. 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.
  1. bit- y bit[n]-typed variable declarations in Qiskit SDK correspond to Clbit and ClassicalRegister declaraciones.
  1. 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-import v0.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 de qiskit.circuit.classical Módulo para obtener la información más actualizada.
  1. 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 let alias declaraciones que se unen el resultado de la concatenación de registros.
  1. 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 variables stretch . Qiskit SDK (a partir de julio de 2025 a través de qiskit-qasm3-import v0.6.0 ) no soporta el análisis sintáctico de declaraciones de tipo duration o stretch de archivos OpenQASM 3 archivos. El hardware tiene un soporte limitado para duraciones que incluyen stretch.
  1. Los circuitos deben transpilarse al ISA backend para ejecutarse en el hardware IBM. Esto impide definiciones personalizadas de gate y construcciones de más alto nivel como modificadores de puerta (como inv @) de sean válidas para su ejecución en hardware literalmente, pero el proceso transpile las resuelve en circuitos ISA válidos. Qiskit SDK (a partir de julio de 2025, a través de qiskit-qasm3-import v0.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 resultado QuantumCircuit, potencialmente con un coste en tiempo de ejecución.
  1. Qiskit SDK puede representar el flujo de control estructurado y exportarlo a OpenQASM 3. Las declaraciones continue y break pueden ser técnicamente representadas por Qiskit, pero no están bien soportadas ni siquiera dentro de Qiskit SDK. for bucles en Qiskit v2.1.0 no están bien soportados. El flujo de control anidado (como un if dentro de otro if, o una sentencia else if ) no es elegible para ejecución en hardware.
  1. Qiskit SDK permite declarar cualquier tipo clásico soportado como una variable input en 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 objetos Parameter no vinculados presentes en QuantumCircuit se exportan como variables input 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

Recomendaciones
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.