共用方式為


Rigetti 提供者

提示

當您建立 Azure Quantum 工作區時,會自動為每個量子硬體提供者取得 500 美元的免費 Azure Quantum 點數 。 您可以使用 Azure Quantum 點數,將第一個量子程式提交到真正的量子硬體。

注意

自 2024 年 10 月 4 日起,Ankaa-2 QPU 已從 Azure Quantum 服務淘汰。

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

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

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

Target 名稱 Target 標識碼 量子位數目 描述
量子虛擬機 (QVM) rigetti.sim.qvm - 適用於 Quil、Q# 和 Qiskit 程式的開放原始碼模擬器。 免費。

注意

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

里蓋蒂的 targets 對應到 QIR Base 配置檔。 如需此 target 配置檔及其限制的詳細資訊,請參閱 瞭解 target Azure Quantum 中的配置檔類型。

模擬器

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

  • 工作類型: Simulation
  • 數據格式: rigetti.quil.v1rigetti.qir.v1
  • Target 識別碼: rigetti.sim.qvm
  • Target 執行設定檔: QIR Base
  • 定價:免費(0美元)

定價

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

輸入格式

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

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

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

Quil

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

若要讓建構 Quil 程式變得更容易,您可以搭配套件使用pyQuilpyquil-for-azure-quantum。 如果沒有此套件, pyQuil 可用來 建構 Quil 程式,但無法將它們提交至 Azure Quantum。

QIR

所有 Rigetti 硬體都支援使用 Profile,v1 作為 執行Quantum Intermediate Representation符合 QIR 規範的工作。QIR Base rigetti.qir.v1 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 程式表示所有平臺,包括 Azure Quantum 在內的 Rigetti 系統使用者可以使用的完整功能。 如果您想要量身打造量子閘道的分解,或以脈衝層級撰寫程式,您會想要在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

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