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.qvm
target Quil 程式 做為文字,並在裝載於雲端的 QVM 上執行該程式,並傳回仿真的結果。
- 工作類型:
Simulation
- 數據格式:
rigetti.quil.v1
、rigetti.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 程式變得更容易,您可以搭配套件使用pyQuil
pyquil-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}")