Solución de problemas de OpenQASM - Amazon Braket

Solución de problemas de OpenQASM

En esta sección se proporcionan consejos de solución de problemas que pueden resultar útiles cuando se producen errores al utilizar OpenQASM 3.0.

Incluir un error en la declaración

Actualmente, Braket no tiene un archivo de biblioteca de puerta estándar para incluirlo en los programas de OpenQASM. Por ejemplo, en el siguiente ejemplo se genera un error de analizador.

OPENQASM 3; include "standardlib.inc";

Este código genera el mensaje de error: No terminal matches '"' in the current parser context, at line 2 col 17.

Error de qubits no contiguo

El uso de qubits no contiguo en dispositivos no contiguos en dispositivos que requiresContiguousQubitIndices establecido en true en la capacidad del dispositivo provoca un error.

Al ejecutar tareas cuánticas en simuladores y IonQ, el siguiente programa desencadena el error.

OPENQASM 3; qubit[4] q; h q[0]; cnot q[0], q[2]; cnot q[0], q[3];

Este código genera el mensaje de error: Device requires contiguous qubits. Qubit register q has unused qubits q[1], q[4].

Error de combinación de qubits físico con qubits virtual

No se permite la combinación de qubits físico con qubits virtual en el mismo programa y se produce un error. El código siguiente genera el error.

OPENQASM 3; qubit[2] q; cnot q[0], $1;

Este código genera el mensaje de error: [line 4] mixes physical qubits and qubits registers.

Error de solicitud de tipos de resultados y medición de qubits en el mismo programa

La solicitud de tipos de resultados y la medición explícita de qubits en el mismo programa, da lugar a un error. El código siguiente genera el error.

OPENQASM 3; qubit[2] q; h q[0]; cnot q[0], q[1]; measure q; #pragma braket result expectation x(q[0]) @ z(q[1])

Este código genera el mensaje de error: Qubits should not be explicitly measured when result types are requested.

Error de superación de límites en registro clásico y registro de qubit

Solo se permite un registro clásico y un registro de qubit. El código siguiente genera el error.

OPENQASM 3; qubit[2] q0; qubit[2] q1;

Este código genera el mensaje de error: [line 4] cannot declare a qubit register. Only 1 qubit register is supported.

Error de cuadro no precedido de un pragma verbatim

Todos los cuadros deben ir precedidos de un pragma verbatim. El código siguiente genera el error.

box{ rx(0.5) $0; }

Este código genera el mensaje de error: In verbatim boxes, native gates are required. x is not a device native gate.

Error de falta de puertas nativas en los cuadros verbatim

Los cuadros verbatim deben tener puertas nativas y qubits físicos. El siguiente código genera el error de puertas nativas.

#pragma braket verbatim box{ x $0; }

Este código genera el mensaje de error: In verbatim boxes, native gates are required. x is not a device native gate.

Error de falta de qubits físicos en cuadros verbatim

Los cuadros verbatim deben tener qubits físicos. El código siguiente genera el error de falta de qubits físicos.

qubit[2] q; #pragma braket verbatim box{ rx(0.1) q[0]; }

Este código genera el mensaje de error: Physical qubits are required in verbatim box.

Error de falta de «braket» en el pragma verbatim

Debe incluir «braket» en el pragma verbatim. El código siguiente genera el error.

#pragma braket verbatim // Correct #pragma verbatim // wrong

Este código genera el mensaje de error: You must include “braket” in the verbatim pragma

Error de que no es posible indexar un solo qubits

No se puede indexar un solo qubits. El código siguiente genera el error.

OPENQASM 3; qubit q; h q[0];

Este código genera el error: [line 4] single qubit cannot be indexed.

Sin embargo, las matrices de qubit individuales se pueden indexar como sigue:

OPENQASM 3; qubit[1] q; h q[0]; // This is valid

Error de qubits físicos en una puerta de dos qubit no conectados

Para utilizar qubits físicos, confirme primero que el dispositivo utiliza qubits físicos marcando device.properties.action[DeviceActionType.OPENQASM].supportPhysicalQubits y, a continuación, compruebe el gráfico de conectividad marcando device.properties.paradigm.connectivity.connectivityGraph o device.properties.paradigm.connectivity.fullyConnected.

OPENQASM 3; cnot $0, $14;

Este código genera el mensaje de error: [line 3] has disconnected qubits 0 and 14

Advertencia de compatibilidad del simulador local

El LocalSimulator admite características avanzadas de OpenQASM que pueden no estar disponibles en las QPU o en los simuladores bajo demanda. Si su programa contiene características de lenguaje específicas únicamente para el LocalSimulator, como se ve en el siguiente ejemplo, recibirá una advertencia.

qasm_string = """ qubit[2] q; h q[0]; ctrl @ x q[0], q[1]; """ qasm_program = Program(source=qasm_string)

Este código genera la siguiente advertencia: «This program uses OpenQASM language features only supported in the LocalSimulator». Es posible que algunas de estas características no sean compatibles con las QPU o los simuladores bajo demanda.

Para obtener más información sobre las características compatibles con OpenQASM, consulte la página Compatibilidad con características avanzadas para OpenQASM en el simulador local.