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.
Nesta seção:
- Incluir erro de declaração
- Erro não contíguo qubits
- Misturando erro físico qubits com qubits erro virtual
- Solicitando tipos de resultados e medindo qubits no mesmo erro de programa
- Os limites clássicos e de qubit registro excederam o erro
- Caixa não precedida por um erro de pragma literal
- Erro de caixas textuais sem portas nativas
- Caixas textuais sem erro físico qubits
- O pragma literal não contém o erro “braket”
- Erro único qubits não pode ser indexado
- O físico qubits em um erro de duas qubit portas não está conectado
- GetDevice não retorna o erro de resultados do OpenQASM
- Aviso de suporte do simulador local
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
LocalSimulator
Ele 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.