Rigetti 量子處理器 是通用的閘極模型機器,以可調諧的超導量子比特為基礎。 系統功能和裝置特性包括增強的讀取功能、量子處理時間的加速、多個糾纏網關係列的快速閘道時間、透過主動緩存器重設進行快速取樣,以及參數控制。
- 發行者: Rigetti
- 提供者識別碼:
rigetti
Rigetti 供應商提供了下列 targets:
目標名稱 | 目標標識碼 | 量子位數目 | 描述 |
---|---|---|---|
量子虛擬機 (QVM) | rigetti.sim.qvm | - | 適用於 Quil、Q# 和 Qiskit 程式的開放原始碼模擬器。 免費。 |
安卡-3 | rigetti.qpu.ankaa-3 | 84 個量子位 |
注意
Rigetti 模擬器和硬體 targets 不支援 Cirq 程式。
里蓋蒂的 targets 對應於 QIR Base 設定檔案。 如需此 target 配置檔及其限制的詳細資訊,請參閱 瞭解 target Azure Quantum 中的配置檔類型。
量子計算機
所有 Rigetti 對外公開的 QPU 都可透過 Azure Quantum 取得。 這份清單可能會變更,而不事先通知。
Ankaa-3
84-量子位元處理器。
- 工作類型:
Quantum Program
- 數據格式:
rigetti.quil.v1
、rigetti.qir.v1
- 目標標識碼:
rigetti.qpu.ankaa-3
- 目標執行配置檔:QIR Base
模擬器
Quantum 虛擬機 (QVM) 是 Quil 的開放原始碼模擬器。 接受 rigetti.sim.qvm
targetQuil 程式 做為文字,並在裝載於雲端的 QVM 上執行該程式,並傳回仿真的結果。
- 工作類型:
Simulation
- 數據格式:
rigetti.quil.v1
、rigetti.qir.v1
- 目標標識碼:
rigetti.sim.qvm
- 目標執行配置檔:QIR Base
- 定價:免費(0美元)
定價
若要查看 Rigetti 的計費方案,請流覽 Azure Quantum 定價。
輸入格式
所有 Rigetti targets 目前都接受兩種格式:
-
rigetti.quil.v1
,這是 Quil 程式的文字。 -
rigetti.qir.v1
,這是 QIR 位碼。
所有 targets 專案也會採用選擇性 count
的整數參數,以定義要執行的拍攝次數。 如果省略,程式只會執行一次。
Quil
所有 Rigettitargets都接受rigetti.quil.v1
輸入格式,也就是 Quil 程式的文字,代表量子指令語言 (Quantum Instruction Language)。 根據預設,程式會先使用 quilc 編譯,再執行。 不過,quilc 不支援脈衝層級控制功能 (Quil-T),因此如果您想要使用這些功能,您必須提供原生 Quil 程式(也包含 Quil-T)作為輸入,並指定輸入參數skipQuilc: true
。
若要讓建構 Quil 程式變得更容易,您可以使用 pyQuil
搭配 pyquil-for-azure-quantum
套件。 如果沒有此套件, pyQuil
可用來 建構 Quil 程式,但無法將它們提交至 Azure Quantum。
QIR
所有 Rigetti 硬體都支援執行符合 Quantum Intermediate Representation (QIR) 規範的工作,並且遵循 QIR Base Profile, v1 作為 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}")