Solucionar problemas de OpenQASM - Amazon Braket

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.

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

LocalSimulatorAdmite 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í.