布拉克QASM特支援哪些開放功能? - Amazon Braket

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

布拉克QASM特支援哪些開放功能?

以下部分列出了 Braket 支持的 Open QASM 3.0 數據類型,語句和編譯指令。

支援的開放QASM資料類型

以下開放QASM數據類型由 Amazon Braket 支持。

  • 非負整數用於(虛擬和物理)量子比特索引:

    • cnot q[0], q[1];

    • h $0;

  • 澆口旋轉角度可以使用浮點數或常數:

    • rx(-0.314) $0;

    • rx(pi/4) $0;

注意

pi 是 Open 中的內建常數QASM,無法用作參數名稱。

  • 在結果類型編譯指令中允許複數數組(對於虛數部分使用 Open QASM im 符號),用於定義一般的埃爾米蒂亞觀察值和單一編譯指令:

    • #pragma braket unitary [[0, -1im], [1im, 0]] q[0]

    • #pragma braket result expectation hermitian([[0, -1im], [1im, 0]]) q[0]

支持的打開QASM語句

下面的 Open QASM 語句是由Amazon布拉克特支持。

  • Header: OPENQASM 3;

  • 經典位聲明:

    • bit b1;(等同地,creg b1;)

    • bit[10] b2;(等同地,creg b2[10];)

  • 量子比特聲明:

    • qubit b1;(等同地,qreg b1;)

    • qubit[10] b2;(等同地,qreg b2[10];)

  • 在數組中索引:q[0]

  • 輸入:input float alpha;

  • 物理規範qubits:$0

  • 設備上支持的門和操作:

    • h $0;

    • iswap q[0], q[1];

注意

可以在 QASM「打開」操作的設備屬性中找到設備支持的門;使用這些門不需要門定義。

  • 逐字框語句。目前,我們不支持框持續時間符號。本機門和物理qubits是必需的逐字框。

#pragma braket verbatim box{ rx(0.314) $0; }
  • qubits或整個qubit寄存器上的測量和測量分配。

    • measure $0;

    • measure q;

    • measure q[0];

    • b = measure q;

    • measure q → b;

注意

pi 是 Open 中的內建常數QASM,無法用作參數名稱。

布拉克打開QASM編譯

下面的打開編QASM譯指令是由布拉克特支Amazon持。

  • 噪音編譯

    • #pragma braket noise bit_flip(0.2) q[0]

    • #pragma braket noise phase_flip(0.1) q[0]

    • #pragma braket noise pauli_channel

  • 逐字譯文

    • #pragma braket verbatim

  • 結果類型編譯

    • 基礎不變結果類型:

      • 狀態向量:#pragma braket result state_vector

      • 密度矩陣:#pragma braket result density_matrix

    • 梯度計算編譯:

      • 伴隨漸變:#pragma braket result adjoint_gradient expectation(2.2 * x[0] @ x[1]) all

    • Z 基礎結果類型:

      • 振幅:#pragma braket result amplitude "01"

      • 概率:#pragma braket result probability q[0], q[1]

    • 基礎旋轉結果類型

      • 期望:#pragma braket result expectation x(q[0]) @ y([q1])

      • 差異:#pragma braket result variance hermitian([[0, -1im], [1im, 0]]) $0

      • 示例:#pragma braket result sample h($1)

注意

打開 QASM 3.0 與 Open 2.0 向後兼容,因此使用 QASM 2.0 編寫的程序可以在布拉克特上運行。但是,Braket 支持的 Open QASM 3.0 功能確實存在一些小的語法差異,例如 qreg vs cregqubit vs bit。測量語法也有所不同,而且這些語法必須使用正確的語法來支援。

在本機模擬器QASM上開啟的進階功能支援

LocalSimulator支持高級打開QASM功能,這些功能不作為 Braket 的或按需模擬器的QPU一部分提供。下列功能清單僅支援LocalSimulator

  • 門修飾符

  • 打開QASM內置門

  • 经典变星

  • 经典作业

  • 自訂閘門

  • 古典控制

  • QASM文件

  • 子程序

如需每項進階功能的範例,請參閱此範例筆記本。如需完整的「開啟」QASM 規格,請參閱「開啟」QASM 網站

支持的操作和語法 OpenPulse

支援的 OpenPulse 資料類型

卡路里塊:

cal { ... }

除錯塊:

// 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 { ... }

框架:

frame my_frame = newframe(port_0, 4.5e9, 0.0);

波形:

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

自訂閘門校正範例:

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;

任意脈衝示例:

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