培训
你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Rigetti 提供商
提示
创建 Azure Quantum 工作区时,会自动为每个量子硬件提供商获取 500 美元的免费 Azure Quantum 信用额度 。 可以使用 Azure Quantum 信用将第一个量子程序提交到真正的量子硬件。
备注
自 2024 年 10 月 4 日起,Ankaa-2 QPU 已弃用 Azure Quantum 服务。
Rigetti 量子处理器是基于可调超导量子比特的通用门模型计算机。 系统功能和设备特征包括增强的读出功能、加速的量子处理时间、多个纠缠门系列的快速门时间、通过有源寄存器复位进行快速采样和参数控制。
- 发行商:Rigetti
- 提供程序 ID:
rigetti
Rigetti 提供商提供以下 targets 功能:
Target 名称 | Target ID | 量子比特数 | 说明 |
---|---|---|---|
量子虚拟机 (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 ID:
rigetti.sim.qvm
- Target 执行配置文件: QIR Base
- 定价:免费(0 美元)
若要查看 Rigetti 的计费计划,请访问 Azure Quantum 定价。
所有 Rigetti targets 目前都接受两种格式:
rigetti.quil.v1
,即 Quil 程序的文本。rigetti.qir.v1
,即 QIR Bitcode。
所有 targets 参数还采用可选的 count
整数参数来定义要运行的镜头数。 如果省略,程序仅运行一次。
所有 Rigetti targets 都接受rigetti.quil.v1
输入格式,即 Quil 程序的文本,它代表量子指令语言。 默认情况下,程序在运行之前使用 quilc 进行编译。 但是,quilc 不支持脉冲级控制功能 (Quil-T),因此如果你想要使用这些功能,则必须提供本机 Quil 程序(也包含 Quil-T)作为输入并指定输入参数 skipQuilc: true
。
为了更轻松地构造 Quil 程序,可将 pyQuil
与 pyquil-for-azure-quantum
包一起使用。 如果不使用此包,可以使用 pyQuil
来构造 Quil 程序,但不要将其提交到 Azure Quantum。
所有 Rigetti 硬件都支持执行 Quantum Intermediate Representation 符合配置文件的作业(QIR), QIR Base 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 程序能够表达可供 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
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}")