Risolvi i problemi relativi a OpenQASM - Amazon Braket

Impara le basi dell'informatica quantistica con! AWS Iscriviti all'Amazon Braket Digital Learning Plan e ottieni il tuo badge digitale dopo aver completato una serie di corsi di apprendimento e una valutazione digitale.

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à.

Risolvi i problemi relativi a OpenQASM

Questa sezione fornisce suggerimenti per la risoluzione dei problemi che potrebbero essere utili in caso di errori utilizzando OpenQASM 3.0.

Errore di inclusione dell'istruzione

Braket attualmente non dispone di un file di libreria gate standard da includere nei programmi OpenQASM. Ad esempio, l'esempio seguente genera un errore del 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.

Errore non contiguo qubits

L'utilizzo della funzionalità non contigua qubits su dispositivi requiresContiguousQubitIndices impostati sulla funzionalità del dispositivo true genera un errore.

Quando si eseguono attività quantistiche 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: Device requires contiguous qubits. Qubit register q has unused qubits q[1], q[4].

Combinazione di errori fisici qubits con qubits errori virtuali

La combinazione qubits di elementi fisici e virtuali qubits nello stesso programma non è consentita e genera un errore. Il codice seguente genera l'errore.

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

Questo codice genera il messaggio di errore: [line 4] mixes physical qubits and qubits registers.

Richiesta dei tipi di risultati e misurazione qubits nello stesso errore di programma

La richiesta di tipi di risultati qubits misurati esplicitamente nello stesso programma genera 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: Qubits should not be explicitly measured when result types are requested.

I limiti classici e di qubit registro hanno superato l'errore

Sono consentiti solo un registro classico e un qubit registro. Il codice seguente genera l'errore.

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

Questo codice genera il messaggio di errore: [line 4] cannot declare a qubit register. Only 1 qubit register is supported.

Casella non preceduta da un errore pragmatico letterale

Tutte le caselle devono essere precedute da un pragma letterale. 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.

Errore con porte native mancanti nelle caselle Verbatim

Le caselle Verbatim devono avere porte native e fisiche. qubits Il codice seguente genera l'errore native 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.

Errore fisico mancante nelle caselle Verbatim qubits

Le scatole Verbatim devono avere un aspetto fisico. qubits Il codice seguente genera l'errore fisico qubits mancante.

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

Questo codice genera il messaggio di errore: Physical qubits are required in verbatim box.

Nel pragma letterale manca l'errore «braket»

È necessario includere «braket» 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

L'errore Single qubits non può essere indicizzato

Il singolo qubits non può essere indicizzato. Il codice seguente genera l'errore.

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

Questo codice genera l'errore: [line 4] single qubit cannot be indexed.

Tuttavia, i singoli qubit array possono essere indicizzati come segue:

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

Errore fisico qubits in una connessione a due qubit porte

Per utilizzare un dispositivo fisicoqubits, verifica innanzitutto che il dispositivo utilizzi un dispositivo fisico qubits controllando device.properties.action[DeviceActionType.OPENQASM].supportPhysicalQubits e quindi verifica il grafico di connettività selezionando device.properties.paradigm.connectivity.connectivityGraph odevice.properties.paradigm.connectivity.fullyConnected.

OPENQASM 3; cnot $0, $14;

Questo codice genera il messaggio di errore: [line 3] has disconnected qubits 0 and 14

GetDevice non restituisce l'errore dei risultati di OpenQASM

Se non vedi i risultati di OpenQASM nella GetDevice risposta quando usi un Braket SDK, potrebbe essere necessario impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare l'agente utente. Vedi gli esempi di codice forniti di seguito per sapere come eseguire questa operazione per gli SDK Go e Java.

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare l'agente utente quando si utilizza: 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]

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare l'agente utente 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 l'agente utente quando si utilizza/(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' });

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare l'agente utente quando si utilizza/(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' });

Per impostare la variabile di ambiente AWS_EXECUTION_ENV per configurare l'agente utente 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 l'agente utente quando si utilizza Java SDK:

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

Avviso di supporto del simulatore locale

LocalSimulatorSupporta funzionalità avanzate in OpenQASM che potrebbero non essere disponibili su QPU o simulatori on-demand. Se il programma contiene funzionalità linguistiche specifiche solo perLocalSimulator, come illustrato nell'esempio seguente, riceverai un avviso.

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

Questo codice genera l'avviso: `Questo programma utilizza le funzionalità del linguaggio OpenQASM supportate solo in. LocalSimulator Alcune di queste funzionalità potrebbero non essere supportate su QPU o simulatori on-demand.

Per ulteriori informazioni sulle funzionalità OpenQASM supportate, fai clic qui.