你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Quantinuum 提供对离子阱系统的访问权限,该系统具有高保真特性、完全连接的量子比特,并能够执行中间线路测量。
- 发行商:Quantinuum
- 提供程序 ID:
quantinuum
目标
可从此提供程序获取以下内容 targets:
| 目标名称 | 目标 ID | 量子比特数 | 说明 |
|---|---|---|---|
| H2-1 语法检查器 | quantinuum.sim.h2-1sc | 56 个量子比特 | 将量子程序提交到 Quantinuum 平台上的硬件或模拟器之前,需通过 H2-1 编译器进行验证。 免费。 |
| H2-2 语法检查器 | quantinuum.sim.h2-2sc | 56 个量子比特 | 在向 Quantinuum 平台上的硬件或模拟器提交之前,先通过 H2-2 编译器验证量子程序。 免费。 |
| H2-1 仿真器 | quantinuum.sim.h2-1e | 56/32 量子比特 | 使用 H2-1 的逼真的物理模型和噪音模型。 56 量子比特模拟仅可用作稳定器模拟 |
| H2-2 仿真器 | quantinuum.sim.h2-2e | 56/32 量子比特 | 使用 H2-2 的真实物理模型和噪声模型。 56 量子比特模拟仅可用作稳定器模拟 |
| H2-1 | quantinuum.qpu.h2-1 | 56 个量子比特 | 昆蒂努姆的H2-1捕获离子装置。 |
| H2-2 | quantinuum.qpu.h2-1 | 56 个量子比特 | Quantinuum 的 H2-2 囚禁离子装置。 |
Quantinuum 的 targets 对应 QIR Adaptive RI 配置文件。 有关此 target 配置文件及其限制的详细信息,请参阅 了解 target Azure Quantum 中的配置文件类型。
所有 Quantinuum 的 targets 现在都支持集成混合线路。 有关提交集成混合作业的详细信息,请参阅 集成混合计算。
提示
只要在一分钟内将作业排入队列,在会话下提交的 Quantum 作业就具有对 Quantinuum 硬件的独占访问权限。 之后,使用标准队列和优先顺序逻辑接受并处理任何作业。 有关详细信息,请参阅 Azure Quantum 中的会话。
语法检查程序
建议用户首先使用语法检查器来验证其代码。 语法检查器验证正确的语法、编译完成和计算机兼容性。 语法检查器使用与量子 target计算机相同的编译器。 例如,H2-1 语法检查器使用与 H2-1 相同的编译器。 执行完整编译流程,但不包括实际的量子操作。 如果代码编译成功,那么语法检查器将返回状态 success 以及结果为全零的结果。 如果代码未编译,则语法检查器将返回失败状态,并提供一条错误消息来帮助用户调试其线路语法。 开发人员可以使用语法检查程序随时验证其代码,即使计算机处于脱机状态。
- 作业类型:
Simulation - 数据格式:
honeywell.openqasm.v1、honeywell.qir.v1 - 目标 ID:
- H2-1 语法检查器:
quantinuum.sim.h2-1sc - H2-2 语法检查器:
quantinuum.sim.h2-2sc
- H2-1 语法检查器:
- 目标执行配置文件:QIR Adaptive RI
语法检查器免费提供使用。
Quantinuum Emulator(基于云)
Quantinuum Emulator 在 Azure Quantum 网站上的使用 Azure Quantum 编码页上免费提供,你可以在没有 Azure 帐户的情况下编写 Q# 代码,并将作业提交给 Quantinuum Emulator。 Quantinuum 模拟器是基于状态函数的量子模拟器,它基于 系统模型 H2 量子计算机的典型性能使用真实的物理噪音模型和通用错误参数。 执行的量子模拟与 系统模型 H2 模拟器 相同,但经典线路优化例程会减少以提高吞吐量。 计划在未来的某个时间支持集成混合计算。
系统模型 H2 模拟器
使用 H2-1 语法检查器验证其代码的语法后,用户可以利用 Quantinuum 的系统模型 H2 仿真器,该工具包含实际系统模型 H2 硬件的详细物理模型和现实噪音模型。 可以在系统模型 H2 页上找到的系统模型 H2 模拟器产品数据表中找到有关噪音模型的详细信息。 系统模型 H2 模拟器对作业提交使用与系统模型 H2 硬件相同的 API,可实现从仿真到硬件的无缝转换。 为了帮助最大限度地提高工作效率并缩短开发时间,即使硬件处于脱机状态,H2 模拟器也可用。
- 作业类型:
Simulation - 数据格式:
quantinuum.openqasm.v1 - 目标 ID:
- H2-1 模拟器:
quantinuum.sim.h2-1e - H2-2 Emulator:
quantinuum.sim.h2-2e
- H2-1 模拟器:
- 目标执行配置文件:QIR Adaptive RI
系统模型 H2 模拟器的使用随硬件订阅免费提供。 有关详细信息,请参阅 Azure Quantum 定价。
系统模型 H2
Quantinuum 系统模型 H2 代量子计算机由 Honeywell 提供支持,由量子充电耦合设备(QCCD)组成,具有两个连接的线性部分,目前有 1 台计算机 H2-1。 可以在系统模型 H2 页上的“系统模型 H2 产品数据表”中找到详细信息。 建议用户在将作业提交到计算机之前将作业提交到语法检查器和系统模型 H2 模拟器,从而测试其target代码的兼容性。
如果用户将作业提交到 H2-1 计算机,并且 H2-1 计算机不可用,该作业将保留在该计算机的队列中,直到计算机可用。
系统模型 H2 硬件在整个产品生命周期内持续升级。 用户可以访问最新、先进且功能强大的可用硬件。
- 作业类型:
Quantum Program - 数据格式:
quantinuum.openqasm.v1 - 目标 ID:
- H2-1:
quantinuum.qpu.h2-1 - H2-2:
quantinuum.qpu.h2-2
- H2-1:
- 目标执行配置文件:QIR Adaptive RI
系统模型 H2 技术规范
可以在 “系统模型 H2 ”页面上的 Quantinuum 产品数据表中找到系统模型 H2 的技术详细信息,以及 Quantinuum 规范和量子卷数据存储库的链接,以及如何引用 Quantinuum 系统的使用情况。
其他功能
此处列出了通过 Quantinuum API 提供的其他功能。
| 能力 | 说明 |
|---|---|
| 中间电路测量和重置 (MCMR) | 测量线路中间的量子比特并重复使用它们 |
| 任意角度 ZZ 门 | 直接执行 2 量子比特任意角度门旋转 |
| 一般 SU(4) 纠缠闸 | 直接执行 2 量子比特任意角度门旋转 |
| 仿真器干扰参数 | 试验 Quantinuum 仿真器中使用的噪声参数 |
| Quantinuum Stack 中的 TKET 优化 | 在 Quantinuum 堆栈中尝试启用不同级别的 TKET 优化 |
用户可以通过 Azure Quantum 的 Q# 和 Qiskit 提供程序中的线路功能或直通参数来利用这些附加功能。
中间电路测量和重置
通过中间线路度量和重置(MCMR),用户可以测量线路中间的量子比特并重置量子比特。 这项功能支持量子误差更正,并且还能重用电路中的量子比特。
由于捕获离子量子比特的内部级别结构,中电路测量可能会使量子比特处于非计算状态。 如果还要在该线路中再次使用量子比特,则所有中途测量都应跟随重置。 以下代码示例演示了这一点。
当在线路中间测量量子比特的子集时,这些度量中的经典信息可用于条件线路的未来元素。 这些示例还突出显示了此用法。
有关 Quantinuum 系统中 MCMR 的信息,请参阅 Quantinuum Docs 上的 MCMR 页。
在 Q# 中, MResetZ 函数可用于测量量子比特并重置它。 有关此函数的详细信息,请参阅 MResetZ Q# 文档中的信息。
%%qsharp
import Std.Measurement.*;
operation ContinueComputationAfterReset() : Result[] {
// Set up circuit with 2 qubits
use qubits = Qubit[2];
// Perform Bell Test
H(qubits[0]);
CNOT(qubits[0], qubits[1]);
// Measure Qubit 1 and reset it
let res1 = MResetZ(qubits[1]);
// Continue additional computation, conditioned on qubits[1] measurement outcome
if res1 == One {
X(qubits[0]);
}
CNOT(qubits[0], qubits[1]);
// Measure qubits and return results
let res2 = Measure([PauliZ, PauliZ], qubits);
return [res1, res2];
}
任意角度 ZZ 门
Quantinuum 的本机门集包括任意角度 ZZ 门。 这有利于减少许多量子算法和门序列的 2 量子比特门计数。 有关 Quantinuum 系统中任意角度 ZZ 门的信息,请参阅参数化角度 ZZ 门页面,位于Quantinuum 文档上。
在 Q# 中,任意角度 ZZ 门通过 Rzz 操作实现。
%%qsharp
import Std.Intrinsic.*;
import Std.Measurement.*;
import Std.Arrays.*;
operation ArbitraryAngleZZExample(theta : Double) : Result[] {
// Set up circuit with 2 qubits
use qubits = Qubit[2];
// Create array for measurement results
mutable resultArray = [Zero, size = 2];
H(qubits[0]);
Rz(theta, qubits[0]);
Rz(theta, qubits[1]);
X(qubits[1]);
// Add Arbitrary Angle ZZ gate
Rzz(theta, qubits[0], qubits[1]);
// Measure qubits and return results
for i in IndexRange(qubits) {
resultArray w/= i <- M(qubits[i]);
}
return resultArray;
}
一般 SU(4) 纠缠闸
Quantinuum 的本机门集包括一个通用 SU(4) 纠缠门。 请注意,提交到硬件的量子线路将重新设置为完全纠缠的 ZZ 门和任意角度 RZZ 门。 只有当用户选择使用通用 SU(4) 纠缠门时,电路才会重置到为该门。 有关 Quantinuum 系统中的常规 SU(4)纠缠器的信息,请参阅 Quantinuum Docs上的参数化角度 SU(4)闸页。
在 Q# 中,通用 SU(4) 纠缠门通过 Quantinuum 的 QIR 配置文件实现。 要使用此功能,请定义一个与 QIR 配置文件签名匹配的自定义内部函数,并在 SU4Example 操作中使用该函数。
若要确保电路使用 General SU(4) Entangling 运行,请在 Quantinuum Stack 中传递以下选项:
-
nativetq: Rxxyyzz以防止重置到其他本地门。 -
noreduce: True以避免其他编译器优化(可选)。
%%qsharp
import Std.Math.*;
operation __quantum__qis__rxxyyzz__body(a1 : Double, a2 : Double, a3 : Double, q1 : Qubit, q2 : Qubit) : Unit {
body intrinsic;
}
operation SU4Example() : Result[] {
use qs = Qubit[2];
// Add SU(4) gate
__quantum__qis__rxxyyzz__body(PI(), PI(), PI(), qs[0], qs[1]);
MResetEachZ(qs)
}
现在编译该操作:
MyProgram = qsharp.compile("GenerateRandomBit()")
连接到 Azure Quantum,选择 target 计算机,并为模拟器配置噪音参数:
MyWorkspace = azure.quantum.Workspace(
resource_id = "",
location = ""
)
MyTarget = MyWorkspace.get_targets("quantinuum.sim.h2-1e")
# Update TKET optimization level desired
option_params = {
"nativetq": `Rxxyyzz`,
"noreduce": True
}
提交作业时传递 noreduce 选项:
job = MyTarget.submit(MyProgram, "Submit a program with SU(4) gate", shots = 10, input_params = option_params)
job.get_results()
仿真器干扰参数
用户可以选择试验 Quantinuum 模拟器的干扰参数。 此处仅突出显示了 一些可用的噪声参数,以演示如何在 Azure Quantum 提供程序中传递这些参数。
有关可用的完整噪音参数集的详细信息,请参阅 Quantinuum 文档中的 Quantinuum 模拟器页面。
首先,导入所需的包并初始化基本配置文件。
from qdk import qsharp, azure
qsharp.init(target_profile=qsharp.TargetProfile.Base)
接下来,定义函数。
%%qsharp
import Std.Measurement.*;
import Std.Arrays.*;
import Std.Convert.*;
operation GenerateRandomBit() : Result {
use target = Qubit();
// Apply an H-gate and measure.
H(target);
return M(target);
}
并编译操作:
MyProgram = qsharp.compile("GenerateRandomBit()")
连接到 Azure Quantum,选择 target 计算机,并为模拟器配置噪音参数:
MyWorkspace = azure.Workspace(
resource_id = "",
location = ""
)
MyTarget = MyWorkspace.get_targets("quantinuum.sim.h2-1e")
# Update the parameter names desired
# Note: This is not the full set of options available.
# For the full set, see the Quantinuum Emulators page
option_params = {
"error-params": {
"p1": 4e-5,
"p2": 3e-3,
"p_meas": [3e-3, 3e-3],
"p_init": 4e-5,
"p_crosstalk_meas": 1e-5,
"p_crosstalk_init": 3e-5,
"p1_emission_ratio": 6e-6,
"p2_emission_ratio": 2e-4
}
}
提交作业时传递仿真器噪声选项:
job = MyTarget.submit(MyProgram, "Experiment with Emulator Noise Parameters",
shots = 10,
input_params = option_params)
job.get_results()
若要关闭仿真器噪音模型,请将 error-model 选项设置为 False。 默认情况下,这设置为 True。
option_params = {
"error-model": False
}
若要使用稳定器模拟器,请将 simulator 选项设置为 stabilizer。 默认情况下,这设置为 state-vector。
option_params = {
"simulator": "stabilizer"
}
Quantinuum Stack 中的 TKET 编译
提交到 Quantinuum Quantinuum 系统的电路(不包括集成混合提交)会自动通过 Quantinuum 硬件的 TKET 编译通道运行。 这使线路能够自动针对 Quantinuum 系统进行优化,并更高效地运行。
有关应用的特定编译过程的更多信息,请参阅 pytket-quantinuum 文档,特别是pytket-quantinuum编译过程部分。
在 Quantinuum 软件堆栈中,应用的优化级别使用 tket-opt-level 参数进行设置。
提交到 Quantinuum 系统的所有线路的默认编译设置为优化级别 2。
想要试验 TKET 编译过程并查看哪些优化将应用于其电路的用户,可以在提交任何作业之前查看“示例”文件夹中的“Quantinuum_compile_without_api.ipynb”笔记本。
若要关闭堆栈中的 TKET 编译,可将其他选项 no-opt设置为 True 内部 option_params。 例如,"no-opt": True。
有关pytket的更多信息,请参阅以下链接:
首先,导入所需的包并初始化基本配置文件。
from qdk import qsharp
import azure.quantum
qsharp.init(target_profile=qsharp.TargetProfile.Base)
接下来,定义函数。
%%qsharp
import Std.Measurement.*;
import Std.Arrays.*;
import Std.Convert.*;
operation GenerateRandomBit() : Result {
use target = Qubit();
// Apply an H-gate and measure.
H(target);
return M(target);
}
并编译操作:
MyProgram = qsharp.compile("GenerateRandomBit()")
连接到 Azure Quantum,选择 target 计算机,并为模拟器配置噪音参数:
MyWorkspace = azure.quantum.Workspace(
resource_id = "",
location = ""
)
MyTarget = MyWorkspace.get_targets("quantinuum.sim.h2-1e")
# Update TKET optimization level desired
option_params = {
"tket-opt-level": 1
}
提交作业时输入优化参数:
job = MyTarget.submit(MyProgram, "Experiment with TKET Compilation", shots = 10, input_params = option_params)
job.get_results()
技术规范
可以在 “硬件用户指南 ”页上找到系统模型 H2 和系统模型 H2 模拟器的技术详细信息,以及 Quantinuum 规范和量子卷数据存储库以及 如何引用 Quantinuum Systems。
目标可用性
Quantinuum 量子计算机旨在持续升级,使客户能够访问最新的硬件功能,因为 Quantinuum 不断提高量子门保真度、降低内存错误率,并加快系统速度。
Quantinuum 硬件在商业周期和开发周期之间循环。 在商业阶段,硬件可通过队列系统处理作业。 在开发阶段,硬件在应用升级时处于脱机状态。
每月都会向 Quantinuum 用户发送日历,其中包含有关商业和开发阶段的信息。 如果你尚未收到此日历,请发送电子邮件至 QCsupport@quantinuum.com。
target 的状态表示其当前处理作业的能力。 target 可能的状态包括:
- 可用:target 联机,正在处理已提交的作业并接受新的作业。
- 已降级:target 正在接受作业,但当前未在处理这些作业。
- 不可用:处于 target 脱机状态,不接受新作业提交。
对于Quantinuum量子计算机,targets和降级对应于商业周期,而不可用对应于计算机脱机进行升级的开发周期。
可以通过 Azure 门户中的工作区的“提供程序”选项卡来检索当前状态信息。
定价
若要查看 Quantinuum 的计费计划,请访问 Azure Quantum 定价。
限制和配额
Quantinuum 的配额根据 QPU 使用情况额度单位、硬件量子额度 (HQC)、提交到 Quantinuum 量子计算机的作业以及提交到模拟器的作业的模拟器 HQC (eHQC) 进行跟踪。
HQC 和 eHQC 用于计算作业的运行成本,它们是根据以下公式计算的:
$$ HQC = 5 + C(N_{1q} + 10 N_{2q} + 5 N_m)/5000 $$
其中:
- $N_{1q}$ 是线路中的单量子比特运算的数量。
- $N_{2q}$ 是电路中本地双量子比特运算的数量。 本机门相当于一些单量子比特门组合而成的 CNOT。
- $N_{m}$ 是线路中状态准备和测量 (SPAM) 操作的数量,包括初始隐式状态准备以及任何中间和最终测量及状态重置。
- $C$ 是射击次数。
注意
HQC 的总成本包括所有条件分支或控制流的所有门和度量值。 这可能会对集成混合作业产生更高的影响。
配额基于计划选择,可以通过提交支持票证来增加配额。 若要查看当前的限制和配额,请转到“作业”部分,然后在Azure 门户上选择工作区的配额选项。 有关详细信息,请参阅 Azure Quantum 配额。