Risoluzione dei problemi di OpenQASM - Amazon Braket

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi di OpenQASM

Questa sezione fornisce i puntatori per la risoluzione dei problemi che potrebbero essere utili quando si riscontrano errori utilizzando OpenQASM 3.0.

Errore di istruzione Includi

Braketattualmente non dispone di un file di libreria di gate standard da includere nei programmi OpenQASM. (Braketi cancelli supportati possono essere trovati). Ad esempio, l'esempio seguente genera un errore di parser.

OPENQASM 3; include "standardlib.inc";

Questo codice genera il messaggio di errore:No terminal matches '"' in the current parser context, at line 2 col 17.

Non contiguoqubitserrore

Utilizzo di non contiguoqubitssu dispositivi cherequiresContiguousQubitIndicesessere impostato sutruenella funzionalità del dispositivo generano un errore.

Quando si eseguono attività su simulatori eIonQ, il seguente programma attiva l'errore.

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

Questo codice genera il messaggio di errore: `Il dispositivo richiede [.noloc] `qubits` contiguo.Qubitregister q non è stato utilizzatoqubitsq [1], q [4] . \ `

Miscelazione fisicaqubitscon virtualequbitserrore

Miscelazione fisicaqubitscon virtualequbitsnello stesso programma non è consentito e provoca un errore. Il codice seguente genera l'errore.

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

Questo codice genera il messaggio di errore: `[riga 4] mescola [.noloc] `qubits` fisico equbitsregistri. \ `

Richiesta di tipi di risultati e misurazionequbitsnello stesso errore del programma

Richiedere tipi di risultati e quelloqubitssono espressamente misurati nello stesso programma generando un errore. Il codice seguente genera l'errore.

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

Questo codice genera il messaggio di errore: `[.noloc] `Qubits` non deve essere misurato esplicitamente quando vengono richiesti i tipi di risultati. \ `

Classica equbitErrore superato

Solo un registro classico e unoqubitsono consentiti registrarsi. Il codice seguente genera l'errore.

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

Questo codice genera il messaggio di errore: `[riga 4] non può dichiarare un registro [.noloc] `qubit`. Solo 1qubitè supportato il registro. \ `

Casella non preceduta da un errore verbatim pragma

Tutte le scatole devono essere precedute da un pragma verbatim. Il codice seguente genera l'errore.

box{ rx(0.5) $0; }

Questo codice genera il messaggio di errore:In verbatim boxes, native gates are required. x is not a device native gate.

Caselle Verbatim mancano errori di cancelli nativi

Le scatole Verbatim dovrebbero avere cancelli nativi e fisiciqubits. Il codice seguente genera l'errore nativo di gates.

#pragma braket verbatim box{ x $0; }

Questo codice genera il messaggio di errore:In verbatim boxes, native gates are required. x is not a device native gate.

Caselle Verbatim mancanti fisichequbitserrore

Le caselle Verbatim devono essere fisichequbits. Il seguente codice genera il materiale fisico mancantequbitserrore.

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

Questo codice genera il messaggio di errore: `fisico [.noloc] `qubits` sono richiesti nella casella verbatim. \ `

Il pragma verbatim manca l'errore «braket»

È necessario includere «staffa» nel pragma verbatim. Il codice seguente genera l'errore.

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

Questo codice genera il messaggio di errore:You must include “braket” in the verbatim pragma

Singoloqubitserrore non può essere indicizzato

Singoloqubitsnon può essere indicizzato. Il codice seguente genera l'errore.

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

Questo codice genera l'errore: `[riga 4] single [.noloc] `qubit` non può essere indicizzato. \ `

Tuttavia, singoloqubitgli array possono essere indicizzati come segue:

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

Il fisicoqubitsin duequbiterrore gate non collegato

Per usare il materiale fisicoqubits, prima conferma che il dispositivo utilizzi fisiciqubitscontrollandodevice.properties.action[DeviceActionType.OPENQASM].supportPhysicalQubitse quindi verificare il grafico della connettività controllandodevice.properties.paradigm.connectivity.connectivityGraphodevice.properties.paradigm.connectivity.fullyConnected.

OPENQASM 3; cnot $0, $14;

Questo codice genera il messaggio di errore: `[riga 3] ha disconnesso [.noloc] `qubits` 0 e 14\`

GetDevice non restituisce l'errore dei risultati di OpenQASM

Se i risultati di OpenQASM non sono visualizzati nella GetDevice risposta quando si utilizza unBraketSDK, potrebbe essere necessario impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare user-agent. Consulta gli esempi di codice forniti di seguito per come eseguire questa operazione per gli SDK Go e Java.

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare user-agent quando si utilizza ilAWSCLIS:

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

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare user-agent quando si utilizza Boto3:

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

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare user-agent quando si utilizza 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' });

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare user-agent quando si utilizza 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' });

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare user-agent quando si utilizza Go SDK:

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

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare user-agent quando si utilizza Java SDK:

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