使用英语阅读

通过


你当前正在访问 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.qvmtarget Quil 程序 作为文本,并在云中托管的 QVM 上运行该程序,并返回模拟结果。

  • 作业类型:Simulation
  • 数据格式:rigetti.quil.v1rigetti.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 整数参数来定义要运行的镜头数。 如果省略,程序仅运行一次。

Quil

所有 Rigetti targets 都接受rigetti.quil.v1输入格式,即 Quil 程序的文本,它代表量子指令语言。 默认情况下,程序在运行之前使用 quilc 进行编译。 但是,quilc 不支持脉冲级控制功能 (Quil-T),因此如果你想要使用这些功能,则必须提供本机 Quil 程序(也包含 Quil-T)作为输入并指定输入参数 skipQuilc: true

为了更轻松地构造 Quil 程序,可将 pyQuilpyquil-for-azure-quantum 包一起使用。 如果不使用此包,可以使用 pyQuil 来构造 Quil 程序,但不要将其提交到 Azure Quantum

QIR

所有 Rigetti 硬件都支持执行 Quantum Intermediate Representation 符合配置文件的作业(QIR), QIR Base v1rigetti.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}")