你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Rigetti 提供商

提示

首次使用的用户自动获得 500 美元 (美元的免费) Azure Quantum 额度 ,用于每个参与的量子硬件提供商。 如果你已用完所有额度,且需要更多额度,可以申请 Azure Quantum 额度计划

Rigetti 量子处理器是基于可调超导量子比特的通用门模型计算机。 系统功能和设备特征包括增强的读出功能、加速的量子处理时间、多个纠缠门系列的快速门时间、通过有源寄存器复位进行快速采样和参数控制。

  • 发行商:Rigetti
  • 提供程序 ID:rigetti

Rigetti 提供程序提供以下 targets 功能:

目标名称 目标 ID 量子比特数 说明
量子虚拟机 (QVM) rigetti.sim.qvm - 适用于 Quil、Q# 和 Qiskit 程序的开源模拟器。 免费。
Ankaa-2 rigetti.qpu.ankaa-2 84 个量子比特 Rigetti 最强大的可用量子处理器。

注意

Rigetti 模拟器和硬件 targets 不支持 Cirq 程序。

Rigetti 的 targets 对应于配置文件 No Control Flow 。 有关此 target 配置文件及其限制的详细信息,请参阅 了解 target Azure Quantum 中的配置文件类型

模拟器

Quantum 虚拟机 (QVM)Quil 的开源模拟器。 接受 rigetti.sim.qvmtargetQuil 程序 作为文本,并在云中托管的 QVM 上运行该程序,并返回模拟结果。

  • 作业类型:Simulation
  • 数据格式:rigetti.quil.v1rigetti.qir.v1
  • 目标 ID:rigetti.sim.qvm
  • 目标执行配置文件: No Control Flow
  • 定价:免费(0 美元)

量子计算机

Rigetti 公开发布的所有 QPU 均可通过 Azure Quantum 获取。 此列表随时可能更改,恕不另行通知。

Ankaa-2

多芯片 84 量子比特处理器,性能比其他 Rigetti QPU 提高了 2.5 倍。

  • 作业类型:Quantum Program
  • 数据格式:rigetti.quil.v1rigetti.qir.v1
  • 目标 ID:rigetti.qpu.ankaa-2
  • 目标执行配置文件: No Control Flow

定价

若要查看 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 基本配置文件(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
# qc = get_qpu("Ankaa-2") for submitting to a QPU

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