Rigetti 提供者

提示

第一次用戶會自動取得 免費 $500 (USD) Azure Quantum 點數 ,以便與每個參與的量子硬體提供者搭配使用。 如果您已使用所有點數,但還需要更多,可以申請 Azure Quantum 點數方案

Rigetti 量子處理器 是以無法超導量子位為基礎的通用網關模型機器。 系統功能和裝置特性包括增強的讀取功能、量子處理時間的加速、多個糾纏網關係列的快速閘道時間、透過主動緩存器重設快速取樣,以及參數控制。

  • 發行者: Rigetti
  • 提供者識別碼:rigetti

Rigetti 提供者提供下列 targets 專案:

目標名稱 目標標識碼 量子位數目 Description
量子虛擬機 (QVM) rigetti.sim.qvm - Quil、Q#和 Qiskit 程式的開放原始碼模擬器。 免費。
Ankaa-2 rigetti.qpu.ankaa-2 84 個量子位 Rigetti 最強大的可用量子處理器。

注意

Rigetti 模擬器和硬體 targets 不支援 Cirq 程式。

Rigetti 的 targets 對應至 No Control Flow 配置檔。 如需此 target 配置檔及其限制的詳細資訊,請參閱 瞭解 target Azure Quantum 中的配置檔類型

Simulators

Quantum 虛擬機 (QVM) Quil 的開放原始碼模擬器。 接受 rigetti.sim.qvmtargetQuil 程式 做為文字,並在裝載於雲端的 QVM 上執行該程式,並傳回仿真的結果。

  • 工作類型: Simulation
  • 數據格式: rigetti.quil.v1rigetti.qir.v1
  • 目標識別碼:rigetti.sim.qvm
  • 目標執行設定檔: No Control Flow
  • 定價:免費 ($0)

量子計算機

所有 Rigetti 公開可用的 QPU 都可透過 Azure Quantum 取得。 這份清單可能會變更,而不需事先通知。

Ankaa-2

多晶元 84 量子位處理器提供 2.5X 效能改善,優於其他 Rigetti QPU。

  • 工作類型: Quantum Program
  • 數據格式: rigetti.quil.v1rigetti.qir.v1
  • 目標識別碼:rigetti.qpu.ankaa-2
  • 目標執行設定檔: No Control Flow

定價

若要查看 Rigetti 的計費方案,請流覽 Azure Quantum 定價

輸入格式

所有 Rigetti targets 目前都接受兩種格式:

  • rigetti.quil.v1,這是 Quil 程式的文字。
  • rigetti.qir.v1,這是 QIR 位程序代碼。

所有專案 targets 也會採用選擇性 count 的整數參數,以定義要執行的快照數目。 如果省略,程式只會執行一次。

奎爾

所有 Rigetti targets 都接受 rigetti.quil.v1 輸入格式,這是 Quil 程式的文字,代表 Quantum 指令語言。 根據預設,程式會先使用 quilc 編譯,再執行。 不過,quilc 不支援 (Quil-T) 的脈衝層級控制功能,因此如果您想要使用這些功能,您必須提供 原生 Quil 程式 (也包含 Quil-T) 作為輸入,並指定輸入參數 skipQuilc: true

若要讓建構 Quil 程式更容易,您可以搭配pyquil-for-azure-quantum封裝使用pyQuil。 若沒有此套件, pyQuil 可用來 建構 Quil 程式,但無法將其提交至 Azure Quantum。

QIR

所有 Rigetti 硬體都支援使用 QIR 基底設定檔 v1rigetti.qir.v1執行 Quantum Intermediate Representation (QIR) 相容作業。 QIR 提供通用介面,可支援許多量子語言和 target 平臺進行量子計算,並啟用高階語言與機器之間的通訊。 例如,您可以將 Q#、Quil 或 Qiskit 作業提交至 Rigetti 硬體,而 Azure Quantum 會自動為您處理輸入。 如需詳細資訊,請參閱Quantum Intermediate Representation

選取正確的輸入格式

您應該使用 Quil 或其他 QIR 相容語言嗎? 其會歸到您的最終使用案例。 QIR 對許多用戶來說更容易存取,而 Quil 目前功能更強大。

如果您使用 Qiskit、Q#或支援 QIR 產生的另一個工具組,且您的應用程式可透過 Azure Quantum 在 Rigetti targets 上運作,則 QIR 適合您! QIR 具有快速演進的規格,而 Rigetti 會隨著時間持續增加對更進階 QIR 程式的支持,現今無法編譯的專案可能明天會妥善編譯。

另一方面,Quil 程式表示來自任何平臺的 Rigetti 系統使用者可使用的完整功能,包括 Azure Quantum。 如果您想要量身打造量子網關的分解,或在脈衝層級撰寫程式,您會想要在Quil中工作,因為這些功能尚未透過QIR提供。

範例

提交 Quil 作業最簡單的方式是使用 pyquil-for-azure-quantum 套件,因為它可讓您使用連結庫的工具和檔 pyQuil

您也可以手動建構 Quil 程式,並使用套件直接提交 azure-quantum 它們。

from pyquil.gates import CNOT, MEASURE, H
from pyquil.quil import Program
from pyquil.quilbase import Declare
from pyquil_for_azure_quantum import get_qpu, get_qvm

# Note that some environment variables must be set to authenticate with Azure Quantum
qc = get_qvm()  # For simulation
# qc = get_qpu("Ankaa-2") for submitting to a QPU

program = Program(
    Declare("ro", "BIT", 2),
    H(0),
    CNOT(0, 1),
    MEASURE(0, ("ro", 0)),
    MEASURE(1, ("ro", 1)),
).wrap_in_numshots_loop(5)

# Optionally pass to_native_gates=False to .compile() to skip the compilation stage
result = qc.run(qc.compile(program))
data_per_shot = result.readout_data["ro"]
# Here, data_per_shot is a numpy array, so you can use numpy methods
assert data_per_shot.shape == (5, 2)
ro_data_first_shot = data_per_shot[0]
assert ro_data_first_shot[0] == 1 or ro_data_first_shot[0] == 0

# Let's print out all the data
print("Data from 'ro' register:")
for i, shot in enumerate(data_per_shot):
    print(f"Shot {i}: {shot}")