Fitur OpenQASM apa yang didukung Braket? - Amazon Braket

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.

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 ini. Untuk spesifikasi OpenQASM lengkap, lihat situs web OpenQASM.

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); }