Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fitur OpenQASM apa yang didukung Braket?
Bagian berikut mencantumkan tipe data OpenQASM 3.0, pernyataan, dan instruksi pragma yang didukung oleh Braket.
Di bagian ini:
Tipe data OpenQASM yang didukung
Tipe data OpenQASM berikut didukung oleh Amazon Braket.
-
Bilangan bulat non-negatif digunakan untuk indeks qubit (virtual dan fisik):
-
cnot q[0], q[1];
-
h $0;
-
-
Angka atau konstanta floating-point dapat digunakan untuk sudut rotasi gerbang:
-
rx(-0.314) $0;
-
rx(pi/4) $0;
-
catatan
pi adalah konstanta bawaan di OpenQASM dan tidak dapat digunakan sebagai nama parameter.
-
Array bilangan kompleks (dengan
im
notasi openQASM untuk bagian imajiner) diizinkan dalam pragma tipe hasil untuk mendefinisikan hermitian umum yang dapat diamati dan dalam pragma kesatuan:-
#pragma braket unitary [[0, -1im], [1im, 0]] q[0]
-
#pragma braket result expectation hermitian([[0, -1im], [1im, 0]]) q[0]
-
Pernyataan OpenQASM yang didukung
Pernyataan OpenQASM berikut didukung oleh Amazon Braket.
-
Header: OPENQASM 3;
-
Deklarasi bit klasik:
-
bit b1;
(setara,)creg b1;
-
bit[10] b2;
(setara,)creg b2[10];
-
-
Deklarasi Qubit:
-
qubit b1;
(setara,)qreg b1;
-
qubit[10] b2;
(setara,)qreg b2[10];
-
-
Pengindeksan dalam array:
q[0]
-
Masukan:
input float alpha;
-
spesifikasi fisikqubits:
$0
-
Gerbang dan operasi yang didukung pada perangkat:
-
h $0;
-
iswap q[0], q[1];
-
catatan
Gerbang yang didukung perangkat dapat ditemukan di properti perangkat untuk tindakan OpenQASM; tidak ada definisi gerbang yang diperlukan untuk menggunakan gerbang ini.
-
Pernyataan kotak kata demi kata. Saat ini, kami tidak mendukung notasi durasi kotak. Gerbang asli dan fisik qubits diperlukan dalam kotak kata demi kata.
#pragma braket verbatim box{ rx(0.314) $0; }
-
Penugasan pengukuran dan pengukuran pada qubits atau seluruh qubit register.
-
measure $0;
-
measure q;
-
measure q[0];
-
b = measure q;
-
measure q → b;
-
Braket OpenQASM pragma
Petunjuk pragma OpenQASM berikut didukung oleh Amazon Braket.
-
Pragma kebisingan
-
#pragma braket noise bit_flip(0.2) q[0]
-
#pragma braket noise phase_flip(0.1) q[0]
-
#pragma braket noise pauli_channel
-
-
Pragma kata demi kata
-
#pragma braket verbatim
-
-
Jenis hasil pragma
-
Jenis hasil invarian dasar:
-
Vektor negara:
#pragma braket result state_vector
-
Matriks kepadatan:
#pragma braket result density_matrix
-
-
Pragma komputasi gradien:
-
Gradien bersebelahan:
#pragma braket result adjoint_gradient expectation(2.2 * x[0] @ x[1]) all
-
-
Jenis hasil dasar Z:
-
Amplitudo:
#pragma braket result amplitude "01"
-
Probabilitas:
#pragma braket result probability q[0], q[1]
-
-
Jenis hasil yang diputar dasar
-
Harapan:
#pragma braket result expectation x(q[0]) @ y([q1])
-
Varians:
#pragma braket result variance hermitian([[0, -1im], [1im, 0]]) $0
-
Sampel:
#pragma braket result sample h($1)
-
-
catatan
OpenQASM 3.0 kompatibel dengan OpenQASM 2.0, sehingga program yang ditulis menggunakan 2.0 dapat berjalan di Braket. Namun fitur OpenQASM 3.0 yang didukung oleh Braket memang memiliki beberapa perbedaan sintaks kecil, seperti vs dan vs. qreg
creg
qubit
bit
Ada juga perbedaan dalam sintaks pengukuran, dan ini perlu didukung dengan sintaks yang benar.
Dukungan fitur lanjutan untuk OpenQASM di Simulator Lokal
Ini LocalSimulator
mendukung fitur OpenQASM canggih yang tidak ditawarkan sebagai bagian dari simulator QPU atau on-demand Braket. Daftar fitur berikut hanya didukung diLocalSimulator
:
-
Pengubah gerbang
-
Gerbang bawaan OpenQASM
-
Variabel klasik
-
Operasi klasik
-
Gerbang kustom
-
Kontrol klasik
-
File QASM
-
Subrutin
Untuk contoh setiap fitur lanjutan, lihat contoh buku catatan
Operasi dan tata bahasa yang didukung dengan OpenPulse
Tipe OpenPulse Data yang Didukung
Blok Cal:
cal { ... }
Blok Defcal:
// 1 qubit defcal x $0 { ... } // 1 qubit w. input parameters as constants defcal my_rx(pi) $0 { ... } // 1 qubit w. input parameters as free parameters defcal my_rz(angle theta) $0 { ... } // 2 qubit (above gate args are also valid) defcal cz $1, $0 { ... }
Bingkai:
frame my_frame = newframe(port_0, 4.5e9, 0.0);
Bentuk gelombang:
// prebuilt waveform my_waveform_1 = constant(1e-6, 1.0); //arbitrary waveform my_waveform_2 = {0.1 + 0.1im, 0.1 + 0.1im, 0.1, 0.1};
Contoh Kalibrasi Gerbang Kustom:
cal { waveform wf1 = constant(1e-6, 0.25); } defcal my_x $0 { play(wf1, q0_rf_frame); } defcal my_cz $1, $0 { barrier q0_q1_cz_frame, q0_rf_frame; play(q0_q1_cz_frame, wf1); delay[300ns] q0_rf_frame shift_phase(q0_rf_frame, 4.366186381749424); delay[300ns] q0_rf_frame; shift_phase(q0_rf_frame.phase, 5.916747563126659); barrier q0_q1_cz_frame, q0_rf_frame; shift_phase(q0_q1_cz_frame, 2.183093190874712); } bit[2] ro; my_x $0; my_cz $1,$0; c[0] = measure $0;
Contoh pulsa sewenang-wenang:
bit[2] ro; cal { waveform wf1 = {0.1 + 0.1im, 0.1 + 0.1im, 0.1, 0.1}; barrier q0_drive, q0_q1_cross_resonance; play(q0_q1_cross_resonance, wf1); delay[300ns] q0_drive; shift_phase(q0_drive, 4.366186381749424); delay[300dt] q0_drive; barrier q0_drive, q0_q1_cross_resonance; play(q0_q1_cross_resonance, wf1); ro[0] = capture_v0(r0_measure); ro[1] = capture_v0(r1_measure); }