术语表
混合求解器(Hybrid solvers):量子-传统混合的求解器。
量子处理器(Quantum Processing Unit, QPU):计算单元
量子机器指令(Quantum Machine Instruction,QMI):包括 Ising 模型与 QUBO 的参数和退火周期参数的一类被传入 QPU 的信息。
退火周期(Annealing Cycle):从 QMI 传入到一次采样结果产生。对于一条 QMI 一般要执行多次。
采样(Sample):量子计算机的状态是不确定的叠加态,需要多次采样确定其分布。
本文摘自 D-Wave 的官方文档 。如有疏漏,望批评指正。
Timing
大体流程
下图展示了简化版的计算流程,一个 QMI 被提交后进入队列,然后被处理进入 QPU 等待队列,最后得到采样或者可能还会后处理(后处理的时间可能和QPU处理的时间有交叠)。最终结果以及 QMI 执行信息被打包传回客户端。
后处理(postprocessing)在 DW2000Q 和早期系统上包括优化算法和采样算法;在先进系统上,后处理只用于求出采样结果的能量。
D-Wave 系统上处理一条 QMI 的全部时间叫服务时间(service time)。一条语句的执行时间在客户端看来包括服务时间和网络延迟。当 QMI 在 QPU 上执行时是独占的,因此真正的实行时间是 QMI 在 QPU 上的访问时间(access time)。
访问时间
访问时间由两部分组成,一次 QPU 初始化以及多次采样的时间。
形式化写作 $T = T_p + T_s$(实际上官网写作$T = T_p + \Delta + T_s$),其中 $T_p$ 是编程时间(初始化),$T_s$ 是采样时间,$\Delta$ 是底层初始化时间(SAPI 称之为 qpu_access_overhead_time,DW2000Q 是 1-2ms,高级系统 10-20ms)。其中采样时间可以进一步划分为退火时间(anneal)、读出时间(readout)、热化时间(thermalization,等待 QPU 回到初始温度)。对于 $R$ 次的读出(也就是$R$次采样),表示为 $T_s/R \approx T_a + T_r + T_d$,$T_a$、$T_r$、$T_d$ 分别是退火时间、读出时间、延迟时间。延迟时间进一步分为 $T_d = readout\_thermalization + reduce\_intersample\_correlation + reinitialize\_state$,分别是等待从QPU读出状态并冷却回基本温度的时间、减少spin-bath polarization effect 产生的样本与样本之间相关(corrlations)而增加的延迟的时间、以及恢复初始状态的时间。
恢复初始状态可以用reinitialize_state=false
关掉,这样就只在第一次初始化,后面的采样用上一轮的结果,即便如此还是需要时间进行反向退火(reverse annealing)。
实操时间分析
当在 Leap 上点开问题统计,选择 Timing 标签页,就会得到如图这些信息:
以这个采样次数设置为 100 次,使用了 Advantage_system1.1 的问题实例为例。
首先注意到两个时间QPU_ACCESS_TIME
和TOTAL_POST_PROCESSING_TIME
,前者表示了该问题在 QPU 上的访问时间之和。后者表示后处理所花费的时间,以官网的“二者交叠”的说法我们不能简单的将二者相加看作是问题在 D-Wave 上花费的总时间。
其中QPU_ACCESS_TIME
包含了 QPU_PROGRAMMING_TIME
和 QPU_SAMPLING_TIME
。前者代表了 QPU 初始化时间,后者是采样时间。采样时间包含了 100 次 QPU_SAMPLING_TIME
采样的时间,每次采样花费的时间是 QPU_ANNEAL_TIME_PER_SAMPLE
,QPU_READOUT_TIME_PER_SAMPLE
以及 QPU_DELAY_TIME_PER_SAMPLE
,也就是退火、读出、延迟。我们把这些时间加起来验证一下 $$100 \times (20\mu s + 44\mu s + 21 \mu s) + 26.041 ms = 34.541 ms \approx 34.589 ms$$
需要注意后处理是以一批采样为单位的,而且 DW2000Q 和 Advantage System 计算方法也不同。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。