Memecahkan masalah OpenQASM - Amazon Braket

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah OpenQASM

Bagian ini menyediakan pointer pemecahan masalah yang mungkin berguna saat menghadapi kesalahan menggunakan OpenQASM 3.0.

Sertakan kesalahan pernyataan

Braket saat ini tidak memiliki file perpustakaan gerbang standar untuk disertakan dalam program OpenQASM. Misalnya, contoh berikut memunculkan kesalahan parser.

OPENQASM 3; include "standardlib.inc";

Kode ini menghasilkan pesan kesalahan: No terminal matches '"' in the current parser context, at line 2 col 17.

Kesalahan tidak bersebelahan qubits

Menggunakan perangkat yang tidak qubits bersebelahan yang requiresContiguousQubitIndices disetel ke true dalam kemampuan perangkat menghasilkan kesalahan.

Saat menjalankan tugas kuantum pada simulator danIonQ, program berikut memicu kesalahan.

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

Kode ini menghasilkan pesan kesalahan: Device requires contiguous qubits. Qubit register q has unused qubits q[1], q[4].

Mencampur fisik qubits dengan qubits kesalahan virtual

Pencampuran fisik qubits dengan virtual qubits dalam program yang sama tidak diperbolehkan dan menghasilkan kesalahan. Kode berikut menghasilkan kesalahan.

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

Kode ini menghasilkan pesan kesalahan: [line 4] mixes physical qubits and qubits registers.

Meminta jenis hasil dan mengukur qubits dalam kesalahan program yang sama

Meminta jenis hasil dan yang diukur qubits secara eksplisit dalam program yang sama menghasilkan kesalahan. Kode berikut menghasilkan kesalahan.

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

Kode ini menghasilkan pesan kesalahan: Qubits should not be explicitly measured when result types are requested.

Batas klasik dan qubit register melebihi kesalahan

Hanya satu register klasik dan satu qubit register yang diizinkan. Kode berikut menghasilkan kesalahan.

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

Kode ini menghasilkan pesan kesalahan: [line 4] cannot declare a qubit register. Only 1 qubit register is supported.

Kotak tidak didahului oleh kesalahan pragma kata demi kata

Semua kotak harus didahului dengan pragma kata demi kata. Kode berikut menghasilkan kesalahan.

box{ rx(0.5) $0; }

Kode ini menghasilkan pesan kesalahan: In verbatim boxes, native gates are required. x is not a device native gate.

Kotak kata demi kata kehilangan kesalahan gerbang asli

Kotak kata demi kata harus memiliki gerbang asli dan fisik. qubits Kode berikut menghasilkan kesalahan gerbang asli.

#pragma braket verbatim box{ x $0; }

Kode ini menghasilkan pesan kesalahan: In verbatim boxes, native gates are required. x is not a device native gate.

Kotak kata demi kata kehilangan kesalahan fisik qubits

Kotak kata demi kata harus memiliki fisik. qubits Kode berikut menghasilkan qubits kesalahan fisik yang hilang.

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

Kode ini menghasilkan pesan kesalahan: Physical qubits are required in verbatim box.

Pragma kata demi kata tidak memiliki kesalahan “braket”

Anda harus memasukkan “braket” dalam pragma kata demi kata. Kode berikut menghasilkan kesalahan.

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

Kode ini menghasilkan pesan kesalahan: You must include “braket” in the verbatim pragma

Kesalahan tunggal qubits tidak dapat diindeks

Single qubits tidak dapat diindeks. Kode berikut menghasilkan kesalahan.

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

Kode ini menghasilkan kesalahan: [line 4] single qubit cannot be indexed.

Namun, qubit array tunggal dapat diindeks sebagai berikut:

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

Fisik qubits di dua qubit gerbang tidak terhubung kesalahan

Untuk menggunakan fisikqubits, pertama-tama konfirmasikan bahwa perangkat menggunakan fisik qubits dengan memeriksa device.properties.action[DeviceActionType.OPENQASM].supportPhysicalQubits dan kemudian memverifikasi grafik konektivitas dengan memeriksa device.properties.paradigm.connectivity.connectivityGraph ataudevice.properties.paradigm.connectivity.fullyConnected.

OPENQASM 3; cnot $0, $14;

Kode ini menghasilkan pesan kesalahan: [line 3] has disconnected qubits 0 and 14

GetDevice tidak mengembalikan kesalahan hasil OpenQASM

Jika Anda tidak melihat hasil OpenQASM dalam GetDevice respons saat menggunakan Braket SDK, Anda mungkin perlu menyetel variabel lingkungan AWS_EXECUTION_ENV untuk mengonfigurasi agen-pengguna. Lihat contoh kode yang disediakan di bawah ini untuk mengetahui cara melakukannya untuk Go dan Java SDK.

Untuk menyetel variabel lingkungan AWS_EXECUTION_ENV untuk mengonfigurasi agen-pengguna saat menggunakan: 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]

Untuk menyetel variabel lingkungan AWS_EXECUTION_ENV untuk mengonfigurasi agen-pengguna saat menggunakan Boto3:

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

Untuk menyetel variabel lingkungan AWS_EXECUTION_ENV untuk mengonfigurasi agen-pengguna saat menggunakan/(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' });

Untuk menyetel variabel lingkungan AWS_EXECUTION_ENV untuk mengonfigurasi agen-pengguna saat menggunakan/(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' });

Untuk menyetel variabel lingkungan AWS_EXECUTION_ENV untuk mengonfigurasi agen pengguna saat menggunakan Go SDK:

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

Untuk menyetel variabel lingkungan AWS_EXECUTION_ENV untuk mengonfigurasi agen-pengguna saat menggunakan Java SDK:

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

Peringatan dukungan simulator lokal

Ini LocalSimulator mendukung fitur-fitur canggih di OpenQASM yang mungkin tidak tersedia di QPU atau simulator sesuai permintaan. Jika program Anda berisi fitur bahasa khusus hanya untukLocalSimulator, seperti yang terlihat pada contoh berikut, Anda akan menerima peringatan.

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

Kode ini menghasilkan peringatan: `Program ini menggunakan fitur bahasa OpenQASM yang hanya didukung di. LocalSimulator Beberapa fitur ini mungkin tidak didukung pada QPU atau simulator sesuai permintaan.

Untuk informasi lebih lanjut tentang fitur OpenQASM yang didukung, klik di sini.