Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Solucionar problemas de OpenQASM
Esta sección proporciona consejos de solución de problemas que pueden resultar útiles cuando se detectan errores con OpenQASM 3.0.
En esta sección:
- Incluir error de declaración
- qubitsError no contiguo
- Mezcla de errores físicosqubits conqubits errores virtuales
- Error al solicitar tipos de resultados y medirqubits en el mismo programa
- Error de límites clásicos y dequbit registro superados
- Recuadro no precedido de un error de pragma literal
- Error en los cuadros textuales sin puertas nativas
- Faltan recuadros literales conqubits error físico
- Al pragma literal le falta el error de «corchete»
- Error único quequbits no se puede indexar
- El error físicoqubits en un dispositivo de dosqubit puertas no está conectado
- GetDevice no devuelve el error de resultados de OpenQASM
- Advertencia de soporte del simulador local
Incluir error de declaración
Actualmente, Braket no tiene un archivo de biblioteca de puertas estándar para incluirlo en los programas de OpenQASM. Por ejemplo, el siguiente ejemplo 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.
qubitsError no contiguo
El uso de elementos no contiguosqubits en los dispositivos querequiresContiguousQubitIndices
esténtrue
configurados en la capacidad del dispositivo generará un error.
Al ejecutar tareas en simuladores yIonQ, el siguiente programa activa 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].
Mezcla de errores físicosqubits conqubits errores virtuales
No se permite mezclar lo físicoqubits con lo virtualqubits 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 al solicitar tipos de resultados y medirqubits en el mismo programa
Al solicitar tipos de resultados quequbits se midan explícitamente en el mismo programa, se produce 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 límites clásicos y dequbit registro superados
Solo se permiten unqubit registro clásico y un registro. 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.
Recuadro no precedido de un error de pragma literal
Todas las casillas deben ir precedidas de un pragma literal. 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 en los cuadros textuales sin puertas nativas
Los buzones literales deben tener puertas nativas y físicasqubits. El siguiente código genera el error Native Gates.
#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.
Faltan recuadros literales conqubits error físico
Los recuadros literales deben ser físicosqubits. El código siguiente genera elqubits error físico que falta.
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.
Al pragma literal le falta el error de «corchete»
Debe incluir «corchete» en el pragma literal. 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 único quequbits no se puede indexar
qubitsNo se puede indexar el single. 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, lasqubit matrices individuales se pueden indexar de la siguiente manera:
OPENQASM 3; qubit[1] q; h q[0]; // This is valid
El error físicoqubits en un dispositivo de dosqubit puertas no está conectado
Para usar físicaqubits, primero confirme que el dispositivo usa físicaqubits comprobandodevice.properties.action[DeviceActionType.OPENQASM].supportPhysicalQubits
y, a continuación, verifique el gráfico de conectividad marcandodevice.properties.paradigm.connectivity.connectivityGraph
odevice.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
GetDevice no devuelve el error de resultados de OpenQASM
Si no ve los resultados de OpenQASM en la GetDevice respuesta cuando utiliza un SDK de Braket, puede que tenga que configurar la variable de entorno AWS_EXECUTION_ENV para configurar el agente de usuario. Consulte los ejemplos de código que se proporcionan a continuación para saber cómo hacerlo para los SDK de Go y Java.
Para configurar la variable de entorno AWS_EXECUTION_ENV para configurar el agente de usuario cuando se utiliceAWS CLI:
% export AWS_EXECUTION_ENV="aws-cli BraketSchemas/1.8.0" # Or for single execution % AWS_EXECUTION_ENV="aws-cli BraketSchemas/1.8.0" aws braket <cmd> [options]
Para configurar la variable de entorno AWS_EXECUTION_ENV para configurar el agente de usuario al utilizar Boto3:
import boto3 import botocore client = boto3.client("braket", config=botocore.client.Config(user_agent_extra="BraketSchemas/1.8.0"))
Para configurar la variable de entorno AWS_EXECUTION_ENV para configurar el agente de usuario cuando se utilice el JavaScript/TypeScript (SDK v2):
import Braket from 'aws-sdk/clients/braket'; const client = new Braket({ region: 'us-west-2', credentials: AWS_CREDENTIALS, customUserAgent: 'BraketSchemas/1.8.0' });
Para configurar la variable de entorno AWS_EXECUTION_ENV para configurar el agente de usuario cuando se utilice el JavaScript/TypeScript (SDK v3):
import { Braket } from '@aws-sdk/client-braket'; const client = new Braket({ region: 'us-west-2', credentials: AWS_CREDENTIALS, customUserAgent: 'BraketSchemas/1.8.0' });
Para configurar la variable de entorno AWS_EXECUTION_ENV para configurar el agente de usuario al utilizar el SDK de Go:
os.Setenv("AWS_EXECUTION_ENV", "BraketGo BraketSchemas/1.8.0") mySession := session.Must(session.NewSession()) svc := braket.New(mySession)
Para configurar la variable de entorno AWS_EXECUTION_ENV para configurar el agente de usuario al utilizar el SDK de Java:
ClientConfiguration config = new ClientConfiguration(); config.setUserAgentSuffix("BraketSchemas/1.8.0"); BraketClient braketClient = BraketClientBuilder.standard().withClientConfiguration(config).build();
Advertencia de soporte del simulador local
LocalSimulator
Admite funciones avanzadas de OpenQASM que pueden no estar disponibles en las QPU o en los simuladores bajo demanda. Si su programa contiene funciones de lenguaje específicas únicamente paraLocalSimulator
, 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 advertencia: `Este programa utiliza funciones del lenguaje OpenQASM que solo se admiten en LocalSimulator. Es posible que algunas de estas funciones no sean compatibles con las QPU o los simuladores bajo demanda.
Para obtener más información sobre las funciones compatibles de OpenQASM, haga clic aquí.