调度方法、调度系统、存储介质和电子装置
技术领域
本发明属于量子计算技术领域,更具体地说,涉及量子计算的调度方法。
背景技术
量子计算机运行环境极其严苛,目前难以实现普及,而将执行量子计算的 后端通过云平台连接到用户端,则能够解决量子计算机受运行环境限制的问题, 有助于推广量子计算的使用。用户端通过云平台将量子程序发送到执行量子计 算的后端,执行计算任务后返回计算结果,整个过程以执行量子计算的后端为 核心,由于执行不同的计算任务有不同的资源需求,因此这个过程需要一种合 理的调度方法,用来根据需要执行的量子计算任务调度计算资源,而由于量子 计算与经典计算的差异,现有的调度方法并不适用于量子计算。
发明内容
针对现有的调度方法并不适用于量子计算的问题,本发明提供一种调度方 法、调度系统、存储介质和电子装置。
一种调度方法,其特征在于,包括:
接收计算任务:
询问所有计算集群中的当前计算集群以使所述当前计算集群确定能否执行 所述计算任务并返回确定结果;
判断是否接收到所述当前计算集群返回的确定结果;
若接收到所述当前计算集群返回的确定结果,且该确定结果为能够执行, 则调度所述当前计算集群执行所述计算任务;
若接收到所述当前计算集群返回的确定结果,且该确定结果为不能执行, 则将下一计算集群作为当前计算集群,返回执行所述询问所有计算集群中的当 前计算集群以使所述当前计算集群确定能否执行所述计算任务并返回确定结果 的步骤。
进一步地,所述计算任务存储在数据库中,且所述调度方法还包括:
在所述当前计算集群确定能够执行所述计算任务时,所述当前计算集群直 接执行所述计算任务,且在所述当前计算集群执行所述计算任务的过程中,更 新所述数据库中所述计算任务的任务状态。
进一步地,若未接收到所述当前计算集群返回的确定结果,则查询所述任 务状态是否更新;
若更新,则将所述确定结果更新为能够执行;
若未更新,则将所述确定结果更新为不能执行。
进一步地,若接收到所述当前计算集群返回的确定结果,且该确定结果为 不能执行,并且所述当前计算集群为最后一个计算集群,则输出无法计算。
进一步地,其中,所述当前计算集群确定能否执行所述计算任务,包括以 下步骤:
根据所述计算任务,确定待执行的量子线路和计算类型;
估算按照所述计算类型执行所述量子线路需要的计算资源;
判断当前计算集群的资源是否大于或等于所述计算资源;
若大于或等于,则确定所述当前计算集群能够执行所述计算任务;
若小于,则确定所述当前计算集群不能执行所述计算任务。
进一步地,所述估算按照所述计算类型执行所述量子线路需要的计算资源, 包括以下步骤:
若任务类型为全振幅量子计算,则获取配置的表示各量子态的振幅的数据 类型和所述量子线路包含的量子比特的数量;
根据所述数据类型和所述量子比特的数量,确定全振幅量子计算所需计算 资源。
进一步地,所述估算根据所述计算类型执行所述量子线路需要的计算资源, 包括以下步骤:
若任务类型为部分振幅量子计算,则获取配置的表示各量子态的振幅的数 据类型;
按预设拆分规则,拆分所述量子线路,构建子量子线路;
根据所述数据类型和所述子量子线路中的量子比特的数量,确定部分振幅 量子计算所需计算资源。
本发明还提供了一种调度系统,包括:
任务接收模块,用于接收计算任务;
轮询模块,用于询问所有计算集群中的当前计算集群以使所述当前计算集 群确定能否执行所述计算任务并返回确定结果;
判断模块,用于判断是否接收到所述当前计算集群返回的确定结果;
调度模块,用于在接收到所述当前计算集群返回的确定结果,且该确定结 果为能够执行时,调度所述当前计算集群执行所述计算任务;在接收到所述当 前计算集群返回的确定结果,且该确定结果为不能执行时,则将下一计算集群 作为当前计算集群,反馈至所述轮询模块以询问所有计算集群中的当前计算集 群以使所述当前计算集群确定能否执行所述计算任务并返回确定结果。
其中,所述计算任务存储在数据库中;所述调度系统还包括:
计算更新模块,用于在所述当前计算集群确定能够执行所述计算任务时, 所述当前计算集群直接执行所述计算任务,且在所述当前计算集群执行所述计 算任务的过程中,更新所述数据库中所述计算任务的任务状态。
进一步地,还包括状态查询模块,用于在未接收到所述当前计算集群返回 的确定结果时,查询所述任务状态是否更新,且查询结果为更新时,将所述确 定结果更新为能够执行;查询结果为未更新时,将所述确定结果更新为不能执 行。
进一步地,所述调度模块,还用于在接收到所述当前计算集群返回的确定 结果,且该确定结果为不能执行,并且所述当前计算集群为最后一个计算集群 时,输出无法计算。
本发明还提供了一种存储介质,所述存储介质中存储有计算机程序,其中, 所述计算机程序被设置为运行时执行所述的方法。
本发明还提供了一种电子装置,包括存储器和处理器,所述存储器中存储 有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述的方法。
相比于现有技术,本发明在接收计算任务后,询问所有计算集群以使当前 询问的计算集群确定能否执行所述计算任务并返回确定结果,如果接收到确定 结果且为能够执行,则直接调度当前计算集群执行所述计算任务,如果接收到 确定结果且为不能执行,则轮询下一计算集群确定能否执行所述计算任务并返 回确定结果,依次类推,直至询问的当前计算集群执行所述计算任务,或者询 问完所有计算集群,从而实现对计算任务的调度,便于用户通过云平台等对执 行量子计算的各计算集群进行访问,并执行计算任务。
附图说明
图1为一种通过云平台执行量子计算任务的结构示意图;
图2为本发明实施例提供的一种调度方法的第一实施方式的流程示意图;
图3为本发明实施例提供的一种调度方法的第二实施方式的流程示意图;
图4为本发明实施例提供的一种调度系统的第一实施方式的结构示意图;
图5为本发明实施例提供的一种调度系统的第二实施方式的结构示意图;
图中:1、用户端;2、云平台;3、总调度服务器;4、一号计算集群;5、 二号计算集群;6、三号计算集群;7、数据库。
具体实施方式
下面结合附图和具体实施例对本发明进一步进行描述。
真正的量子计算机是混合结构的,它包含两大部分:一部分是经典计算机, 负责执行经典计算与控制;另一部分是量子设备,负责执行量子计算。实际上, 真正的量子程序是由量子语言如Qrunes语言编写的一串能够在量子计算机上运 行的指令序列,实现了对量子逻辑门操作的支持,并最终实现对量子计算的模 拟。具体的说,量子程序就是一系列按照一定时序操作量子逻辑门的指令序列。
在实际应用中,为了对量子计算进行模拟以验证量子应用等等,也可以通 过运行在普通计算机的量子虚拟机实现。本发明实施例所提及的量子程序,即 是在量子操作平台上运行的由经典语言编写的表征量子比特及其演化的程序, 其中与量子计算相关的量子比特、量子逻辑门等等均有相应的经典代码表示。
本发明能够解决由于量子计算机受运行环境限制难以推广、大众不便于接 受和使用的问题,如图1所示的一种通过云平台执行量子计算任务的结构示意 图,本发明提供的调度方法和调度系统可以提供用户接口,用户端1通过云平 台2实现对执行量子计算的各计算集群(如图1中的一号计算集群4、二号计算 集群5、三号计算集群6)进行访问,并执行计算任务,还可以配置存储与计算 任务相关的数据信息的数据库7。
如图2所示的调度方法的第一实施方式的流程示意图,本发明提供的一种 调度方法的第一实施方式,包括:
S101、接收计算任务。
在步骤S101中,接收的计算任务具体可以是一段与具体应用所对应的量子 程序,该量子程序中包含了待执行的量子线路和计算类型等信息。可以理解的 是,一段量子程序整体上对应有一条总的量子线路,而量子线路则是各量子逻 辑门组成的集合,执行量子线路的过程(也称量子计算的过程)也就是用量子 逻辑门使量子态发生演化,由于每一个量子逻辑门都对应一个酉矩阵,量子逻 辑门使量子态发生演化的过程也可以用量子逻辑门对应的酉矩阵左乘以量子态 右矢表示。举个例子,例如有一个量子态|ψ0>,经过量子逻辑门(对应酉矩阵用 U表示)之后得到:
|ψ>=U|ψ0>
可以理解的是,量子逻辑门是构成量子算法的基础,在量子线路中,各量 子逻辑门是由时间线所连接,亦即量子比特的状态随着时间演化。量子逻辑门 包括单量子逻辑门、双量子逻辑门以及多量子逻辑门。
S102、询问所有计算集群中的当前计算集群以使所述当前计算集群确定能 否执行所述计算任务并返回确定结果。
具体地,参照图1所示,将配置的各个计算集群编号排序,如按照一号计 算集群、二号计算集群、三号计算集群编号排序,设定初始当前计算集群为一 号计算集群,在总调度服务器3接收到计算任务后,先发送给一号计算集群4, 一号计算集群4确定其能否执行该计算任务,并将确定结果(即能够执行、或 者不能执行)返回给总调度服务器3。
S103、判断是否接收到所述当前计算集群返回的确定结果。
参照图1所示,在步骤S103中,具体地判断总调度服务器3是否接收到当 前询问的一号计算集群4所返回的能够执行、或者不能执行的确定结果。
S104、若接收到所述当前计算集群返回的确定结果,且该确定结果为能够 执行,则调度所述当前计算集群执行所述计算任务。
参照图1所示,若一号计算集群4所返回给总调度服务器3的确定结果是 能够执行,则总调度服务器3调度一号计算集群4执行所述计算任务。
S105、若接收到所述当前计算集群返回的确定结果,且该确定结果为不能 执行,则将下一计算集群作为当前计算集群,返回执行所述询问所有计算集群 中的所述当前计算集群以使当前计算集群确定能否执行所述计算任务并返回确 定结果的步骤。
具体的,参照图1,若总调度服务器3接收到一号计算集群4返回的确定结 果,且该确定结果为不能执行,则总调度服务器3将计算任务发送给二号计算 集群5,由二号计算集群5确定其能否执行该计算任务,并将确定结果(即能够 执行、或者不能执行)返回给总调度服务器3,并判断是否接收到二号计算集群 5返回的确定结果,根据判断结果,确定执行步骤S104还是步骤S105;依次类 推,直至询问的当前计算集群执行所述计算任务,或者询问完所有计算集群。
其中,作为本实施方式一种优选的方案,步骤S105中,在询问到最后一个 的计算集群(具体实施时,即编号排序为最后一个的计算集群)时,此时若总 调度服务器3接收到最后一个计算集群返回的确定结果,且该确定结果为不能 执行,则输出无法计算。即当所有计算集群轮询一遍后,所有计算集群的确定 结果均为不能执行,则总调度服务器3输出无法计算,以便于及时对该计算任 务进行拆解调整或者配置更高资源的计算集群以支持该计算任务的执行。
结合图1和图2,在用户端1通过云平台2、总调度服务器3将计算任务发 送到执行量子计算的计算集群时,本实施例提供的调度方法在总调度服务器3 接收计算任务后,询问所有计算集群以使当前被询问的计算集群确定能否执行 所述计算任务并返回确定结果,如果总调度服务器3接收到确定结果且为能够 执行,则直接调度当前被询问的计算集群执行所述计算任务,如果总调度服务 器3接收到确定结果且为不能执行,则轮询下一计算集群确定能否执行所述计 算任务并返回确定结果,依次类推,直至总调度服务器3询问的当前计算集群 执行所述计算任务,或者总调度服务器3询问完所有计算集群,从而实现对计 算任务的调度,便于用户通过云平台等对执行量子计算的各计算集群进行访问, 并执行计算任务,计算集群执行计算任务后返回计算结果。上述整个过程以执 行量子计算的后端为核心,这个过程根据需要执行的量子计算任务调度计算资 源,从而满足不同计算任务的需求。
如图3所示的调度方法的第二实施方式的流程示意图,本发明提供的一种 调度方法的第二实施方式,包括:
S201、接收计算任务,且所述计算任务存储在数据库中。
本步骤具体实施时,可以是调度服务器3将所述计算任务存储在数据库中, 也可以是在数据库中存储所述计算任务与调度服务器3接收计算任务分开进行。
S202、询问所有计算集群中的当前计算集群以使所述当前计算集群确定能 否执行所述计算任务并返回确定结果。
其中,作为本实施方式的一种优选方式,步骤S202中在询问所有计算集群 中的当前计算集群步骤之前,总调度服务器3先生成与所述计算任务相关联对 应的计算任务ID,所述计算任务ID与所述计算任务相关联对应的存储在所述数 据库中,即这种情况下,所述数据库中存储有一一对应的计算任务ID和计算任 务,在总调度服务器3询问所有计算集群中的当前计算集群时,询问指令中携 带所述计算任务ID即可,且在当前计算集群接收到所述计算任务ID时,在数 据库中查询与所述计算任务ID相关联对应的计算任务,并确定能否执行与所述 计算任务ID相关联对应的计算任务并返回确定结果,与第一实施方式相比,这种优选方式通过生成计算任务ID并传输计算任务ID便于对多个计算任务进行 区分。其中,作为一种实施方式,计算任务ID可以包含用户上传计算任务的时 间、计算任务类型、以及计算任务在数据库中的执行序号等信息。
S203、在所述当前计算集群确定能够执行所述计算任务时,所述当前计算 集群直接执行所述计算任务,且在所述当前计算集群执行所述计算任务的过程 中,更新所述数据库中所述计算任务的任务状态。
本实施方式下,步骤S203可以理解为询问所有计算集群中的当前计算集群 的指令中还包括在当前计算集群确定能够执行所述计算任务时,使所述当前计 算集群直接执行所述计算任务,且在所述当前计算集群执行所述计算任务的过 程中,使所述当前计算集群更新所述数据库中所述计算任务的任务状态。本实 施方式中,所述数据库与总调度服务器3及各个计算集群建立通讯连接,各个 计算集群可以更新所述数据库中所述计算任务的任务状态,例如未执行(数据 库中所述计算任务的初始任务状态)、运行中、已完成等,其中:未执行,表示 当前计算集群未执行所述计算任务;运行中,表示当前计算集群正在执行所述 计算任务;已完成,表示当前计算集群已执行完所述计算任务。
S204、判断是否接收到所述当前计算集群返回的确定结果。
S205、若接收到所述当前计算集群返回的确定结果,且该确定结果为能够 执行,则调度所述当前计算集群执行所述计算任务。
S206、若接收到所述当前计算集群返回的确定结果,且该确定结果为不能 执行,则将下一计算集群作为当前计算集群,返回执行所述询问所有计算集群 中的当前计算集群以使所述当前计算集群确定能否执行所述计算任务并返回确 定结果的步骤。
步骤S204、S205和S206的具体过程还请参阅前面实施方式的相关描述, 在本技术领域人员容易结合理解的范围内,不再赘述。
S207、若未接收到所述当前计算集群返回的确定结果,则查询所述任务状 态是否更新。
由于各计算集群与数据库建立了通讯连接,并且一旦计算集群执行所述计 算任务,即更新数据库中所述计算任务的任务状态。因此,在未接收到所述当 前计算集群返回的确定结果的情况下,为准确的获知当前计算集群的确定结果, 还可以通过查询数据库中对应的任务状态是否更新进行确定。
S208、若更新,则将所述确定结果更新为能够执行。
S209、若未更新,则将所述确定结果更新为不能执行。
步骤S208和S209具体地,如图3所示,若调度服务器3查询到数据库中 对应的任务状态已更新,则确定当前计算集群能够执行所述任务,且所述当前 计算集群正在执行所述计算任务或已经执行完毕所述计算任务,此时将总调度 服务器3中的确定结果更新为能够执行,该确定结果可以反馈给用户端和/或存 储在所述总调度服务器3以备后续使用;若查询到数据库中对应的任务状态未 更新,则确定当前计算集群不能执行所述任务,因此总调度服务器3中当前计 算集群返回的确定结果更新为不能执行,确定结果更新后,总调度服务器3可 以将所述计算任务发送到下一个计算集群。
在上述第一实施方式至第二实施方式,所述当前计算集群确定能否执行所 述计算任务,包括以下步骤:
S1021、根据所述计算任务,确定待执行的量子线路和计算类型;
S1022、估算按照所述计算类型执行所述量子线路需要的计算资源;
S1023、判断当前计算集群的资源是否大于或等于所述计算资源;
S1024、若大于或等于,则确定当前计算集群能够执行所述计算任务;
S1025、若小于,则确定当前计算集群不能执行所述计算任务。
即在当前计算集群下判断所述计算任务所需的计算资源情况,例如在当前 计算集群中配置有4个进程,每个进程2G,当前计算集群即先估算按照所述计 算类型执行所述量子线路需要的计算资源为多少G或者多少个当前计算集群配 置的进程,在此基础上判断当前计算集群配置的内存资源是否能够支持该量子 线路的执行。
需要说明的是,量子计算的计算类型主要包括全振幅量子计算、部分振幅 量子计算和单振幅量子计算三种类型,其中:
全振幅量子计算,便是指一次性计算出N个量子比特的2N个量子态分量的 振幅。
部分振幅量子计算,便是指通过遍历待执行量子线路,判断所述待执行量 子线路是否符合预设适用条件;若符合,拆分待执行量子线路,构建子量子线 路;针对每条子量子线路,初始化所述子量子线路对应量子比特的量子态振幅 值,并计算对应量子比特经子量子线路执行后的量子态振幅值;根据各条子量 子线路对应的振幅值,计算所述量子线路对应量子比特的量子态振幅值,实现 量子计算模拟。由于待执行量子线路被拆分成各条子量子线路,每条子量子线 路的量子比特数减少,线路复杂度得以降低,所需要的内存资源随之下降,从 而能够在更低的内存资源下,实现量子计算模拟。但是,随着待执行量子线路的拆分,模拟各子量子线路的时间也有所变化,甚至是增加,这会严重影响量 子计算模拟效率。
单振幅量子计算,便是指一次性计算出N个量子比特的2N个量子态分量中 的一个量子态分量的振幅,即目标量子态分量的振幅。具体地,单振幅模拟是 通过将量子线路映射到无向图上,并结合路径积分法,将无向图拆分至多个计 算进程上,由每个进程计算对应的子无向图,从而实现并行计算。整个计算过 程都是基于张量中元素的简单运算,与全振幅模拟相比,大大降低了对内存资 源的需求。
在步骤S1021至S1025中,所述估算按照所述计算类型执行所述量子线路 需要的计算资源,包括以下步骤:
若计算类型为全振幅量子计算,则获取配置的表示各量子态的振幅的数据 类型和所述量子线路包含的量子比特的数量;
根据所述数据类型和所述量子比特的数量,确定全振幅量子计算所需计算 资源。
其中,若表示各振幅的数据类型为Float类型,则确定全振幅量子计算所需 计算资源为8byte×2N;若表示各振幅的数据类型为double类型,则确定全振幅 量子计算所需计算资源为16byte×2N;式中,N为1#量子线路中包含的量子比 特数量。
为便于理解,下面结合具体示例说明计算类型为全振幅量子计算时的计算 资源估算步骤。
例如,待执行的量子线路为如下1#量子线路,现需估算对1#量子线路进行 全振幅量子计算时的计算资源:
QCircuitcir;
cir<<H(q0)<<H(q1)<<RY(q2,PI/2)<<H(q4)
<<CNOT(q0,q3)<<X(q1)<<CNOT(q4,q3)
<<H(q1)<<CNOT(q2,q3)<<H(q4)
<<H(q2)<<CNOT(q3,q4)
<<RZ(q3,PI/2)<<Y(q4)
<<RX(q4,PI/5).
其中:
H代表阿达马Hadamard门,X代表泡利-X门(其对应的矩阵为泡利矩阵σ x),Y代表泡利-Y门(其对应的矩阵为泡利矩阵σy),Z代表泡利-Z门(其对 应的矩阵为泡利矩阵σz),RX代表任意旋转泡利-X门,RY代表任意旋转泡利 -Y门,RZ代表任意旋转泡利-Z门,CNOT代表控制非门(Control-NOT);
q0、q1、q2、q3、q4是指比特位从0至4的量子比特。另外需要说明的是, 量子态的表示对应q4q3q2q1q0的排布规则,且q4q3q2q1q0中从右至左对应的 比特位由低位到高位。
因此,由该量子线路中,可以确定量子逻辑门H(q0)为单量子逻辑门,且其 作用的量子比特的比特位为0,类似的:确定H(q1)为单量子逻辑门,且其作用 的量子比特的比特位为1;确定RY(q2)为单量子逻辑门,且其作用的量子比特 的比特位为2;……;确定CNOT(q4,q3)为双量子逻辑门,且其作用的量子比特 的比特位为3和4;……。
上述1#量子线路中包含的量子比特的数量为5,因此,若表示各振幅的数 据类型为Float类型,则确定全振幅量子计算所需计算资源为8byte×25;若表示 各振幅的数据类型为double类型,则确定全振幅量子计算所需计算资源为16byte ×25。
若计算类型为部分振幅量子计算,则获取配置的表示各量子态的振幅的数 据类型;
按预设拆分规则,拆分所述量子线路,构建子量子线路;
根据所述数据类型和所述子量子线路中的量子比特的数量,确定部分振幅 量子计算所需计算资源。
具体的,所述按预设规则,拆分所述量子线路,构建子量子线路,包括:
判断所述量子线路中是否包含双量子逻辑门;其中,所述量子线路包括: 量子线路的前预设数量个量子比特所处的第一部分量子线路和其余量子比特所 处的第二部分量子线路;
若包含双量子逻辑门,判断每一双量子逻辑门作用的两量子比特是否分别 处于第一部分量子线路和第二部分量子线路中;
若每一双量子逻辑门作用的两量子比特均不分别处于第一部分量子线路和 第二部分量子线路中,将所述量子线路的第一部分量子线路确定为一子量子线 路,第二部分量子线路确定为另一子量子线路;其中,各条子量子线路中的量 子比特的比特位编号均从0依序编排;
若不包含双量子逻辑门,将所述量子线路的第一部分量子线路确定为一子 量子线路,第二部分量子线路确定为另一子量子线路;其中,各条子量子线路 中的量子比特的比特位编号均从0依序编排;
若存在双量子逻辑门所作用的两量子比特分别处于第一部分量子线路和第 二部分量子线路中,判断该存在的各双量子逻辑门是否均为特定种类的双量子 逻辑门;
若均为特定种类的双量子逻辑门,针对每一特定种类的双量子逻辑门,将 该双量子逻辑门拆分为第一预设单门、第二预设单门和特定单量子逻辑门,并 生成当前量子线路的副本,将所述第一预设单门添加到当前量子线路中,将所 述第二预设单门和特定单量子逻辑门添加到当前量子线路的副本中;
其中,所述第一预设单门和所述第二预设单门作用的量子比特均为该双量 子逻辑门的控制比特,所述特定单量子逻辑门作用的量子比特为该双量子逻辑 门的操作比特,所述特定单量子逻辑门由该双量子逻辑门的种类确定;
拆分当前添加完成的所有新量子线路,将每一新量子线路对应的当前第一 部分量子线路及第二部分量子线路,均确定为子量子线路;其中,各条子量子 线路中的量子比特的比特位编号均从0依序编排。
为便于理解,下面结合具体示例说明计算类型为部分振幅量子计算时的计 算资源估算步骤。
例如,待执行的量子线路为如下2#量子线路,各代码符号的含义参照1#量 子线路示例,现需估算对2#量子线路进行部分振幅量子计算时的计算资源:
QCircuitcir;
cir<<H(q0)<<H(q1)<<RY(q2,PI/2)<<H(q4)
<<CNOT(q0,q3)<<X(q1)<<CNOT(q1,q2)
<<H(q1)<<CZ(q2,q3)<<H(q4)
<<H(q2)<<CNOT(q3,q4)
<<RZ(q3,PI/2)<<Y(q4)
<<RX(q4,PI/5).
以量子比特q0、q1、q2所在的量子线路作为第一部分量子线路、以量子比 特q3、q4所在的量子线路作为第二部分量子线路。遍历出该量子线路中包含双 量子逻辑门CNOT(q0,q3)、CNOT(q1,q2)、CZ(q2,q3)、CNOT(q3,q4),提取该四 个双量子逻辑门信息并记录,然后判断出双量子逻辑门CNOT(q0,q3)作用的量子 比特q0、q3分处于第一部分量子线路和第二部分量子线路,CZ(q2,q3)作用的量 子比特同样处于第一部分量子线路和第二部分量子线路,且该两双门均属于特 定种类的双门。
遍历到CNOT(q0,q3),将CNOT(q0,q3)拆分为P0门、P1门和NOT门, 生成当前量子线路(此时CNOT门已不存在,其余不变)的副本,作为副本量 子线路,根据P0门作用的量子比特q0,将P0门添加到当前量子线路中,根据 P1门作用的量子比特q0、NOT门作用的量子比特q3,将P1门和NOT门添加 到副本量子线路中。此时的量子线路有两条,每条的量子比特总数为5,其中:
一条包括量子逻辑门H(q0)、H(q1)、RY(q2)、H(q4)、P0(q0)、X(q1)、 CNOT(q1,q2)、H(q1)、CZ(q2,q3)、H(q4)、H(q2)、CNOT(q3,q4)、RZ(q3)、Y(q4) 和RX(q4);
另一条包括H(q0)、H(q1)、RY(q2)、H(q4)、P1(q0)、NOT(q3)、X(q1)、 CNOT(q1,q2)、H(q1)、CZ(q2,q3)、H(q4)、H(q2)、CNOT(q3,q4)、RZ(q3)、Y(q4) 和RX(q4)。
然后,针对当前两条量子线路中的CZ(q2,q3),对其中一条,将CZ(q2,q3) 拆分为P0门、P1门和Z门,生成该条量子线路的副本,根据该P0门作用的量 子比特q2,将P0门添加到该条量子线路中,根据该P1门作用的量子比特q2、Z 门操作的量子比特q3,将P1门和Z门添加到该条量子线路的副本量子线路中。 对另一条同样操作,最终得到4条中间的新量子线路,每条的量子比特总数仍 为5,分别如下:
第一条包括量子逻辑门H(q0)、H(q1)、RY(q2)、H(q4)、P0(q0)、X(q1)、 CNOT(q1,q2)、H(q1)、P0(q2)、H(q4)、H(q2)、CNOT(q3,q4)、RZ(q3)、Y(q4)、 RX(q4);
第二条包括量子逻辑门H(q0)、H(q1)、RY(q2)、H(q4)、P0(q0)、X(q1)、 CNOT(q1,q2)、H(q1)、P1(q2)、Z(q3)、H(q4)、H(q2)、CNOT(q3,q4)、RZ(q3)、 Y(q4)、RX(q4);
第三条包括量子逻辑门H(q0)、H(q1)、RY(q2)、H(q4)、P1(q0)、NOT(q3)、 X(q1)、CNOT(q1,q2)、H(q1)、P0(q2)、H(q4)、H(q2)、CNOT(q3,q4)、RZ(q3)、 Y(q4)、RX(q4);
第四条包括量子逻辑门H(q0)、H(q1)、RY(q2)、H(q4)、P1(q0)、NOT(q3)、 X(q1)、CNOT(q1,q2)、H(q1)、P1(q2)、Z(q3)、H(q4)、H(q2)、CNOT(q3,q4)、 RZ(q3)、Y(q4)、RX(q4)。
此时,作用的量子比特分别位于第一部分量子线路和第二部分量子线路的 双量子逻辑门都被拆分,得到4条新量子线路。
拆分各条新量子线路,以量子比特q0、q1、q2为前一部分,以量子比特q3、 q4为后一部分拆分该量子线路,也就是将当前新量子线路对应的第一部分量子 线路和第二部分量子线路,分别作为子量子线路,最终得到8条子量子线路, 其中4条包含的总(量子)比特数为3,另4条包含的总(量子)比特数为2, 并且,根据计算机的计算特性,每条子量子线路的量子比特位均从0开始编号, 8条子量子线路分别如下:
1#子量子线路包括H(q0)、H(q1)、RY(q2)、P0(q0)、X(q1)、CNOT(q1,q2)、 H(q1)、P0(q2)、H(q2);
2#子量子线路包括H(q1)、H(q1)、CNOT(q0,q1)、RZ(q0)、Y(q1)、RX(q1);
3#子量子线路包括H(q0)、H(q1)、RY(q2)、P0(q0)、X(q1)、CNOT(q1,q2)、 H(q1)、P1(q2)、H(q2);
4#子量子线路包括H(q1)、Z(q0)、H(q1)、CNOT(q0,q1)、RZ(q0)、Y(q1)、RX(q1);
5#子量子线路包括H(q0)、H(q1)、RY(q2)、P1(q0)、X(q1)、CNOT(q1,q2)、 H(q1)、P0(q2)、H(q2);
6#子量子线路包括H(q1)、NOT(q0)、H(q1)、CNOT(q0,q1)、RZ(q0)、Y(q1)、 RX(q1);
7#子量子线路包括H(q0)、H(q1)、RY(q2)、P1(q0)、X(q1)、CNOT(q1,q2)、 H(q1)、P1(q2)、H(q2);
8#子量子线路包括H(q1)、NOT(q0)、Z(q0)、H(q1)、CNOT(q0,q1)、RZ(q0)、 Y(q1)、RX(q1)。
同理,每多一个符合上述判断条件的特定种类的双门,最终得到的子量子 线路数量将会翻一倍。
若表示各振幅的数据类型为Float类型,则确定1#至8#子量子线路全振幅 量子计算所需计算资源分别为8byte×23;8byte×22;8byte×23;8byte×22;8byte ×23;8byte×22;8byte×23;8byte×22,根据每次计算时执行的子量子线路的数 量,即可确定部分振幅量子计算所需计算资源
一条量子线路中量子比特总数的多少,极大的影响了量子计算的复杂度和 内存/计算资源需求。由于每条子量子线路的量子比特数将近减半,执行量子线 路需要的计算资源呈指数级递减,及对计算资源的消耗占用也大大减少。
如图4所示的所述调度系统的第一实施方式的结构示意图,图4与所述调 度方法的第一实施方式的流程示意图(图2)相对应,本发明提供的一种调度系 统的第一实施方式包括:
任务接收模块301,用于接收计算任务;
轮询模块302,用于询问所有计算集群中的当前计算集群以使所述当前计算 集群确定能否执行所述计算任务并返回确定结果;
判断模块303,用于判断是否接收到所述当前计算集群返回的确定结果;
调度模块304,用于在接收到所述当前计算集群返回的确定结果,且该确定 结果为能够执行时,调度所述当前计算集群执行所述计算任务;在接收到所述 当前计算集群返回的确定结果,且该确定结果为不能执行时,则将下一计算集 群作为当前计算集群,反馈至轮询模块302以询问所有计算集群中的当前计算 集群以使所述当前计算集群确定能否执行所述计算任务并返回确定结果。
其中,作为本实施方式一种优选的方案,调度模块304,还用于在询问到编 号排序为最后一个的计算集群时,若总调度服务器3接收到该计算集群返回的 确定结果,且该确定结果为不能执行,则输出无法计算。即当所有计算集群轮 询一遍后,所有计算集群的确定结果均为不能执行,则总调度服务器输出无法 计算,以便于及时对该计算任务进行拆解调整或者配置更高资源的计算集群以 支持该计算任务的执行。
结合图1、图2和图4,在用户端通过云平台将计算任务发送到执行量子计 算的后端(即各计算集群)时,本实施例提供的调度系统在接收计算任务后, 询问所有计算集群以使当前询问的计算集群确定能否执行所述计算任务并返回 确定结果,如果接收到确定结果且为能够执行,则直接调度当前被询问的计算 集群执行所述计算任务,如果接收到确定结果且为不能执行,则轮询下一计算 集群确定能否执行所述计算任务并返回确定结果,依次类推,直至询问的当前 计算集群执行所述计算任务,或者询问完所有计算集群,从而实现对计算任务 的调度,便于用户通过云平台等对执行量子计算的各计算集群进行访问,并执 行计算任务,计算集群执行计算任务后返回计算结果。上述整个过程以执行量 子计算的后端为核心,这个过程根据需要执行的量子计算任务调度计算资源, 从而满足不同计算任务的需求。
如图5所示的所述调度系统的第二实施方式的结构示意图,其与所述调度 方法的第二实施方式的流程示意图(图3)相对应,本发明提供的一种调度系统 的第二实施方式,包括:
任务接收模块401,用于接收计算任务,且所述计算任务存储在数据库中。
轮询模块402,用于询问所有计算集群中的当前计算集群以使所述当前计算 集群确定能否执行所述计算任务并返回确定结果。
计算更新模块403,用于在所述当前计算集群确定能够执行所述计算任务时, 启动所述当前计算集群直接执行所述计算任务,且在所述当前计算集群执行所 述计算任务的过程中,更新所述数据库中所述计算任务的任务状态。
判断模块404,用于判断是否接收到所述当前计算集群返回的确定结果。
调度模块405,用于在接收到所述当前计算集群返回的确定结果,且该确定 结果为能够执行时,调度所述当前计算集群执行所述计算任务;在接收到所述 当前计算集群返回的确定结果,且该确定结果为不能执行时,则将下一计算集 群作为当前计算集群,反馈至轮询模块402以询问所有计算集群中的当前计算 集群以使所述当前计算集群确定能否执行所述计算任务并返回确定结果。
状态查询模块406,用于在未接收到所述当前计算集群返回的确定结果时, 查询所述数据库中所述任务状态是否更新;并且,在查询结果为更新的情况下, 将所述确定结果更新为能够执行,在查询结果为未更新的情况下,将所述确定 结果更新为不能执行。
由于各计算集群与数据库建立了通讯连接,并且一旦计算集群执行所述计 算任务,计算集群即会更新数据库中所述计算任务的任务状态。因此,在总调 度服务器3未接收到所述当前计算集群返回的确定结果的情况下,为准确的获 知当前计算集群的确定结果,总调度服务器3还可以通过查询数据库中对应的 任务状态是否更新进行确定。若查询到数据库7中对应的任务状态已更新,则 确定当前计算集群能够执行所述任务,且所述当前计算集群正在执行所述计算 任务或已经执行完毕所述计算任务,此时将总调度服务器3中确定结果更新为 能够执行,该确定结果可以反馈给用户端1和/或存储在所述总调度服务器3以 备后续使用;若查询到数据库7中对应的任务状态未更新,则确定当前计算集 群不能执行所述任务,因此总调度服务器3中当前计算集群返回的确定结果更 新为不能执行,确定结果更新后,总调度服务器可以将所述计算任务发送到下 一个计算集群。
本发明实施例还提供一种存储介质,所述存储介质中存储有计算机程序, 其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
具体的,在本实施例中,上述存储介质可以被设置为存储用于执行以下步 骤的计算机程序:
S201、接收计算任务,且所述计算任务存储在数据库中。
S202、询问所有计算集群中的当前计算集群以使所述当前计算集群确定能 否执行所述计算任务并返回确定结果。
S203、在所述当前计算集群确定能够执行所述计算任务时,所述当前计算 集群直接执行所述计算任务,且在所述当前计算集群执行所述计算任务的过程 中,更新所述数据库中所述计算任务的任务状态。
S204、判断是否接收到所述当前计算集群返回的确定结果。
S205、若接收到所述当前计算集群返回的确定结果,且该确定结果为能够 执行,则调度所述当前计算集群执行所述计算任务。
S206、若接收到所述当前计算集群返回的确定结果,且该确定结果为不能 执行,则将下一计算集群作为当前计算集群,返回执行所述询问所有计算集群 中的当前计算集群以使所述当前计算集群确定能否执行所述计算任务并返回确 定结果的步骤。
S207、若未接收到所述当前计算集群返回的确定结果,则查询所述任务状 态是否更新。
S208、若更新,则将所述确定结果更新为能够执行。
S209、若未更新,则将所述确定结果更新为不能执行。
具体的,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存 储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序 的介质。
本发明实施例还提供一种电子装置,包括存储器和处理器,所述存储器中 存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一 项方法实施例中的步骤。
具体的,上述电子装置还可以包括传输设备以及输入输出设备,其中,该 传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
具体的,在本实施例中,上述处理器可以被设置为通过计算机程序执行以 下步骤:
S201、接收计算任务,且所述计算任务存储在数据库中。
S202、询问所有计算集群中的当前计算集群以使所述当前计算集群确定能 否执行所述计算任务并返回确定结果。
S203、在所述当前计算集群确定能够执行所述计算任务时,所述当前计算 集群直接执行所述计算任务,且在所述当前计算集群执行所述计算任务的过程 中,更新所述数据库中所述计算任务的任务状态。
S204、判断是否接收到所述当前计算集群返回的确定结果。
S205、若接收到所述当前计算集群返回的确定结果,且该确定结果为能够 执行,则调度所述当前计算集群执行所述计算任务。
S206、若接收到所述当前计算集群返回的确定结果,且该确定结果为不能 执行,则将下一计算集群作为当前计算集群,返回执行所述询问所有计算集群 中的当前计算集群以使所述当前计算集群确定能否执行所述计算任务并返回确 定结果的步骤。
S207、若未接收到所述当前计算集群返回的确定结果,则查询所述任务状 态是否更新。
S208、若更新,则将所述确定结果更新为能够执行。
S209、若未更新,则将所述确定结果更新为不能执行。
以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果, 以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡 是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出 说明书与图示所涵盖的精神时,均应在本发明的保护范围内。