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.
Di bagian ini:
- Sertakan kesalahan pernyataan
- Kesalahan tidak bersebelahan qubits
- Mencampur fisik qubits dengan qubits kesalahan virtual
- Meminta jenis hasil dan mengukur qubits dalam kesalahan program yang sama
- Batas klasik dan qubit register melebihi kesalahan
- Kotak tidak didahului oleh kesalahan pragma kata demi kata
- Kotak kata demi kata kehilangan kesalahan gerbang asli
- Kotak kata demi kata kehilangan kesalahan fisik qubits
- Pragma kata demi kata tidak memiliki kesalahan “braket”
- Kesalahan tunggal qubits tidak dapat diindeks
- Fisik qubits di dua qubit gerbang tidak terhubung kesalahan
- GetDevice tidak mengembalikan kesalahan hasil OpenQASM
- Peringatan dukungan simulator lokal
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.