Solucionar problemas do OpenQASM - Amazon Braket

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solucionar problemas do OpenQASM

Esta seção fornece dicas de solução de problemas que podem ser úteis ao encontrar erros usando o OpenQASM 3.0.

Incluir erro de declaração

Atualmente, o Braket não tem um arquivo de biblioteca de portas padrão para ser incluído nos programas OpenQASM. Por exemplo, o exemplo a seguir gera um erro do analisador.

OPENQASM 3; include "standardlib.inc";

Esse código gera a mensagem de erro: No terminal matches '"' in the current parser context, at line 2 col 17.

Erro não contíguo qubits

O uso não contíguo qubits em dispositivos requiresContiguousQubitIndices configurados como na capacidade do dispositivo resulta true em um erro.

Ao executar tarefas quânticas em simuladores eIonQ, o programa a seguir aciona o erro.

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

Esse código gera a mensagem de erro: Device requires contiguous qubits. Qubit register q has unused qubits q[1], q[4].

Misturando erro físico qubits com qubits erro virtual

Não é permitido misturar o físico qubits com o virtual qubits no mesmo programa e resulta em um erro. O código a seguir gera o erro.

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

Esse código gera a mensagem de erro: [line 4] mixes physical qubits and qubits registers.

Solicitando tipos de resultados e medindo qubits no mesmo erro de programa

Solicitar tipos de resultados que qubits sejam medidos explicitamente no mesmo programa resulta em um erro. O código a seguir gera o erro.

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])

Esse código gera a mensagem de erro: Qubits should not be explicitly measured when result types are requested.

Os limites clássicos e de qubit registro excederam o erro

Somente um registro clássico e um qubit registro são permitidos. O código a seguir gera o erro.

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

Esse código gera a mensagem de erro: [line 4] cannot declare a qubit register. Only 1 qubit register is supported.

Caixa não precedida por um erro de pragma literal

Todas as caixas devem ser precedidas por um pragma literal. O código a seguir gera o erro.

box{ rx(0.5) $0; }

Esse código gera a mensagem de erro: In verbatim boxes, native gates are required. x is not a device native gate.

Erro de caixas textuais sem portas nativas

As caixas textuais devem ter portas nativas e físicas. qubits O código a seguir gera o erro de portas nativas.

#pragma braket verbatim box{ x $0; }

Esse código gera a mensagem de erro: In verbatim boxes, native gates are required. x is not a device native gate.

Caixas textuais sem erro físico qubits

As caixas textuais devem ser físicas. qubits O código a seguir gera o qubits erro físico ausente.

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

Esse código gera a mensagem de erro: Physical qubits are required in verbatim box.

O pragma literal não contém o erro “braket”

Você deve incluir “braket” no pragma literal. O código a seguir gera o erro.

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

Esse código gera a mensagem de erro: You must include “braket” in the verbatim pragma

Erro único qubits não pode ser indexado

O single qubits não pode ser indexado. O código a seguir gera o erro.

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

Esse código gera o erro: [line 4] single qubit cannot be indexed.

No entanto, qubit matrizes únicas podem ser indexadas da seguinte forma:

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

O físico qubits em um erro de duas qubit portas não está conectado

Para usar o físicoqubits, primeiro confirme se o dispositivo usa o físico qubits verificando device.properties.action[DeviceActionType.OPENQASM].supportPhysicalQubits e, em seguida, verifique o gráfico de conectividade marcando device.properties.paradigm.connectivity.connectivityGraph oudevice.properties.paradigm.connectivity.fullyConnected.

OPENQASM 3; cnot $0, $14;

Esse código gera a mensagem de erro: [line 3] has disconnected qubits 0 and 14

GetDevice não retorna o erro de resultados do OpenQASM

Se você não vê resultados do OpenQASM na GetDevice resposta ao usar um SDK do Braket, talvez seja necessário definir a variável de ambiente AWS_EXECUTION_ENV para configurar o agente de usuário. Veja os exemplos de código fornecidos abaixo para saber como fazer isso com os SDKs Go e Java.

Para definir a variável de ambiente AWS_EXECUTION_ENV para configurar o agente de usuário ao usar o: AWS 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 definir a variável de ambiente AWS_EXECUTION_ENV para configurar o agente de usuário ao usar o Boto3:

import boto3 import botocore client = boto3.client("braket", config=botocore.client.Config(user_agent_extra="BraketSchemas/1.8.0"))

Para definir a variável de ambiente AWS_EXECUTION_ENV para configurar o agente de usuário ao usar o/(SDK v2): JavaScript TypeScript

import Braket from 'aws-sdk/clients/braket'; const client = new Braket({ region: 'us-west-2', credentials: AWS_CREDENTIALS, customUserAgent: 'BraketSchemas/1.8.0' });

Para definir a variável de ambiente AWS_EXECUTION_ENV para configurar o agente de usuário ao usar o/(SDK v3): JavaScript TypeScript

import { Braket } from '@aws-sdk/client-braket'; const client = new Braket({ region: 'us-west-2', credentials: AWS_CREDENTIALS, customUserAgent: 'BraketSchemas/1.8.0' });

Para definir a variável de ambiente AWS_EXECUTION_ENV para configurar o agente de usuário ao usar o Go SDK:

os.Setenv("AWS_EXECUTION_ENV", "BraketGo BraketSchemas/1.8.0") mySession := session.Must(session.NewSession()) svc := braket.New(mySession)

Para definir a variável de ambiente AWS_EXECUTION_ENV para configurar o agente de usuário ao usar o Java SDK:

ClientConfiguration config = new ClientConfiguration(); config.setUserAgentSuffix("BraketSchemas/1.8.0"); BraketClient braketClient = BraketClientBuilder.standard().withClientConfiguration(config).build();

Aviso de suporte do simulador local

LocalSimulatorEle suporta recursos avançados no OpenQASM que podem não estar disponíveis em QPUs ou simuladores sob demanda. Se o seu programa contiver recursos de linguagem específicos somente para oLocalSimulator, conforme mostrado no exemplo a seguir, você receberá um aviso.

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

Esse código gera o aviso: `Este programa usa recursos da linguagem OpenQASM suportados somente no. LocalSimulator Alguns desses recursos podem não ser compatíveis com QPUs ou simuladores sob demanda.

Para obter mais informações sobre os recursos suportados do OpenQASM, clique aqui.