CN117391206B - 量子电路处理方法、装置及电子设备 - Google Patents

量子电路处理方法、装置及电子设备 Download PDF

Info

Publication number
CN117391206B
CN117391206B CN202310577717.1A CN202310577717A CN117391206B CN 117391206 B CN117391206 B CN 117391206B CN 202310577717 A CN202310577717 A CN 202310577717A CN 117391206 B CN117391206 B CN 117391206B
Authority
CN
China
Prior art keywords
quantum
instruction
list
target
operation instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310577717.1A
Other languages
English (en)
Other versions
CN117391206A (zh
Inventor
方堃
张慕男
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202310577717.1A priority Critical patent/CN117391206B/zh
Publication of CN117391206A publication Critical patent/CN117391206A/zh
Application granted granted Critical
Publication of CN117391206B publication Critical patent/CN117391206B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • G06N10/20Models of quantum computing, e.g. quantum circuits or universal quantum computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • G06N10/60Quantum algorithms, e.g. based on quantum optimisation, quantum Fourier or Hadamard transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • G06N10/80Quantum programming, e.g. interfaces, languages or software-development kits for creating or handling programs capable of running on quantum computers; Platforms for simulating or accessing quantum computers, e.g. cloud-based quantum computing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Advance Control (AREA)

Abstract

本公开提供了一种量子电路处理方法、装置及电子设备,涉及量子计算技术领域,具体涉及量子电路技术领域。具体实现方案为:获取第一指令列表;基于第一指令列表,获取第一量子电路的操作指令执行顺序的依赖关系;基于依赖关系,按照操作指令涉及的量子位标号从小到大的顺序对第一量子电路的操作指令进行重排序,得到第二指令列表;基于第二指令列表,确定分类信息,分类信息包括:用于指示量子测量操作在第一量子电路位置的第一信息;在第一信息指示量子测量操作在第一量子电路末端位置的情况下,基于分类信息和第二指令列表,对第一量子电路进行等效编译,得到与第一量子电路等效的第二量子电路的第三指令列表。

Description

量子电路处理方法、装置及电子设备
技术领域
本公开涉及量子计算技术领域,尤其涉及量子电路技术领域,具体涉及一种量子电路处理方法、装置及电子设备。
背景技术
量子计算利用量子世界中特有的运行规律,提供了一条全新的并且非常有前景的信息处理方式。在诸多特定问题上,量子算法可以带来超越经典算法的优势。例如,利用秀尔(Shor)算法,可以对大整数进行高效的分解,利用格罗弗(Grover)算法,可以更快的进行数据搜索。随着量子理论的发展,不断有新的量子算法被提出,如何高效的对这些算法进行模拟或者在真正的量子硬件上运行始终是一个重要的问题。
目前,量子算法的经典模拟或者真机运行主要受限于量子比特的数量。在经典模拟上,由于描述量子态的列向量的长度随对应比特数呈指数增长(例如一个n比特的量子态的列向量长度为2n),经典计算机很难模拟大规模的量子算法。受计算机内存和处理器能力的限制,现有的量子电路模拟方式最多能支持模拟几十个量子比特的算法。
发明内容
本公开提供了一种量子电路处理方法、装置及电子设备。
根据本公开的第一方面,提供了一种量子电路处理方法,包括:
获取第一指令列表,所述第一指令列表包括第一量子电路的操作指令,所述操作指令用于指示所述第一量子电路的量子操作,所述量子操作包括量子测量操作;
基于所述第一指令列表,获取所述第一量子电路的操作指令执行顺序的依赖关系;
基于所述依赖关系,按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行重排序,得到所述第一量子电路的第二指令列表;
基于所述第二指令列表,确定分类信息,所述分类信息包括:用于指示所述量子测量操作在所述第一量子电路位置的第一信息;
在所述第一信息指示所述量子测量操作在所述第一量子电路末端位置的情况下,基于所述分类信息和所述第二指令列表,对所述第一量子电路进行等效编译,得到与所述第一量子电路等效的第二量子电路的第三指令列表,所述第三指令列表包括:重置操作的操作指令,所述重置操作的操作指令位于量子测量操作的操作指令之后,所述重置操作用于将量子比特的量子态重置至零态,所述第二量子电路的量子比特数量小于所述第一量子电路的量子比特数量,所述末端位置指示所述量子测量操作是沿着量子态时间演化方向上的量子测量操作中最后一个量子测量操作。
根据本公开的第二方面,提供了一种量子电路处理装置,包括:
第一获取模块,用于获取第一指令列表,所述第一指令列表包括第一量子电路的操作指令,所述操作指令用于指示所述第一量子电路的量子操作,所述量子操作包括量子测量操作;
第二获取模块,用于基于所述第一指令列表,获取所述第一量子电路的操作指令执行顺序的依赖关系;
重排序模块,用于基于所述依赖关系,按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行重排序,得到所述第一量子电路的第二指令列表;
确定模块,用于基于所述第二指令列表,确定分类信息,所述分类信息包括:用于指示所述量子测量操作在所述第一量子电路位置的第一信息;
等效编译模块,用于在所述第一信息指示所述量子测量操作在所述第一量子电路末端位置的情况下,基于所述分类信息和所述第二指令列表,对所述第一量子电路进行等效编译,得到与所述第一量子电路等效的第二量子电路的第三指令列表,所述第三指令列表包括:重置操作的操作指令,所述重置操作的操作指令位于量子测量操作的操作指令之后,所述重置操作用于将量子比特的量子态重置至零态,所述第二量子电路的量子比特数量小于所述第一量子电路的量子比特数量,所述末端位置指示所述量子测量操作是沿着量子态时间演化方向上的量子测量操作中最后一个量子测量操作。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够执行第一方面中的任一项方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行第一方面中的任一项方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现第一方面中的任一项方法。
根据本公开的技术解决了相关技术中量子电路的经典模拟和真机运行比较难的问题,使得能够实现对大规模量子比特的量子电路进行经典模拟和真机运行。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例的量子电路处理方法的流程示意图;
图2是一示例的静态量子电路的结构示意图;
图3是一示例的动态量子电路的结构示意图;
图4是静态量子电路优化编译后的动态量子电路的结构示意图;
图5是动态量子电路优化编译后的动态量子电路的结构示意图;
图6是一示例的包括经典控制量子操作的量子电路的结构示意图;
图7是基于推迟测量原理处理后得到的静态量子电路的结构示意图;
图8是多量子比特门分解得到的量子电路的结构示意图;
图9是量子测量操作的分类场景图;
图10是各量子操作编号后的静态量子电路的结构示意图;
图11是优化编译实例中输入量子电路的结构示意图;
图12是优化编译实例中输出量子电路的结构示意图;
图13是根据本公开第二实施例的量子电路处理装置的结构示意图;
图14是用来实施本公开的实施例的示例电子设备的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
第一实施例
如图1所示,本公开提供一种量子电路处理方法,包括如下步骤:
步骤S101:获取第一指令列表,所述第一指令列表包括第一量子电路的操作指令,所述操作指令用于指示所述第一量子电路的量子操作,所述量子操作包括量子测量操作。
本实施例中,量子电路处理方法涉及量子计算技术领域,尤其涉及量子电路技术领域,其可以广泛应用于量子电路的经典模拟和真机运行场景下。本公开实施例的量子电路处理方法,可以由本公开实施例的量子电路处理装置执行。本公开实施例的量子电路处理装置可以配置在任意电子设备中,以执行本公开实施例的量子电路处理方法。
受计算机内存和处理器能力的限制,现有的量子电路模拟方式最多能支持模拟几十个量子比特的算法。比如,笔记本能模拟20-30个左右的量子比特,大型超级计算机和集群可以最多模拟30-40个左右的量子比特。在真机运行上,由于当前量子芯片的可扩展性问题尚未解决,导致量子计算机能提供的量子比特数非常有限。因此,量子电路优化是量子计算领域中的一个基本问题。
量子电路优化是通过一定的技术手段,可以将给定的量子电路进行简化,以降低其经典模拟和真机运行的要求,进而加速量子算法的研究和量子计算在实际场景下的落地。
而本实施例的量子电路处理可以为量子电路优化的处理,其目的在于通过对量子电路进行优化编译,可以使得编译得到的量子电路在量子比特数上对原量子电路进行大量简化。一方面,可以进一步提升量子算法经典模拟的规模,加强经典计算机对量子算法的验证能力,另一方面,也可以降低量子算法在真机运行上的比特数要求,弥补当前量子芯片可扩展性问题的不足。
以下详细介绍量子电路模型。
目前,量子计算实现方式可以基于量子电路模型,即通过在量子比特上作用一系列的量子门完成量子态的演化,并在电路末端进行量子测量以获取计算结果。
目前,使用比较多的量子电路是静态量子电路,即仅在电路末端包含量子测量操作的量子电路。随着近期硬件方向的快速发展,主要是量子比特相干时间的显著提升,以及高保真度中间态测量与重置操作的实现,包含电路中间测量以及重置操作的动态量子电路越来越受到业界的重视。
由于引入了电路的中间测量,动态量子电路可以在量子比特的相干时间内,将量子计算和实时的经典计算与通信有效的结合起来。这一特性使得通过量子电路模型可以实现的计算任务的多样性大大增加。例如,利用动态量子电路的中间测量,可以在电路运行中实现前反馈操作,即根据中间测量获得的结果决定接下来要作用什么量子门,亦或抛弃当前的计算结果,重新开始计算任务。这样的功能在实现量子纠错中是非常重要的。因此可以预见的是,动态量子电路在未来将会成为各类量子算法以及量子应用的重要组成部分。
此外,由于动态量子电路中的量子比特可以被重置并在后续计算过程中继续被使用,因此与静态量子电路相比,在运行相同的量子算法的情况下,动态量子电路可以有效地减少计算任务所需的量子比特数,且理论上计算能力不受任何影响。例如在静态量子电路中需要n量子比特的Berstein-Vazirani算法,在动态量子电路仅需2个量子比特即可实现。
可以看出,动态量子电路具有很多优势,并且越来越受到业界的重视。可以通过量子电路优化方式引入动态量子电路,即给定一个量子电路,可以通过量子电路优化获取与其等效的动态量子电路。本实施例可以将给定的量子电路等效编译为动态量子电路,同时可以大幅度减少整个计算任务所用的量子比特数,从而有助于实现动态量子电路的诸多优势。其中,给定的量子电路可以为静态量子电路,也可以为动态量子电路,这里不进行具体限定。
量子电路图可以表示了量子电路模型计算的全部过程。
图2是一示例的静态量子电路的结构示意图,如图2所示,可以用一根水平线表示一个量子比特系统,从上至下依次对量子比特的量子位进行标号,其中,量子位的标号往往从零开始。
量子电路图中时间演化的方向从左到右,最左端为初始的量子态,其中,通常每个量子比特初始化为零态,之后对初始态依次作用不同的量子门操作以完成量子态的演化。同时可以对某些量子位进行量子测量,获得测量结果。
如果一个量子电路中不包含重置、中间量子测量等操作,且所有测量操作都位于量子电路的最末端,则此类量子电路称为静态量子电路,一个静态量子电路的示例如图2所示。
量子电路图中除了初始量子态以外的其余部分,通常可以按照量子门的作用顺序用一个有序的指令列表进行表示,指令列表中每个元素代表一个操作指令,该操作指令可以为量子门操作指令或者量子测量操作指令。
每一个单量子比特门(如H,X,Y,Z,S,T,Rx,Ry,Rz等)表示为一个包含四个元素的操作指令[name,which_qubit,parameters,condition],其中name为量子门的名称,which_qubit为量子门作用的量子位,parameters为量子门的参数(如没有参数则默认为None),condition表示该量子门操作受哪一个量子位测量结果的控制(标准量子电路中该参数默认为None)。例如,[Rx,2,pi,None]表示对量子位2上的量子比特作用一个Rx旋转门,旋转角度为pi。
每一个多量子比特门(如控制非门CNOT,SWAP门,控制-控制非门Toffoli门)表示为一个包含四个元素的指令[name,which_qubit,parameters,condition]。其中,name为量子门的名称,which_qubit为该多量子比特门作用的量子位构成的列表,parameters为量子门的参数(如没有参数则默认为None),condition表示该量子门操作受哪一个量子位测量结果的控制(如果没有参数则默认为None)。例如,[SWAP,[1,2],None,None]表示在量子位1和2之间作用SWAP门;而[TOFFOLI,[1,2,3],None,None]表示对量子位1,2和3作用Toffoli门,其中1,2为控制位,3为受控位。
每一个单比特测量表示为一个包含四个元素的指令[measure,which_qubit,basis,mid],其中basis表示测量的基,由四个参数决定,包括测量角度angle,测量平面plane,域集s,域集t,而mid为标识当前测量的ID。例如,[measure,2,[0,‘YZ’,[1],[2]],‘a’]表示对量子位2进行测量,测量角度为0,测量平面为‘YZ’平面,域集s为1,域集t为2,当前测量指令的ID为‘a’。
按照如上的指令表示规则,图2中的静态量子电路可以表示为如下的有序指令列表:
static_circuit=[[H,0,None,None],[H,1,None,None],[H,2,None,None],[H,3,None,None],[H,4,None,None],[CNOT,[0,1],None,None],[CNOT,[2,3],None,None],[SWAP,[1,2],None,None],[Rx,1,α,None],[Ry,3,β,None],[Rz,4,γ,None],[Toffoli,[1,3,4],None,None],[measure,0,[0,‘YZ’,[],[]],‘a’],[measure,1,[0,‘YZ’,[],[]],‘b’],[measure,2,[0,‘YZ’,[],[]],‘c’],[measure,3,[0,‘YZ’,[],[]],‘d’],[measure,4,[0,‘YZ’,[],[]],‘e’]]。
更为一般的,量子电路的操作中还可能出现在电路中间对一部分量子比特进行量子测量,并根据测量的结果来调控其余的量子比特的演化,这类操作称为经典控制量子操作,其是由量子测量操作得到的经典信息控制的量子门操作,经典信息包括0、1。同时可以在获得电路中间的测量结果后,将这些被测量的量子比特重置为|0>态,以供后续计算继续使用。这类包含电路中间测量以及重置操作的量子电路称为动态量子电路,一个动态量子电路的示例如图3所示。
动态量子电路操作指令:除了上述介绍的静态量子电路中的操作外,动态量子电路中还包括经典控制量子操作和重置操作。其中,
每一个经典控制量子操作表示为一个包含四个元素的指令[name,which_qubit,parameters,condition],name为量子门的名称,which_qubit为量子门作用的量子位,parameters为量子门的参数(如没有参数则默认为None),condition表示该量子门操作受哪一次测量结果的控制。
例如,图3中经典控制量子门中经典受控量子Z门,可以表示为[Z,3,None,‘a’],即作用在量子位3上的Pauli Z门,受控条件为量子位1上的测量结果(假设该测量的mid为‘a’),测量结果为0则不作用量子门,测量结果为1则作用量子门。
每一个重置操作指令可以表示为一个包含四个元素的指令[reset,which_qubit,matrix,None],其中,which_qubit为需要重置的量子位,matrix为需要重置量子比特的量子态矩阵,经过重置操作后的比特可供后续计算继续使用。例如,图3中重置操作的操作指令可以表示为[reset,1,matrix,None]。
按照如上的指令表示规则,图3中的动态量子电路可以表示为如下的有序指令列表:
dynamic_circuit=[[H,0,None,None],[H,1,None,None],[H,2,None,None],[H,3,None,None],[Toffoli,[0,2,1],None,None],[measure,1,[0,‘YZ’,[],[]],‘a’],[Z,3,None,‘a’],[reset,1,matrix,None],[H,1,None,None],[Toffoli,[1,2,3],None,None],[measure,3,[0,‘YZ’,[],[]],‘b’],[X,2,None,‘b’],[measure,0,[0,‘YZ’,[],[]],‘c’],[measure,1,[0,‘YZ’,[],[]],‘d’],[measure,2,[0,‘YZ’,[],[]],‘e’]]。
如果一个量子电路可以等效编译为使用更少量子比特数的动态量子电路,可以称该量子电路为可编译量子电路,反之则称为不可编译量子电路。其中,第一量子电路可以为可编译量子电路。
需要注意的是,上述对于可编译量子电路的定义并不局限于静态量子电路,对于一个动态量子电路,如果通过优化编译也可以减少使用的量子比特数,则这样的动态量子电路也是可编译的。例如图2所示的静态量子电路与图3所示的动态量子电路均是可编译量子电路,图2的静态量子电路经过量子电路优化编译后的动态量子电路如图4,图3的动态量子电路经过量子电路优化编译后的动态量子电路如图5所示。
在一些量子电路优化场景中,可以允许输入电路在量子电路最末端的测量后进行经典控制量子操作,如图6所示,量子电路最末端的测量后进行了经典控制量子操作,可以通过推迟测量原理,将其转化为标准的静态量子电路后,再进行到动态量子电路的编译。其中,推迟测量原理为:任何在量子电路中间阶段的测量总可以被移至电路的最末端;如果该测量结果被用于该电路的某一阶段的话,则经典控制量子操作可以被量子控制操作所代替。
图6所示的量子电路,经过推迟测量处理后的量子电路如图7所示,显然,这样的处理方式对于输入量子电路是包含中间测量以及电路中间的经典控制量子操作的动态量子电路是不适用的。而本实施例中,第一量子电路可以为包含中间测量以及电路中间的经典控制量子操作的动态量子电路。
除此之外,虽然从数学上可以证明,任意的n量子比特门都可以分解为单量子比特门和双量子比特CNOT门的组合,因此对于包含n(n>2)量子比特门的量子电路,可以先将所有n量子比特门分解为只包含单、双量子比特门的形式,再进行后续处理。但是这样的分解会使得量子电路的总操作数显著增加,因此导致后续编译过程的复杂度显著提升,例如,图8展示的是一个3量子比特Toffoli门分解成单双量子比特门之后的量子电路图。而本实施例中,可以直接处理包含多量子比特门的输入电路,即第一量子电路可以包括多量子比特门。
在步骤S101中,第一指令列表可以为第一量子电路的有序指令列表,可以获取预先存储的第一量子电路的第一指令列表,也可以获取用户输入的第一量子电路的第一指令列表,这里不进行具体限定。
需要说明的是,第一量子电路中的每个量子比特的最末端均存在量子测量操作,该量子测量操作可以出现在最末端的经典控制量子操作前。
步骤S102:基于所述第一指令列表,获取所述第一量子电路的操作指令执行顺序的依赖关系。
该步骤中,针对一操作指令,其依赖关系可以指的是执行当前操作指令前必须执行完成的操作指令。
可以基于第一指令列表中操作指令所作用的量子位,确定各个操作指令执行顺序的依赖关系。若不同操作指令所作用的量子位存在交集,则这些操作指令在执行顺序上存在依赖关系。比如,第一操作指令在第一指令列表中排列顺序在第二操作指令的排列顺序之前,两者所作用的量子位存在交集,如均作用了量子位0,则执行第二操作指令前必须执行完成第一操作指令,两个操作指令之间存在依赖关系。
在一可选实施方式中,针对每个操作指令,可以反向遍历(即从后往前遍历)第一指令列表,获取与该操作指令所作用的量子位存在交集的其他操作指令,该操作指令的依赖关系则可以包括排序在该操作指令之前,且量子位与之存在交集的其他操作指令。
在另一可选实施方式中,可以获取第一指令列表中操作指令所作用的量子位;基于操作指令所作用的量子位在第一量子电路的量子操作中出现的次序,对操作指令进行编号,得到第一量子电路的操作指令的编号信息;基于操作指令的编号信息,查找第一量子电路中与操作指令关联的其他操作指令,得到依赖关系。
需要说明的是,对于经典控制量子操作的操作指令,其依赖关系还需要考虑经典控制量子操作的受控位上量子操作的操作指令,即其执行之前,需要先执行完成受控位上的量子操作。
步骤S103:基于所述依赖关系,按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行重排序,得到所述第一量子电路的第二指令列表。
该步骤中,在获得第一量子电路的操作指令执行顺序的依赖关系之后,可以对第一量子电路的操作指令进行顺序优化即重排序。
可以根据依赖关系,对第一指令列表中的操作指令按照预设优先原则进行重排序,以实现第一量子电路的操作指令的重排序,其中,预设优先原则可以为行序优先原则,行序优先原则指示按照操作指令涉及的量子位标号从小到大的顺序进行排序,即先排序作用量子位0的操作指令,再排序作用量子位1的操作指令,以此类推。其中,操作指令涉及的量子位可以包括操作指令直接作用的量子位,对于经典控制量子操作的操作指令,该操作指令涉及的量子位还可以包括操作指令作用的受控条件所在的量子位。
也就是说,在考虑到第一量子电路的操作指令执行顺序的依赖关系的同时,让量子操作尽量按行的顺序进行执行,以将某一量子比特上所有操作尽可能快地执行完,并对该量子比特进行量子测量。
在一可选实施方式中,可以先对第一指令列表中的操作指令按照行序优先原则进行重排序,之后在重排序的基础上,再考虑操作指令之间的依赖关系,即基于操作指令之间的依赖关系,再对操作指令进行重排序,得到第一量子电路的第二指令列表。也即可以通过两次重排序,来实现第一量子电路的操作指令按照相应顺序进行排序。
在另一可选实施方式中,可以在一次重排序过程中,在考虑操作指令之间依赖关系的同时,对第一指令列表中的操作指令按照行序优先原则进行重排序,得到第二指令列表。
通过对操作指令的重排序,使得重排序得到的第二指令列表中操作指令,在考虑到操作指令之间依赖关系的同时,让量子操作尽量按行序优先原则指示的排序顺序进行执行。这样,一方面不会破坏与原有量子电路的等价性,另一方面也为后续的等效编译(即第一量子电路至第二量子电路的等效编译)进行预处理,保障编译出来的动态量子电路需要的比特数尽可能少。
步骤S104:基于所述第二指令列表,确定分类信息,所述分类信息包括:用于指示所述量子测量操作在所述第一量子电路位置的第一信息。
该步骤中,分类信息可以包括两种情况下,第一种,若第一量子电路不包括经典控制量子操作,则分类信息仅针对量子测量操作进行分类,可以根据位置的不同,对量子测量操作进行分类。比如,量子测量操作位于量子电路的中间位置,量子测量操作位于量子电路的末端位置。
其中,末端位置指示所述量子测量操作是沿着量子态时间演化方向上的量子测量操作中最后一个量子测量操作,而中间位置与末端位置不同,指示量子测量操作不是沿着量子态时间演化方向上的量子测量操作中最后一个量子测量操作。
第二种,若第一量子电路包括经典控制量子操作,则分类信息可以针对量子测量操作和经典控制量子操作进行分别分类,以识别量子测量操作在第一量子电路中的位置,以及识别和区别第一量子电路中的各经典控制量子操作。
在一可选实施方式中,可以正序遍历第二指令列表,并记录每个量子位上的量子测量操作的数量,在正序遍历完成的情况下,确定每个量子测量操作在第一量子电路的位置。其中,正序遍历指的是从第二指令列表中的第一个操作指令开始遍历到最后一个操作指令。
在另一可选实施方式中,可以倒序遍历第二指令列表,在遍历到量子测量操作的情况下,基于倒序遍历过程中更新的第一目标列表,确定该量子测量操作在第一量子电路的位置。其中。第一目标列表用于记录是否遍历到第一量子电路中位于第一量子电路末端位置的每个量子位的量子测量操作。
在实际应用中,可以将分类信息作为第二指令列表中操作指令的参数添加至操作指令中,即可以对第二指令列表进行编译前的预处理操作,得到添加了分类信息参数的指令列表进行量子电路的等效编译。
步骤S105:在所述第一信息指示所述量子测量操作在所述第一量子电路末端位置的情况下,基于所述分类信息和所述第二指令列表,对所述第一量子电路进行等效编译,得到与所述第一量子电路等效的第二量子电路的第三指令列表,所述第三指令列表包括:重置操作的操作指令,所述重置操作的操作指令位于量子测量操作的操作指令之后,所述重置操作用于将量子比特的量子态重置至零态,所述第二量子电路的量子比特数量小于所述第一量子电路的量子比特数量,所述末端位置指示所述量子测量操作是沿着量子态时间演化方向上的量子测量操作中最后一个量子测量操作。
对于动态量子电路作为输入的情况下,量子电路中的量子测量操作可能为中间测量,量子测量操作后还可以包括经典控制量子操作,在量子测量操作后便将量子比特重置并且回收的做法是不适用的。
而该步骤中,在对第二指令列表进行预处理的基础上,可以基于第一信息判定量子测量操作在第一量子电路的位置,在遍历到位于中间位置的量子测量操作的情况下,可以不进行重置操作的添加操作,而在第一信息指示量子测量操作在所述第一量子电路末端位置的情况下,可以在量子测量操作的操作指令等效编译后,在量子测量操作后添加重置操作,重置后将该量子比特回收继续使用,这样可以使得等效编译得到的第二量子电路的量子比特数会相应减少。
可以针对第二指令列表中每一操作指令,对该操作指令进行等效编译,以将操作指令编译成与该操作指令等效的第二量子电路中的操作指令。其中,该第二量子电路可以为动态量子电路。
在进行等效编译时,可以获取第二指令列表中操作指令所作用的量子位,为该量子位分配寄存单元,该寄存单元可以对应第二量子电路中的量子比特。也即可以将操作指令映射到一个动态量子电路上,具体可以将第一量子电路中每个量子位(即第二指令列表中操作指令所作用的量子位)上的运算动态加载至第二量子电路的寄存单元中。
在将量子测量操作的操作指令等效编译后,若分类信息指示该量子测量操作位于第一量子电路的末端位置,可以将量子测量操作的操作指令对应的寄存单元回收,可以在量子测量操作的操作指令之后添加重置操作的操作指令,通过重置操作指令,可以将分配给量子位的寄存单元进行回收,以供后续计算使用。这样可以保证所等效编译出来的动态量子电路宽度尽可能小。
本实施例中,通过获取所输入的量子电路的操作指令之间的依赖关系,在考虑到量子电路的操作指令之间依赖关系的同时,让量子操作尽量按行的顺序进行执行,以将某一量子比特上所有操作尽可能快地执行完,并对该量子比特进行量子测量,这样可以实现对操作指令的重排序的预处理。并且,在等效编译之前,通过对重排序后的操作指令进行预处理,得到指示量子测量操作位置的分类信息,基于分类信息进行量子电路的等效编译,这样可以使得输入的量子电路扩展到包含中间测量、经典控制量子操作以及多量子比特门的量子电路,使得优化编译的应用场景更加广泛。
并且,通过在等效编译时,在位于末端位置的量子测量操作的操作指令之后添加重置操作的操作指令,以供后续量子位的量子比特计算使用,从而可以使得对量子电路编译后得到的动态量子电路所需的比特数尽可能小,以使得能够实现对大规模量子比特的量子电路进行经典模拟和真机运行,从而可以很好地应用于大规模量子算法的经典模拟中。
并且,基于不同架构设计的量子计算机,其所能提供的量子比特数与各类操作的实现能力也不同。通过等效编译,可以使得量子电路在真实量子计算机上的运行方案更为灵活,可以根据实际的硬件条件,在动态量子电路和静态量子电路之间灵活地进行选择。例如,对于相干时间较短,但易于扩展量子比特数的超导量子计算机,更适合运行宽度较大、深度较小的静态量子电路;而对于相干时间较长,但扩展性相对较差的基于离子阱架构的量子计算机,则更适合运行宽度较小、深度较大的动态量子电路。
可选的,所述步骤S104具体包括:
对所述第二指令列表进行倒序遍历,并在遍历到量子测量操作的情况下,获取所述量子测量操作所作用的第一量子位;
基于所述第一量子位和所述倒序遍历过程中更新的第一目标列表,确定所述量子测量操作在所述第一量子电路的位置,得到所述第一信息,所述第一目标列表用于记录是否遍历到所述第一量子电路中位于所述第一量子电路末端位置的每个量子位的量子测量操作;
其中,在倒序遍历到所述第一量子电路中位于所述第一量子电路末端位置的量子位的量子测量操作的情况下,更新所述第一目标列表。
本实施方式中,通过倒序遍历第二指令列表,并且通过第一目标列表记录遍历过程中是否已遍历到位于末端位置的量子测量操作,来实现第一量子电路中各个量子测量操作的位置确定,从而通过算法设计可以简单地实现分类信息的确定。
可选的,所述基于所述第一量子位和所述倒序遍历过程中更新的第一目标列表,确定所述量子测量操作在所述第一量子电路的位置,得到所述第一信息,包括:
在所述第一目标列表指示已遍历到位于所述第一量子电路末端位置的所述第一量子位的量子测量操作的情况下,确定所述量子测量操作位于所述第一量子电路的中间位置,得到所述第一信息;
在所述第一目标列表指示未遍历到位于所述第一量子电路末端位置的所述第一量子位的量子测量操作的情况下,确定所述量子测量操作位于所述第一量子电路的末端位置,得到所述第一信息。
一可选实施方式中,量子测量操作位于第一量子电路的中间位置时,第一信息可以为False,位于末端位置时,第一信息可以为True。
如此,可以实现第一量子电路中各个量子测量操作的位置确定,以在等效编译过程中实现量子测量操作的场景分类。
可选的,所述量子操作还包括目标操作,所述目标操作为由经典信息控制的量子门操作,所述分类信息还包括第二信息,所述第二信息包括:用于区分所述第二指令列表中所述目标操作的每个操作指令的属性值,所述基于所述第二指令列表,确定分类信息,包括:
在基于遍历控制索引对所述第二指令列表进行遍历的过程中,基于遍历到的所述目标操作的操作指令的遍历控制索引的索引值,确定所述目标操作的操作指令的属性值;且在所述第二指令列表遍历完成的情况下,得到所述第二信息。
本实施方式中,目标操作可以为经典控制量子操作,分类信息可以包括第一信息和第二信息,该分类信息可以将量子测量操作分类为四种情况,如图9所示。
第一种情况,如图9中的(a)所示,为电路中间测量+重置操作;第二种情况,如图9中的(b)所示,为电路中间测量+经典控制量子操作+重置操作;第三种情况,如图9中的(c)所示,为电路末端测量;第四种情况,如图9中的(d)所示,为电路末端测量+经典控制量子操作。
其中,对于图9中的第一种和第二种情况(即电路中间测量操作),在遍历到该类量子测量操作后,无需在指令列表中添加重置操作,也无需在重置后将该量子比特回收继续使用;对于图9中的第三种情况,遍历到该类量子测量操作后,可以在指令列表中该测量操作之后的位置添加重置操作,并且在重置后可以将该量子比特回收继续使用;而对于图9中的第四种情况,在遍历到该类量子测量操作后,还需要等后续经典控制量子操作全部执行完成后,才能将被测量的量子比特重置并回收。
因此,在获得执行顺序优化的电路指令列表后,可以对量子电路中的量子测量操作按照上述四种类型进行分类,基于该分类信息进一步通过量子寄存单元的动态管理进行量子电路的优化编译。
目标操作的操作指令的属性值可以由遍历过程中遍历控制索引的索引值确定,在指令列表的遍历过程中,若遍历到经典控制量子操作的操作指令,则可以在该操作指令中添加该属性值。
在一可选实施方式中,正序遍历过程中,可以将遍历控制索引的索引值确定为属性值。在另一可选实施方式中,在对所述第二指令列表进行倒序遍历的情况下,确定所述目标操作的操作指令的属性值为length-1-i,i为遍历到的所述目标操作的操作指令的遍历控制索引的索引值,length为所述第二指令列表的长度。
分类信息的具体确定过程如下:
输入:量子电路宽度width,第二指令列表circuit_list,第二指令列表的长度length;
输出:完成预处理后的电路指令列表circuit_list,包含circuit_list中所有经典控制量子操作的操作指令列表conditional_operations,包含circuit_list中所有量子比特上位于末端位置的量子测量操作的操作指令列表last_measurement。
步骤1:创建两个空列表conditional_operations和last_measurement,同时初始化一个长度为width的列表last_measurement_found(即第一目标列表),其中每个元素的初始值均为False,该列表用于记录是否已经搜索到每个量子比特上的最后一次量子测量操作的操作指令;
步骤2:通过循环对输入指令列表circuit_list进行倒序遍历,假设当前遍历到的操作指令为operation,且当前操作指令为遍历到的第i个操作指令,i为遍历控制索引(可以从0开始);
步骤2.1:如果operation为量子测量操作,获取其作用的量子位which_qubit;如果last_measurement_found列表中索引为which_qubit的值为False,则进行操作a);如果last_measurement_found列表中索引为which_qubit的值为True,则进行操作b);
操作a):为operation添加last参数,其值为True;将operation添加到last_measurement列表中;将last_measurement_found列表中索引为which_qubit的值修改为True;
操作b):为operation添加last参数,其值为False,随后继续遍历下一个操作指令;
步骤2.2:如果operation为经典控制量子操作,即operation的condition不等于None,则为operation添加c_gate_id属性,属性值为(length-1-i);将operation添加到conditional_operations列表中,继续遍历下一个操作指令;
步骤3:完成对整个circuit_list的倒序遍历后,返回预处理后的circuit_list列表,last_measurement列表以及conditional_operations列表。
需要说明的是,对circuit_list列表进行倒序遍历的过程中,因此循环变量i的值并不是该operation操作在circuit_list中的实际索引值,而步骤2.2计算了operation操作的实际索引值,并为经典控制量子操作添加了c_gate_id属性,该属性用于区分与识别各个经典控制量子操作。
并且,可以将circuit_list列表中的所有量子测量操作分为了电路中间测量(操作指令last参数为False的操作指令)与电路末端测量(操作指令last参数为True的操作指令),并将所有电路末端测量存入last_measurement列表中,方便后续优化编译时根据图9中的分类进行处理。
可选的,所述步骤S105具体包括:
针对所述第二指令列表中每一操作指令,执行如下操作:
获取所述操作指令所作用的第二量子位;
基于所述第二量子位和寄存单元字典,确定为所述第二量子位分配的第二量子电路的寄存单元的第一目标标识,所述寄存单元字典包括寄存单元与量子位的对应关系;
基于所述第一目标标识和所述分类信息,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,所述第三指令列表包括等效编译得到的所述第二量子电路中操作指令。
本实施方式中,可以针对第二指令列表中每个操作指令进行等效编译。
第二指令列表中操作指令可以包括指令类型和所作用的量子位。
在等效编译过程中,可以引入一个量子寄存器,并通过对其寄存单元进行动态增减管理,从而进一步将第二指令列表编译为动态量子电路指令列表dynamic_circuit。
具体来说,可以在遍历输入量子电路的指令列表的时候,将其中的每个量子位动态对应至量子寄存器的一个寄存单元,寄存单元的单元地址即为编译后的动态量子电路中的量子位。
可以基于操作指令所作用的第二量子位和所构建的寄存单元字典,确定为第二量子位分配的第二量子电路的寄存单元的第一目标标识,即寄存单元的地址。其中,寄存单元字典可以用于对寄存单元的占用状态进行记录,即寄存单元字典中数据的键可以是寄存单元的地址,对应的值可以是寄存单元被分配给了输入量子电路的指令列表中哪个量子位。
例如,寄存单元字典可以为:{‘0’:0,‘1’:None,‘2’:3},表示地址为0的寄存单元被分配给了量子位0,地址为1的寄存单元为空闲(即未被分配),地址为2的寄存单元被分配给了量子位3。
在一可选实施方式中,进行第二指令列表的等效编译之前,可以构建一个为空的寄存单元字典,相应的,在进行第二指令列表中指令的等效编译时,可以基于寄存单元字典为操作指令所作用的第二量子位分配寄存单元(如寄存单元字典为空的情况下,可以创建一个新的寄存单元,记录该寄存单元的地址),并基于量子位与寄存单元地址的对应关系更新寄存单元字典,以对寄存单元的占用状态进行记录。之后,可以基于第二指令列表中操作指令所作用的第二量子位和更新的寄存单元字典,继续进行第二指令列表中操作指令的等效编译。
在得到第一目标标识的情况下,可以基于第一目标标识和分类信息,对第二指令列表中的操作指令进行等效编译,其中,第一目标标识可以指示与该操作指令等效的第二量子电路中操作指令所作用的量子比特的量子位。其等效编译的过程将在以下实施方式再进行详细说明。
如此,可以实现第一量子电路的操作指令的等效编译,以得到与第一量子电路等效的第二量子电路中的操作指令。
可选的,所述基于所述第一目标标识和所述分类信息,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,包括:
在所述操作指令为量子测量操作的操作指令或目标操作的操作指令的情况下,基于所述分类信息确定所述操作指令对应量子操作的类型,所述目标操作为由经典信息控制的量子门操作;基于所述操作指令对应量子操作的类型和所述第一目标标识,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令;
在所述操作指令为重置操作的操作指令的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中重置操作的操作指令;
在所述操作指令为单量子比特门的操作指令的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中所述单量子比特门的操作指令;
在所述第二量子位的数量大于1的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中所述操作指令对应的量子门操作的操作指令。
本实施方式中,在指令类型指示操作指令为重置操作的操作指令,或者为多量子比特门操作(即第二量子位的数量大于1)的操作指令的情况下,可以基于第一目标标识,将操作指令等效编译为第二量子电路中与该操作指令等效的操作指令。
在指令类型指示操作指令为量子测量操作或经典控制量子操作的操作指令的情况下,可以基于分类信息确定操作指令对应量子操作的类型,其中,操作指令对应量子操作的类型为量子操作的位置类型。
比如,量子测量操作位于末端位置、位于中间位置、量子测量操作后续是否存在受控条件与之匹配的经典控制量子操作。又比如,经典控制量子操作是位于末端位置的量子测量操作之后,还是位于中间位置的量子测量操作,经典控制量子操作后续是否还有与之受控条件相同的其他经典控制量子操作。上述均可以由量子操作的类型指示。
相应的,可以基于该类型和第一目标标识,对该操作指令进行等效编译,其等效编译得到的操作指令至少包括与该操作指令等效的第二量子电路中操作指令,在一些情况下,如量子测量操作为末端位置的量子测量操作且后续不存在受控条件与之匹配的经典控制量子操作、经典控制量子操作为位于末端位置的量子测量操作的最后一个经典控制量子操作,后续还会生成重置操作,以对被测量的量子比特重置并回收。
如此,可以实现对每个操作指令的等效编译,比如,位于不同位置的量子测量操作操作指令、经典控制量子操作的操作指令、多量子比特门的操作指令、重置操作等。
可选的,在所述操作指令为量子测量操作的操作指令的情况下,所述基于所述分类信息确定所述操作指令对应量子操作的类型,包括:
在所述分类信息指示所述量子测量操作在所述第一量子电路末端位置,且所述第二指令列表中所述量子测量操作之后的操作指令中包括第一操作指令的情况下,确定所述量子测量操作的类型为第一类型,所述第一操作指令为由运行所述操作指令得到的经典信息控制的量子门操作的操作指令;
在所述分类信息指示所述量子测量操作在所述第一量子电路末端位置,且所述第二指令列表中所述量子测量操作之后的操作指令中不包括第一操作指令的情况下,确定所述量子测量操作的类型为第二类型;
在所述分类信息指示所述量子测量操作在所述第一量子电路中间位置的情况下,确定所述量子测量操作的类型为第三类型。
第一类型为如图9中的(d)所示的第四种情况的类型,第二类型为如图9中的(c)所示的第三种情况的类型,第三类型为如图9中的(a)和图9中的(b)所示的类型。
可以基于第一信息确定量子测量操作在第一量子电路的位置,如第一信息为True时,其指示位于末端位置,第一信息为False时,其指示位于中间位置。可以基于第二信息或通过遍历第二指令列表中量子测量操作的操作指令后续的操作指令,来确定该量子测量操作的操作指令后续是否存在与之匹配的经典控制量子操作,从而进一步确定第二指令列表中该量子测量操作之后的操作指令中是否包括第一操作指令。如此,可以实现对量子测量操作的类型的确定。
可选的,所述基于所述操作指令对应量子操作的类型和所述第一目标标识,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,包括:
基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中量子测量操作的操作指令;
在所述量子测量操作的类型为所述第二类型的情况下,基于所述第一目标标识,生成所述第二量子电路中重置操作的操作指令;
更新所述寄存单元字典,更新后的所述寄存单元字典指示所述第一目标标识对应的寄存单元为未分配给量子位的寄存单元。
本实施方式中,在基于第一目标标识,将操作指令等效编译为第二量子电路中量子测量操作的操作指令之后,还需要针对第二类型的量子测量操作,基于第一目标标识,生成重置操作的操作指令,并更新寄存单元字典,以回收被测量的量子比特。如此,可以实现对量子测量操作的操作指令的等效编译。
可选的,在所述操作指令为目标操作的操作指令的情况下,所述基于所述分类信息确定所述操作指令对应量子操作的类型,包括:
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后包括第二操作指令,确定所述目标操作的类型为第四类型,所述分类信息还包括所述第二信息,所述第二信息包括:用于区分所述第一量子电路的操作指令中所述目标操作的每个操作指令的属性值,所述第二操作指令为所述第二指令列表中与所述操作指令受控条件相同,且位于所述操作指令之后的操作指令;
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后不包括所述第二操作指令,且基于所述第一信息确定与所述操作指令的受控条件匹配的第三操作指令位于所述第一量子电路中间位置的情况下,确定所述目标操作的类型为第五类型;
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后不包括所述第二操作指令,且基于所述第一信息确定与所述操作指令的受控条件匹配的第三操作指令位于所述第一量子电路末端位置的情况下,确定所述目标操作的类型为第六类型,所述第三操作指令为量子测量操作的操作指令。
本实施方式中,第四类型为如图9中的(b)和图9中的(d)所示第一个经典控制量子操作的位置类型,第五类型为如图9中的(b)所示第二个经典控制量子操作的位置类型,第六类型为如图9中的(d)所示第二个经典控制量子操作的位置类型。
可以基于操作指令的属性值确定第二指令列表中位于操作指令之后是否还包括第二操作指令,比如,确定第二指令列表中是否除了该属性值对应的操作指令之外,与该操作指令受控条件相同的其他操作指令,即找到该属性值对应的操作指令并排除后,指令列表中还可以查找到该操作指令的受控条件相同的其他操作指令,此时认定第二指令列表中位于操作指令之后还包括第二操作指令,否则认定第二指令列表中位于操作指令之后不包括第二操作指令。
可以基于该操作指令的受控条件查找到与之匹配的量子测量操作的操作指令,并基于第一信息确定该量子测量操作的操作指令在第一量子电路的位置。结合第二操作指令的搜索情况和第三操作指令的位置情况,实现对经典控制量子操作的操作指令的类型确定。
可选的,所述基于所述操作指令对应量子操作的类型和所述第一目标标识,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,包括:
基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中与所述目标操作等效的量子控制操作的操作指令;
在所述目标操作的类型为所述第六类型的情况下,基于所述第三操作指令作用的第三量子位和所述寄存单元字典,确定为所述第三量子位分配的第二量子电路的寄存单元的第二目标标识;
基于所述第二目标标识,生成所述第二量子电路中重置操作的操作指令;
更新所述寄存单元字典,更新后的所述寄存单元字典指示所述第二目标标识对应的寄存单元为未分配给量子位的寄存单元。
本实施方式中,在基于第一目标标识,将操作指令等效编译为第二量子电路中量子控制操作的操作指令之后,还需要针对第六类型的经典控制量子操作,在第二指令列表中查找与其受控条件匹配且位于末端位置的量子测量操作的操作指令,基于该量子测量操作的操作指令所作用的第三量子位,生成重置操作的操作指令,并更新寄存单元字典,以回收被测量的量子比特。如此,可以实现对经典控制量子操作的操作指令的等效编译。
量子电路指令列表优化编译的具体过程如下:
输入:预处理后的量子电路指令列表circuit_list;包含circuit_list中所有经典控制量子操作指令的列表conditional_operations;包含circuit_list中所有量子比特上的最后一次测量操作指令的列表last_measurement;
输出:与输入量子电路等效的动态量子电路指令列表dynamic_circuit_list。
步骤1:创建一个空字典qreg,用于记录各寄存单元动态分配状态;同时初始化一个空列表dynamic_circuit_list,用于记录编译后的动态量子电路指令;
步骤2:通过循环遍历输入量子电路指令列表circuit_list,并假设当前遍历到的操作指令为operation,将operation操作指令的name参数记录为op_name;
步骤2.1:如果当前操作指令operation的which_qubit参数的长度等于1,则将qreg与which_qubit的值作为输入,获得更新后的qreg与输出的寄存单元地址address,根据当前操作执行下述子操作:
子操作a1:如果当前操作为测量操作,则获取operation的basis参数与mid参数,分别记录为op_basis和op_mid;生成量子比特测量操作指令[measure,address,op_basis,op_mid],将其添加至dynamic_circuit_list列表中;获取operation操作指令的last参数,如果该参数值为False,说明该测量并非电路末端测量,则不进行操作;
继续循环遍历circuit_list列表的下一个操作指令;如果该参数的值为True,说明该测量为电路末端测量,则通过循环遍历搜索conditional_operations列表,如果conditional_operations列表中存在condition参数等于op_mid的操作指令,说明该测量操作后还有经典控制量子操作,则不进行操作;
继续循环遍历circuit_list列表的下一个操作指令;如果conditional_operations列表中所有操作指令的condition数均不等于op_mid,说明该测量操作后不存在经典控制量子操作,则生成量子电路重置操作指令[reset,address,matrix,None],将其添加至dynamic_circuit_list列表中;将qreg中address键对应的寄存单元值修改为None;
子操作a2:如果当前操作为经典控制量子操作,即operation的condition参数不为None,则将该参数记录为op_cond;同时获取operation的c_gate_id参数和parameters参数,分别记录为c_id和op_para;生成经典控制量子操作指令[op_name,address,op_para,op_cond],将其添加至dynamic_circuit_list列表中;
通过循环遍历conditional_operations列表,假设当前遍历到的元素为conditional_operation:如果conditional_operation的c_gate_id参数不等于c_id,则不进行操作,继续遍历下一元素;如果conditional_operation的c_gate_id参数等于c_id,则将当前遍历到的操作指令从conditional_operations列表中删除,随后跳出本层循环;
再次通过循环遍历conditional_operations列表,如果conditional_operations列表中存在condition参数等于op_cond的操作指令,说明后续还有以op_cond为条件的经典控制量子操作,则不进行操作,继续循环遍历circuit_list列表的下一个操作指令;如果conditional_operations列表中的所有操作指令的condition参数均不等于op_cond,说明后续不再有以op_cond为条件的经典控制量子操作,之后通过循环遍历last_measurement列表;
如果last_measurement列表中的所有测量操作指令的mid参数均不等于op_cond,说明当前经典控制量子操作的作用条件为电路中间测量的结果,则不进行操作,继续循环遍历circuit_list列表的下一个操作指令;如果last_measurement列表中存在mid参数等于op_cond的测量操作指令,则说明当前经典控制量子操作的作用条件为电路末端测量的结果;
获取mid参数等于op_cond的测量操作指令作用的量子位which_qubit,将qreg与which_qubit作为输入,获取更新后的qreg与which_qubit的对应的寄存单元地址address;生成重置操作指令[reset,address,matrix,None],将其添加至dynamic_circuit_list列表中;将qreg中address键对应的值设置为None;
子操作a3:如果当前操作为重置操作,则获取operation的matrix参数,记录为op_matrix;生成重置操作指令[reset,address,op_matrix,None],将其添加至dynamic_circuit_list列表中;
子操作a4:如果当前操作为单量子比特门操作,则获取当前操作指令的parameter参数,记录为op_para;生成单量子比特门操作指令[op_name,address,op_para,None],并将其添加至dynamic_circuit_list列表中;
步骤2.2:如果当前操作指令operation的which_qubit参数的长度大于1,则创建一个列表qubits,将operation的which_qubit参数赋值给qubits列表;通过循环遍历qubits列表,假设当前遍历到的元素qubit为列表中的第i个元素;将qreg与qubit的值作为输入,获得更新后的qreg与输出的寄存单元地址address;将qubits列表的第i个元素的值修改为address;当qubits列表遍历更新完成后,获取当前操作指令operation的parameters参数,记录为op_para;生成多量子比特门操作指令[op_name,qubits,op_para,None],将其添加至dynamic_circuit_list列表中;
步骤3:循环遍历circuit_list列表完成后,返回优化编译后的电路指令列表dynamic_circuit_list。
上述优化编译算法中的核心点是在将某个量子比特上的所有操作编译完成后,需要将该量子比特对应的寄存单元回收,以供后续计算使用。这样才能保证最后编译出来的量子电路宽度尽可能小,从而更有助于最后算法在硬件上的执行。
在遍历circuit_list列表时,如果当前遍历到的操作为测量操作,则首先需要将该操作指令进行编译,随后获取该次测量操作的last参数,判断该测量是否为当前量子比特上的末端测量,如果不是,则无需后续操作;如果是,则需在conditional_operations列表中搜索是否有以该次测量为作用条件的经典控制量子操作尚未编译,如果有,则无需后续操作;如果没有,则可以在该次测量将量子比特重置,并将量子寄存器中相应的寄存单元回收。
在遍历circuit_list列表时,如果当前遍历到的操作为经典控制量子操作,则首先需要对该操作指令进行编译,并通过c_gate_id识别该指令,从conditional_operations列表中删除,表示该操作指令已被编译。之后遍历conditional_operations列表,搜索后续是否有作用条件与当前操作相同的经典控制量子操作,如果有,则无需后续操作;如果没有,则通过循环遍历last_measurement列表,搜索当前操作的作用条件对应的测量是否为某个量子比特上的末端测量,如果不是,则无需后续操作;如果是,则可以在当前经典控制量子操作后,将其condition对应的量子比特重置,并将量子寄存器中相应的寄存单元回收。
可选的,所述基于所述第二量子位和寄存单元字典,确定为所述第二量子位分配的第二量子电路的寄存单元的第一目标标识,包括:
在查询到所述寄存单元字典中包括所述第二量子位的对应关系的情况下,将所述第二量子位对应的寄存单元的标识确定为所述第一目标标识;
在查询到所述寄存单元字典中未包括所述第二量子位的对应关系的情况下,基于所述寄存单元字典为所述第二量子位分配寄存单元,将所述第二量子位分配的寄存单元的标识确定为所述第一目标标识,并基于所述第二量子位分配的寄存单元的标识更新所述寄存单元字典。
本实施方式中,如果输入量子电路的指令列表中的一个量子位已有对应的寄存单元,则输入量子电路的指令列表中该量子位上的所有量子操作均转移到该寄存单元地址对应的动态量子电路的量子位上执行。
如果某个量子位没有对应的寄存单元,则需为其分配寄存单元。可以通过搜索已创建的寄存单元中是否有空闲的寄存单元可供分配,可选的,在查询到所述寄存单元字典中未包括所述第二量子位的对应关系的情况下,所述基于所述寄存单元字典为所述第二量子位分配寄存单元,包括如下至少一项:
在查询到所述寄存单元字典中包括第一寄存单元的标识的情况下,将所述第一寄存单元分配给所述第二量子位,所述第一寄存单元为未分配给节点的寄存单元;
在查询到所述寄存单元字典中不包括所述第一寄存单元的标识的情况下,获取所述寄存单元字典所表征的寄存单元的数量,基于所述数量确定所创建的第二寄存单元的标识,并将所述第二寄存单元分配给所述第二量子位。
如果存在多个空闲的寄存单元,在一实施方式中,所述第一寄存单元为未分配给节点的寄存单元中标识最小的寄存单元,即选取地址最小的进行分配,这样可以保证寄存单元分配准确且有秩序的进行。
如果当前所创建的寄存单元中所有的寄存单元均被占用,则创建一个新的寄存单元并分配给该第二量子位。
如此,寄存单元是按需动态增加的,如果有空闲单元(如1:None,指示寄存单元1为空闲寄存单元),则优先分配空闲单元,否则创建一个新的寄存单元,并基于寄存单元字典所表征的寄存单元的数量(如寄存单元字典{‘0’:0,‘1’:2},表征寄存单元数量为2),确定所创建的第二寄存单元的标识,并将第二寄存单元分配给当前等效编译的操作指令所作用的第二量子位。
同时基于第二量子位所分配的寄存单元的标识更新寄存单元字典,即添加第二量子位与第一目标标识的对应关系至寄存单元字典中。当整个指令列表遍历完成后,创建的寄存单元总数即为编译后的指令列表对应的动态量子电路所需的量子比特数,这样可以保证编译出的动态量子电路的宽度尽可能小,可以大大降低执行模型时所需的量子比特数。
为量子位进行寄存单元的动态分配的具体过程如下:
输入:寄存单元字典qreg,需要分配寄存单元的量子位which_qubit;
输出:更新后的寄存单元字典qreg;分配给量子位which_qubit的寄存单元地址address。
步骤1:遍历寄存单元字典qreg的所有值,并进行判断;
步骤2.1:如果其中包含which_qubit,表明该量子位已被分配寄存单元,则将which_qubit值对应的寄存单元地址记录为address,对qreg字典不进行操作;
步骤2.2:若which_qubit未被分配寄存单元,则搜索寄存单元字典qreg中所有值为None的寄存单元地址,并将其存入available_units列表中,随后基于available_units列表进行判断;如果available_units列表为空,则当前寄存单元中不存在空闲寄存单元,计算qreg中寄存单元的数量L,并将其记录为分配给which_qubit的寄存单元地址address,随后在qreg字典中创建一个新的寄存单元,其键为单元地址address,其值为对应的量子位which_qubit;如果available_units列表不为空,则当前寄存单元中存在空闲寄存单元,取available_units列表中最小的单元地址,并将其记录为分配给which_qubit的寄存单元地址address,随后将qreg中address地址对应的值修改为which_qubit;
步骤3:返回并输出单元状态更新后的寄存单元字典qreg以及分配给which_qubit的寄存单元地址address。
可选的,所述步骤S102具体包括:
获取所述第一指令列表中操作指令涉及的量子位,在所述操作指令为由经典信息控制的量子门操作的操作指令的情况下,操作指令涉及的量子位包括所述操作指令作用的受控条件所在的量子位;
基于操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,对所述操作指令进行编号,得到所述第一量子电路的操作指令的编号信息;
基于所述操作指令的编号信息,查找所述第一量子电路中与所述操作指令关联的其他操作指令,得到所述依赖关系,所述其他操作指令涉及的量子位包括所述操作指令涉及的量子位,所述其他操作指令的执行顺序在所述操作指令之前。
可以为输入量子电路中的各量子操作进行编号,并根据编号寻找各量子操作执行顺序之间的依赖关系。
本实施方式中,可以通过循环遍历输入量子电路的第一指令列表,获取操作指令涉及的量子位,并针对每个量子位为其中的每个操作指令进行编号,得到编号信息。
操作指令的编号信息可以通过编号参数(为cmd_index参数)表示,可以将cmd_index参数添加至操作指令中。该参数的具体格式可以为一个列表,存储的元素为二元数组,即cmd_index=[[which_qubit,gate_index],…]。其中,which_qubit表示该操作指令涉及的量子位,gate_index表示该操作指令在which_qubit量子位上作用的次序,添加完该参数后,量子电路的指令列表中每个操作指令变为一个包含五元素的列表,即operation=[name,which_qubit,parameters/basis/matrix,condition/mid/None,cmd_index]。
对于每一个单量子比特门,cmd_index列表中的元素包含一个二元数组。例如图3中量子位2上作用的第一个H门,添加cmd_index参数后其操作指令变为:[H,2,None,None,[2,1]]。对于每一个n量子比特门,cmd_index列表中的元素包含n个二元数组,分别标记该n量子比特门作用的量子位及其在所作用量子位上出现的次序。例如图3中量子位1,2,3上作用的Toffoli门,添加cmd_index参数后其操作指令变为:[Toffoli,[1,2,3],None,None,[[1,7],[2,3],[3,3]]]。对于每一个经典控制量子操作,cmd_index列表中的元素包含两个二元数组,分别对应其作用的量子位与条件量子位,以及该操作在这两个量子位上的次序。例如图3中量子位3上的经典控制Paili Z门,添加cmd_index参数后其操作指令变为:[Z,3,None,‘a’,[[1,4],[3,2]]]。相应的,图3所示的可编译电路中各量子操作编号后的结果如图10所示。
针对量子操作涉及的量子位的编号,在一可选实施方式中,可以通过倒序遍历的方式来对量子操作涉及的量子位进行编号。在另一可选实施方式中,也可以通过正序遍历的方式来对量子操作涉及的量子位进行编号,这里不进行具体限定。
之后,可以基于操作指令的编号信息,查找第一量子电路中与操作指令关联的其他操作指令,操作指令的依赖关系包括与该操作指令关联的其他操作指令。该操作指令的依赖关系可以包括排序在该操作指令之前,且与该操作指令涉及相同量子位的所有其他操作指令,也可以仅包括执行当前操作指令前必须执行完成的最近邻的操作指令,这里不进行具体限定。
本实施方式中,通过基于操作指令涉及的量子位为输入量子电路中的各量子操作进行编号,并根据编号寻找各量子操作执行顺序之间的依赖关系,从而可以简单地实现第一量子电路的操作指令执行顺序的依赖关系的确定。
可选的,所述基于操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,对所述操作指令进行编号,得到所述第一量子电路的操作指令的编号信息之前,还包括:
基于所述第一指令列表正序遍历过程中更新的第二目标列表,确定操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,所述第二目标列表用于记录所述第一量子电路中每个量子位在正序遍历过程中出现的次序;
其中,在正序遍历的操作指令涉及到第四量子位的情况下,所述第二目标列表中所述第四量子位在正序遍历过程中出现的次序加1,所述第四量子位为所述第一量子电路中任一量子位。
本实施方式中,可以通过正序遍历的方式来对量子操作涉及的量子位进行编号,其具体过程如下:
输入:量子电路列表circuit_list,量子电路宽度width;
输出:为每个操作指令添加cmd_index参数后的circuit_list列表。
步骤1:初始化一个长度为width的列表operation_counter(即第二目标列表),其中每个元素初始值均为0;
步骤2:通过循环遍历circuit_list列表,每遍历到一个元素,创建一个空列表qubits,用于记录当前遍历到的操作涉及的量子位;同时为当前元素添加cmd_index参数,初始值为一个空列表;随后根据当前遍历到的元素operation进行判断:
步骤2.1:如果当前元素operation为经典控制量子操作,即当前元素operation的condition参数不为None;将operation作用的量子位which_qubit记录到qubits列表中;随后通过循环遍历circuit_list列表,搜索当前操作operation的condition对应的测量操作,将该测量操作作用的量子位which_qubit记录到qubits列表中,随后跳出本层循环;
步骤2.2:如果当前元素operation为量子门操作(包括单、多量子比特门),测量操作或重置操作,即当前元素operation的condition参数为None;将operation作用的量子位which_qubit中的所有元素记录到qubits列表中;
步骤2.3:完成步骤2.1或步骤2.2后,将qubits列表添加为当前操作operation的qubits参数;随后通过循环遍历qubits列表,假设当前遍历到的元素为qubit;将operator_counter列表中索引为qubit的值加1;将[qubit,operator_counter[qubit]]添加到当前遍历的操作operation的cmd_index参数列表中;
步骤3:遍历完整个circuit_list列表后,返回为每个操作添加cmd_index参数后的circuit_list列表。
对于经典控制量子操作,其涉及的量子比特包括其作用的量子比特which_qubit以及其条件condition所在的量子比特,而condition值为某个测量的mid,因此如果通过condition寻找对应的量子比特,需要重新遍历circuit_list列表,找到mid等于condition的测量操作,再获取其量子位。方便起见,可以为每个操作指令添加qubits参数,用于表示该操作涉及的量子比特,因此输出的circuit_list列表中,每个操作指令实际上包含六个元素,即operation=[name,which_qubit,parameters/basis/matrix,condition/mid/None,cmd_index,qubits]。
例如图10中量子位3上的经典控制Pauli Z门,在输出的circuit_list列表中其操作指令为[Z,3,None,‘a’,cmd_index=[[1,4],[3,2]],qubits=[1,3]]。
若通过倒序遍历来进行量子操作涉及的量子位编号,针对每个操作指令operation后,记录其作用的量子位which_qubit,随后从该操作指令的前一个元素开始倒序遍历circuit_list列表,来搜索记录operation之前which_qubit上的操作个数,当倒序遍历完成后,再为operation添加cmd_index参数。假设circuit_list列表中包含N个操作指令,则遍历到第i个元素后,向前倒序遍历的元素个数为i-1个,则总的循环遍历次数为因此算法复杂度为O(N2)。而通过正序遍历的方式来对量子操作涉及的量子位进行编号,在正序遍历circuit_list列表中仅嵌套了一层对qubits列表的循环,假设电路中的操作指令涉及的量子比特最多的数量为n,则算法复杂度最高为O(N×n),一般来说,n的值要小于N,因此通过正序遍历的方式来对量子操作涉及的量子位进行编号在算法复杂度上有一定优势。
可选的,所述基于所述操作指令的编号信息,查找所述第一量子电路中与所述操作指令关联的其他操作指令,得到所述依赖关系,包括:
基于所述操作指令的编号信息,获取目标编号信息,所述目标编号信息中量子位标号与所述操作指令的编号信息中量子位标号相同,所述目标编号信息中量子位在所述第一量子电路的量子操作中出现的次序小于所述操作指令的编号信息中所述量子位在所述第一量子电路的量子操作中出现的次序;
获取所述目标编号信息对应的所述其他操作指令,得到所述依赖关系,所述其他操作指令为所述第一量子电路中执行顺序在所述操作指令之前,且与所述操作指令相邻的操作指令。
本实施方式中,量子电路中涉及的量子位有交集的量子操作之间作用顺序是不可交换的,即量子电路中的操作需要按照一定的顺序来执行,才能保证完成所需的计算任务。例如图10所示的量子电路中,量子比特0,1,2的Toffoli门必须在cmd_index分别为[0,1],[1,1],[2,1]三个H门执行后才能执行。
为了获取给定电路中各操作的执行依赖关系,可以通过循环遍历已经为各操作添加cmd_index参数的量子电路指令列表circuit_list,为列表中的每个操作指令添加domain参数,用来表示该操作执行的依赖关系。
具体来说,一个操作指令的domain参数为一个列表,其中存储的每一个元素均为执行当前操作前必须执行完成的操作的cmd_index值,即domain=[cmd_index_1,cmd_index_2,…,]。可以仅考虑执行当前操作前必须执行完成的最近邻的操作即可。
添加完该参数后,列表中每个操作指令变为一个包含七元素的列表,即operation=[name,which_qubit,parameters/basis/matrix,condition/mid/None,cmd_index,qubits,domain]。
对于一个n(n>=1)量子比特操作,其domain参数列表中包含n个元素,分别为其作用的n个量子位上的前一个操作的cmd_index值,该操作可能为单量子比特操作、多量子比特门或经典控制量子操作。例如图10中量子位0,1,2上的Toffoli门[[0,2],[1,2],[2,2]]执行前,需要分别执行量子位0,1,2上三个H门[0,1],[1,1],[2,1],因此该操作添加完domain参数后操作指令变为:[Toffoli,[0,2,1],None,None,[[0,2],[1,2],[2,2]],[0,1,2],domain=[[0,1],[1,1],[1,2]]]。又例如量子位1上的reset操作[1,5]执行前,需要执行量子位3上的经典控制Pauli Z门[[1,4],[3,2]],因此该操作添加完domain参数后操作指令变为:[reset,[1],None,None,[[1,5]],[1],domain=[[[1,4],[3,2]]]]。
而对于一个经典控制量子操作,其domain参数列表中包含2个元素,分别为其作用的量子位which_qubit上的前一个操作以及其条件condition对应的测量操作的cmd_index值。例如图10中量子位2上作用的经典控制Pauli X门[[2,4],[3,5]],执行该操作前需要执行量子比特3上的测量操作[3,4]以及量子比特1,2,3上的Toffoli门[[1,7],[2,3],[3,3]],因此该操作添加完domain参数后操作指令变为:[X,2,None,‘b’,[[2,4],[3,5]],[2,3]domain=[[3,4],[[1,7],[2,3],[3,3]]]]。
如果执行某个操作前无需执行其他操作,则该操作的domain参数为一个空列表。例如图10中量子位1上作用的H门[1,1],添加domain参数后其操作指令变为:[H,1,None,None,[1,1],[1],domain=[]]。
domain参数添加的具体过程如下:
输入:添加完cmd_index和qubits参数的量子电路指令列表circuit_list;
输出:为每个操作指令添加domain参数后的circuit_list列表。
步骤1:循环遍历circuit_list列表,设当前遍历到的操作指令为operation;为当前操作指令operation添加domain参数,初始值为一个空列表;获取当前操作指令operation的qubits参数列表的长度length,并初始化一个长度为length的列表qubits_done,每个元素初始值均为False;
从当前操作指令operation的前一个操作指令开始,倒序遍历circuit_list列表,假设当前遍历到的元素为pre_operation;通过循环遍历operation操作指令的qubits参数列表,假设当前遍历到的元素qubit为qubits列表的第i个元素;
如果qubit的值包含在pre_operation操作指令的qubit参数列表中,并且qubits_done中的第i个元素的值为False;将pre_operation的cmd_index参数添加到operation操作指令的domain参数列表中,并将qubits_done中的第i个元素的值修改为True;
如果qubit的值不包含在pre_operation操作指令的qubit参数列表中,或qubits_done中的第i个元素的值为True,则不进行操作,继续倒序遍历circuit_list列表;
如果qubits_done列表中的所有元素的值均为True,则跳出对circuit_list列表的倒序循环;
步骤2:循环遍历完circuit_list列表后,返回为每个操作指令添加domain参数后的circuit_list列表。
对于一个操作指令涉及的每一个量子比特,只需获得该量子比特上的前一个最近邻操作的cmd_index值即可。因此每遍历到一个操作指令,均初始化一个长度与其参数qubits列表相同的列表qubits_done,随后倒序循环circuit_list列表来搜索所有量子比特上的最近邻操作。qubits_done列表中的元素与qubits列表中的元素一一对应,用于记录qubits列表中的每个量子比特上的最近邻的操作指令的cmd_index是否已经已经添加到当前操作指令的domain参数中,False表示未添加,True表示已添加。而当qubits列表中的所有量子比特上的最近邻操作指令的cmd_index均添加到当前操作指令的domain参数后,则可跳出倒序循环,继续为下一个操作指令添加domain参数。
本实施方式中,通过查找执行当前操作指令前必须执行完成的最近邻的操作指令,从而可以简便地实现第一量子电路的操作指令执行顺序的依赖关系的确定。
可选的,所述步骤S103具体包括:
按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行第一重排序,得到所述第一量子电路的第四指令列表,所述第四指令列表中,排序在前的操作指令中目标量子位的标号小于排序在后的操作指令中目标量子位标号,且针对所作用的量子位标号相同的操作指令按照操作指令在所述第一量子电路中的相对顺序排列,所述目标量子位为操作指令涉及的量子位中标号小的量子位;
基于所述依赖关系,对所述第四指令列表进行第二重排序,得到所述第二指令列表。
本实施方式中,可以先对第一指令列表中的操作指令按照行序优先原则进行重排序,之后在重排序的基础上,再考虑操作指令之间的依赖关系,即基于操作指令之间的依赖关系,再对操作指令进行重排序,得到第二指令列表。也即可以通过两次重排序,来实现操作指令按照相应顺序进行排序。
第一重排序过程中,可以对量子电路的指令列表中各操作指令涉及的目标量子位进行比较,目标量子位序号小的操作指令排在前面;对于目标量子位序号相同的指令,则按照其在原量子电路的指令列表中的相对顺序进行排列,相应可以得到默认排序下的指令列表即第四指令列表。其中,对于单量子比特的量子操作,目标量子位取其所作用的量子位which_qubit的值;对于多量子比特门和经典控制量子操作,目标量子位序号则取其涉及的qubits列表中最小的一个量子位的值。
注意到默认排序并没有考虑到操作节点之间的依赖关系,只是一种理想的排序方式。可以在默认排序的基础上,按照操作指令之间的依赖关系进行第二重排序,得到第二指令列表。
在一可选实施方式中,可以通过不同操作指令之间的调换将第四指令列表中操作指令进行第二重排序,使得针对每个操作指令,其存在依赖关系的其他操作指令均排序在该操作指令之前,且第二重排序后的操作指令的排序为默认排序。
在另一可选实施方式中,可以针对操作指令,通过获取排序在该操作指令之后且与之存在依赖关系的操作指令的列表,并通过不同列表的排序方式,来实现第四指令列表中操作指令的第二重排序。
其中,不同列表可以包括排序在该操作指令之前的操作指令的列表、排序在该操作指令之后且与之存在依赖关系的操作指令的列表、该操作指令构成的列表、以及排序在该操作指令之后且与之不存在依赖关系的操作指令的列表。
本实施方式中,通过先对第一指令列表中的操作指令按照行序优先原则进行重排序,之后在重排序的基础上,再考虑操作指令之间的依赖关系,即基于操作指令之间的依赖关系,再对操作指令进行重排序,得到第二指令列表。也即可以通过两次重排序,来实现操作指令按照相应顺序进行排序。如此,可以简化对操作指令进行重排序的过程。
可选的,所述基于所述依赖关系,对所述第四指令列表进行第二重排序,得到所述第二指令列表,包括:
对所述第四指令列表进行针对操作指令的遍历,并针对当前遍历的操作指令将所述第四指令列表进行拆分,得到第一列表、第二列表和第三列表,所述第一列表为所述第四指令列表中排序在首位的操作指令到与所述当前遍历的操作指令相邻的前一个操作指令构成的列表,所述第二列表为所述当前遍历的操作指令构成的列表,所述第三列表为所述第四指令列表中排序在所述当前遍历的操作指令之后的操作指令构成的列表;
基于所述依赖关系中所述当前遍历的操作指令与所述第一量子电路的操作指令之间的目标依赖关系、所述第一列表、所述第二列表和所述第三列表,对所述第四指令列表进行操作指令的重排;
在所述第四指令列表遍历完成的情况下,基于重排后的所述第四指令列表确定所述第二指令列表。
本实施方式中,可以针对操作指令,通过获取排序在该操作指令之后且与之存在依赖关系的操作指令的列表,并通过不同列表的排序方式,来实现第四指令列表中操作指令的第二重排序。
具体的,可以对第四指令列表进行针对操作指令的遍历,针对当前遍历的操作指令将第四指令列表进行拆分,得到第一列表、第二列表和第三列表。比如,当前遍历的操作指令为第j个指令,则第一列表为第四指令列表中排序在第1到第j-1个操作指令构成的列表,第二列表为当前遍历的操作指令构成的列表,第三列表为第四指令列表中排序在第j+1到第m个操作指令构成的列表。其中,m为第四指令列表的长度,即操作指令的数量。
相应的,可以基于当前遍历的操作指令与所述第一量子电路的操作指令之间的目标依赖关系和第一列表,从第三列表中筛选出排序在该操作指令之后且与之存在目标依赖关系的操作指令的列表。
可以基于第一列表、该列表(即排序在当前遍历的操作指令之后且与之存在目标依赖关系的操作指令的列表)、第二列表、以及基于第三列表和该列表所确定的排序在该操作指令之后且与之不存在目标依赖关系的操作指令的列表的排列顺序进行列表拼接,从而可以实现第四指令列表中操作指令的第二重排序,得到第二指令列表。
如此,可以基于操作指令之间的依赖关系,实现对默认排序的操作指令的排序调整,并且,排序调整的过程比较简单。
可选的,所述基于所述依赖关系中所述当前遍历的操作指令与所述第一量子电路的操作指令之间的目标依赖关系、所述第一列表、所述第二列表和所述第三列表,对所述第四指令列表进行操作指令的重排,包括:
基于所述目标依赖关系和所述第一列表,获取第三目标列表,所述第三目标列表指示所述第一列表中与所述当前遍历的操作指令之间存在所述目标依赖关系的操作指令;
基于所述第三目标列表和第四目标列表,确定第五目标列表,第四目标列表指示所述第四指令列表中与所述当前遍历的操作指令之间存在所述目标依赖关系的操作指令,所述第五目标列表为从所述第四目标列表删除所述第三目标列表后得到的列表;
在所述第五目标列表不为空集的情况下,从所述第三列表中删除所述第五目标列表指示的操作指令,得到第四列表;
将所述第一列表、所述第五目标列表指示的操作指令、所述第二列表和所述第四列表按照从前至后的顺序进行列表拼接,得到重排后的所述第四指令列表。
本实施方式中,可以基于当前遍历的操作指令与第一量子电路的操作指令之间的目标依赖关系,从第一列表中获取与当前遍历的操作指令存在目标依赖关系的操作指令,这些操作指令可以构成第三目标列表。比如,可以从第一列表中获取包括当前遍历的操作指令中domain参数的操作指令,得到第三目标列表。
获取第四目标列表,第四目标列表可以包括第四指令列表中与当前遍历的操作指令之间存在目标依赖关系的操作指令,从第四目标列表删除第三目标列表后得到的列表即为第五目标列表,其为排序在当前遍历的操作指令之后且与之存在目标依赖关系的操作指令的列表。第五目标列表中的操作指令是按照行序优先原则即默认排序进行排序的。
若第五目标列表为空,则说明第三列表中,不存在与当前遍历的操作指令存在目标依赖关系的操作指令。
若第五目标列表不为空,则说明第三列表中,存在与当前遍历的操作指令存在目标依赖关系的操作指令。相应的,可以删除第三列表中第五目标列表中的操作指令,得到第四列表,第四列表为排序在当前遍历的测量指令之后且与之不存在目标依赖关系的操作指令的列表。
按照从前至后为第一列表、第五目标列表、第二列表和第四列表的排列顺序进行列表拼接,可以得到重排后的所述第四指令列表,之后可以基于重排后的第四指令列表确定第二指令列表。如此,可以实现第二指令列表的确定。
在默认排序(即行序优先原则指示的排序)的基础上,按照操作指令之间的依赖关系进行排序调整的过程如下:
输入:添加完cmd_index,qubits和domain参数的量子电路指令列表circuit_list;
输出:操作执行顺序优化后的量子电路指令列表circuit_list。
步骤1:对输入指令列表circuit_list进行默认排序,记录列表长度为c;通过循环遍历circuit_list列表;
步骤1.1:设当前遍历到的操作指令operation为列表中的第i个操作指令(其中i∈{1,2,…,c});设置参数optimal=False,当optimal=False时,进行以下操作:
将列表circuit_list中第1到第i-1个元素构成的列表记录为C1,将当前遍历到的操作指令operation存入C2列表中,并将列表circuit_list中第i+1到第c个元素构成的列表记录为C3;将C1列表中所有操作的cmd_index参数构成的集合记录在executed_indices列表中,同时将C2列表中的操作operation的domain参数构成的集合记录在domains列表中;
进行集合运算P_index=domains\executed_indices,即求出domains列表中不包含在executed_indices列表中的元素,并存入P_index列表中;
如果P_index列表不为空,则遍历C3列表,找到C3列表中P_index中所有元素对应的操作,将其存入P列表中,并对P列表中的所有操作指令进行默认排序,随后将P列表中的所有操作从C3列表中删除,将circuit_list列表的顺序更新为[C1,P,C2,C3];
如果P_index列表为空,则将optimal参数改写为True,返回执行步骤1.1,以继续循环遍历circuit_list列表中的第i+1个操作指令;
步骤2:循环遍历完circuit_list列表的所有元素后,更新的circuit_list列表即为执行顺序优化后的量子电路指令列表。
为了尽快对量子电路中的某个量子比特进行测量,以方便将其重置后用于后续计算,在完成第二重排序后,可以将重排后的第四指令列表中每一个量子测量操作的执行顺序尽可能向前移动。
可选的,所述基于所述依赖关系,对所述第四指令列表进行第二重排序之后,还包括:
将重排后的所述第四指令列表中量子测量操作的操作指令移动至目标位置,得到所述第二指令列表;
其中,所述目标位置为位于重排后的所述第四指令列表中目标操作指令之后,且与所述目标操作指令相邻的位置,所述目标操作指令所作用的量子位包括所述量子测量操作的操作指令所作用的量子位,所述第二指令列表中排序在所述目标位置之后的操作指令不包括所述量子测量操作的操作指令所作用的量子位。
其具体过程如下:
输入:完成各量子操作的执行顺序优化排序后的指令列表circuit_list即第四指令列表;
输出:将所有量子测量操作执行顺序优化后的指令列表。
步骤1:通过循环对指令列表circuit_list进行遍历;
步骤2.1:如果当前遍历的操作指令为测量操作的操作指令,measurement=[measure,which_qubit,None,None,cmd_index,domain],则将被测量的量子位记录为measured_qubit=which_qubit,并从该测量操作的前一个操作开始,倒序遍历circuit_list列表,设当前遍历的元素为gate=[name,which_qubit,parameters,condition,cmd_index,domain];如果measured_qubit包含在当前遍历到的元素gate作用的量子位which_qubit列表中,则将当前遍历到的测量操作measurement的操作指令插入到gate操作之后,随后跳出倒序遍历;
步骤2.2:如果measured_qubit不包含在当前遍历到的元素gate作用的量子位which_qubit列表中,则继续遍历下一个操作指令;
步骤3:完成对整个circuit_list的遍历后,返回测量操作执行顺序优化后的指令列表即第二指令列表。
如此,可以将某一量子比特上所有操作尽可能快地执行完,并对该量子比特进行测量。
为了展示本实施例量子电路优化编译的编译效果,给出一个包含多量子比特门、经典控制量子操作和重置操作的动态电路编译实例,其中输入量子电路图如图11,经过优化编译后,其输出的动态量子电路如图12所示。可以看出,优化编译后可以有效降低量子电路所需的量子比特数。
第二实施例
如图13所示,本公开提供一种量子电路处理装置1300,包括:
第一获取模块1301,用于获取第一指令列表,所述第一指令列表包括第一量子电路的操作指令,所述操作指令用于指示所述第一量子电路的量子操作,所述量子操作包括量子测量操作;
第二获取模块1302,用于基于所述第一指令列表,获取所述第一量子电路的操作指令执行顺序的依赖关系;
重排序模块1303,用于基于所述依赖关系,按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行重排序,得到所述第一量子电路的第二指令列表;
确定模块1304,用于基于所述第二指令列表,确定分类信息,所述分类信息包括:用于指示所述量子测量操作在所述第一量子电路位置的第一信息;
等效编译模块1305,用于在所述第一信息指示所述量子测量操作在所述第一量子电路末端位置的情况下,基于所述分类信息和所述第二指令列表,对所述第一量子电路进行等效编译,得到与所述第一量子电路等效的第二量子电路的第三指令列表,所述第三指令列表包括:重置操作的操作指令,所述重置操作的操作指令位于量子测量操作的操作指令之后,所述重置操作用于将量子比特的量子态重置至零态,所述第二量子电路的量子比特数量小于所述第一量子电路的量子比特数量,所述末端位置指示所述量子测量操作是沿着量子态时间演化方向上的量子测量操作中最后一个量子测量操作。
可选的,所述确定模块1304包括:
第一获取子模块,用于对所述第二指令列表进行倒序遍历,并在遍历到量子测量操作的情况下,获取所述量子测量操作所作用的第一量子位;
第一确定子模块,用于基于所述第一量子位和所述倒序遍历过程中更新的第一目标列表,确定所述量子测量操作在所述第一量子电路的位置,得到所述第一信息,所述第一目标列表用于记录是否遍历到所述第一量子电路中位于所述第一量子电路末端位置的每个量子位的量子测量操作;
其中,在倒序遍历到所述第一量子电路中位于所述第一量子电路末端位置的量子位的量子测量操作的情况下,更新所述第一目标列表。
可选的,其中,所述第一确定子模块,具体用于:
在所述第一目标列表指示已遍历到位于所述第一量子电路末端位置的所述第一量子位的量子测量操作的情况下,确定所述量子测量操作位于所述第一量子电路的中间位置,得到所述第一信息;
在所述第一目标列表指示未遍历到位于所述第一量子电路末端位置的所述第一量子位的量子测量操作的情况下,确定所述量子测量操作位于所述第一量子电路的末端位置,得到所述第一信息。
可选的,所述量子操作还包括目标操作,所述目标操作为由经典信息控制的量子门操作,所述分类信息还包括第二信息,所述第二信息包括:用于区分所述第二指令列表中所述目标操作的每个操作指令的属性值,所述确定模块包括:
第二确定子模块,用于在基于遍历控制索引对所述第二指令列表进行遍历的过程中,基于遍历到的所述目标操作的操作指令的遍历控制索引的索引值,确定所述目标操作的操作指令的属性值;且在所述第二指令列表遍历完成的情况下,得到所述第二信息。
可选的,在对所述第二指令列表进行倒序遍历的情况下,确定所述目标操作的操作指令的属性值为length-1-i,i为遍历到的所述目标操作的操作指令的遍历控制索引的索引值,length为所述第二指令列表的长度。
可选的,所述等效编译模块1305包括:
第二获取子模块,用于针对所述第二指令列表中每一操作指令,获取所述操作指令所作用的第二量子位;
第三确定子模块,用于基于所述第二量子位和寄存单元字典,确定为所述第二量子位分配的第二量子电路的寄存单元的第一目标标识,所述寄存单元字典包括寄存单元与量子位的对应关系;
等效编译子模块,用于基于所述第一目标标识和所述分类信息,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,所述第三指令列表包括等效编译得到的所述第二量子电路中操作指令。
可选的,所述等效编译子模块包括:
第一等效编译单元,用于在所述操作指令为量子测量操作的操作指令或目标操作的操作指令的情况下,基于所述分类信息确定所述操作指令对应量子操作的类型,所述目标操作为由经典信息控制的量子门操作;基于所述操作指令对应量子操作的类型和所述第一目标标识,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令;
第二等效编译单元,用于在所述操作指令为重置操作的操作指令的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中重置操作的操作指令;
第三等效编译单元,用于在所述操作指令为单量子比特门的操作指令的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中所述单量子比特门的操作指令;
第四等效编译单元,用于在所述第二量子位的数量大于1的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中所述操作指令对应的量子门操作的操作指令。
可选的,在所述操作指令为量子测量操作的操作指令的情况下,所述第一等效编译单元,具体用于:
在所述分类信息指示所述量子测量操作在所述第一量子电路末端位置,且所述第二指令列表中所述量子测量操作之后的操作指令中包括第一操作指令的情况下,确定所述量子测量操作的类型为第一类型,所述第一操作指令为由运行所述操作指令得到的经典信息控制的量子门操作的操作指令;
在所述分类信息指示所述量子测量操作在所述第一量子电路末端位置,且所述第二指令列表中所述量子测量操作之后的操作指令中不包括第一操作指令的情况下,确定所述量子测量操作的类型为第二类型;
在所述分类信息指示所述量子测量操作在所述第一量子电路中间位置的情况下,确定所述量子测量操作的类型为第三类型。
可选的,所述第一等效编译单元,还用于:
基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中量子测量操作的操作指令;
在所述量子测量操作的类型为所述第二类型的情况下,基于所述第一目标标识,生成所述第二量子电路中重置操作的操作指令;
更新所述寄存单元字典,更新后的所述寄存单元字典指示所述第一目标标识对应的寄存单元为未分配给量子位的寄存单元。
可选的,在所述操作指令为目标操作的操作指令的情况下,所述第一等效编译单元,具体用于:
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后包括第二操作指令,确定所述目标操作的类型为第四类型,所述分类信息还包括所述第二信息,所述第二信息包括:用于区分所述第一量子电路的操作指令中所述目标操作的每个操作指令的属性值,所述第二操作指令为所述第二指令列表中与所述操作指令受控条件相同,且位于所述操作指令之后的操作指令;
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后不包括所述第二操作指令,且基于所述第一信息确定与所述操作指令的受控条件匹配的第三操作指令位于所述第一量子电路中间位置的情况下,确定所述目标操作的类型为第五类型;
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后不包括所述第二操作指令,且基于所述第一信息确定与所述操作指令的受控条件匹配的第三操作指令位于所述第一量子电路末端位置的情况下,确定所述目标操作的类型为第六类型,所述第三操作指令为量子测量操作的操作指令。
可选的,所述第一等效编译单元,还用于:
基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中与所述目标操作等效的量子控制操作的操作指令;
在所述目标操作的类型为所述第六类型的情况下,基于所述第三操作指令作用的第三量子位和所述寄存单元字典,确定为所述第三量子位分配的第二量子电路的寄存单元的第二目标标识;
基于所述第二目标标识,生成所述第二量子电路中重置操作的操作指令;
更新所述寄存单元字典,更新后的所述寄存单元字典指示所述第二目标标识对应的寄存单元为未分配给量子位的寄存单元。
可选的,所述第三确定子模块包括:
第一确定单元,用于在查询到所述寄存单元字典中包括所述第二量子位的对应关系的情况下,将所述第二量子位对应的寄存单元的标识确定为所述第一目标标识;
第二确定单元,用于在查询到所述寄存单元字典中未包括所述第二量子位的对应关系的情况下,基于所述寄存单元字典为所述第二量子位分配寄存单元,将所述第二量子位分配的寄存单元的标识确定为所述第一目标标识,并基于所述第二量子位分配的寄存单元的标识更新所述寄存单元字典。
可选的,所述第二确定单元,具体用于:
在查询到所述寄存单元字典中包括第一寄存单元的标识的情况下,将所述第一寄存单元分配给所述第二量子位,所述第一寄存单元为未分配给节点的寄存单元;
在查询到所述寄存单元字典中不包括所述第一寄存单元的标识的情况下,获取所述寄存单元字典所表征的寄存单元的数量,基于所述数量确定所创建的第二寄存单元的标识,并将所述第二寄存单元分配给所述第二量子位。
可选的,所述第二获取模块1302包括:
第三获取子模块,用于获取所述第一指令列表中操作指令涉及的量子位,在所述操作指令为由经典信息控制的量子门操作的操作指令的情况下,操作指令涉及的量子位包括所述操作指令作用的受控条件所在的量子位;
编号子模块,用于基于操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,对所述操作指令进行编号,得到所述第一量子电路的操作指令的编号信息;
查找子模块,用于基于所述操作指令的编号信息,查找所述第一量子电路中与所述操作指令关联的其他操作指令,得到所述依赖关系,所述其他操作指令涉及的量子位包括所述操作指令涉及的量子位,所述其他操作指令的执行顺序在所述操作指令之前。
可选的,所述第二获取模块1302还包括:
第四确定子模块,用于基于所述第一指令列表正序遍历过程中更新的第二目标列表,确定操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,所述第二目标列表用于记录所述第一量子电路中每个量子位在正序遍历过程中出现的次序;
其中,在正序遍历的操作指令涉及到第四量子位的情况下,所述第二目标列表中所述第四量子位在正序遍历过程中出现的次序加1,所述第四量子位为所述第一量子电路中任一量子位。
可选的,所述查找子模块,具体用于:
基于所述操作指令的编号信息,获取目标编号信息,所述目标编号信息中量子位标号与所述操作指令的编号信息中量子位标号相同,所述目标编号信息中量子位在所述第一量子电路的量子操作中出现的次序小于所述操作指令的编号信息中所述量子位在所述第一量子电路的量子操作中出现的次序;
获取所述目标编号信息对应的所述其他操作指令,得到所述依赖关系,所述其他操作指令为所述第一量子电路中执行顺序在所述操作指令之前,且与所述操作指令相邻的操作指令。
可选的,所述重排序模块1303包括:
第一重排序子模块,用于按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行第一重排序,得到所述第一量子电路的第四指令列表,所述第四指令列表中,排序在前的操作指令中目标量子位的标号小于排序在后的操作指令中目标量子位标号,且针对所作用的量子位标号相同的操作指令按照操作指令在所述第一量子电路中的相对顺序排列,所述目标量子位为操作指令涉及的量子位中标号小的量子位;
第二重排序子模块,用于基于所述依赖关系,对所述第四指令列表进行第二重排序,得到所述第二指令列表。
可选的,所述第二重排序子模块包括:
拆分单元,用于对所述第四指令列表进行针对操作指令的遍历,并针对当前遍历的操作指令将所述第四指令列表进行拆分,得到第一列表、第二列表和第三列表,所述第一列表为所述第四指令列表中排序在首位的操作指令到与所述当前遍历的操作指令相邻的前一个操作指令构成的列表,所述第二列表为所述当前遍历的操作指令构成的列表,所述第三列表为所述第四指令列表中排序在所述当前遍历的操作指令之后的操作指令构成的列表;
重排单元,用于基于所述依赖关系中所述当前遍历的操作指令与所述第一量子电路的操作指令之间的目标依赖关系、所述第一列表、所述第二列表和所述第三列表,对所述第四指令列表进行操作指令的重排;
第三确定单元,用于在所述第四指令列表遍历完成的情况下,基于重排后的所述第四指令列表确定所述第二指令列表。
可选的,所述重排单元,具体用于:
基于所述目标依赖关系和所述第一列表,获取第三目标列表,所述第三目标列表指示所述第一列表中与所述当前遍历的操作指令之间存在所述目标依赖关系的操作指令;
基于所述第三目标列表和第四目标列表,确定第五目标列表,第四目标列表指示所述第四指令列表中与所述当前遍历的操作指令之间存在所述目标依赖关系的操作指令,所述第五目标列表为从所述第四目标列表删除所述第三目标列表后得到的列表;
在所述第五目标列表不为空集的情况下,从所述第三列表中删除所述第五目标列表指示的操作指令,得到第四列表;
将所述第一列表、所述第五目标列表指示的操作指令、所述第二列表和所述第四列表按照从前至后的顺序进行列表拼接,得到重排后的所述第四指令列表。
可选的,所述第二重排序子模块还包括:
移动单元,用于将重排后的所述第四指令列表中量子测量操作的操作指令移动至目标位置,得到所述第二指令列表;
其中,所述目标位置为位于重排后的所述第四指令列表中目标操作指令之后,且与所述目标操作指令相邻的位置,所述目标操作指令所作用的量子位包括所述量子测量操作的操作指令所作用的量子位,所述第二指令列表中排序在所述目标位置之后的操作指令不包括所述量子测量操作的操作指令所作用的量子位。
本公开提供的量子电路处理装置1300能够实现量子电路处理方法实施例实现的各个过程,且能够达到相同的有益效果,为避免重复,这里不再赘述。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图14示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图14所示,设备1400包括计算单元1401,其可以根据存储在只读存储器(ROM)1402中的计算机程序或者从存储单元1408加载到随机访问存储器(RAM)1403中的计算机程序,来执行各种适当的动作和处理。在RAM 1403中,还可存储设备1400操作所需的各种程序和数据。计算单元1401、ROM 1402以及RAM 1403通过总线1404彼此相连。输入/输出(I/O)接口1405也连接至总线1404。
设备1400中的多个部件连接至I/O接口1405,包括:输入单元1406,例如键盘、鼠标等;输出单元1407,例如各种类型的显示器、扬声器等;存储单元1408,例如磁盘、光盘等;以及通信单元1409,例如网卡、调制解调器、无线通信收发机等。通信单元1409允许设备1400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1401的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1401执行上文所描述的各个方法和处理,例如量子电路处理方法。例如,在一些实施例中,量子电路处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1408。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1402和/或通信单元1409而被载入和/或安装到设备1400上。当计算机程序加载到RAM 1403并由计算单元1401执行时,可以执行上文描述的量子电路处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元1401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行量子电路处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (43)

1.一种量子电路处理方法,包括:
获取第一指令列表,所述第一指令列表包括第一量子电路的操作指令,所述操作指令用于指示所述第一量子电路的量子操作,所述量子操作包括量子测量操作;
基于所述第一指令列表,获取所述第一量子电路的操作指令执行顺序的依赖关系;
基于所述依赖关系,按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行重排序,得到所述第一量子电路的第二指令列表;
基于所述第二指令列表,确定分类信息,所述分类信息包括:用于指示所述量子测量操作在所述第一量子电路位置的第一信息;
在所述第一信息指示所述量子测量操作在所述第一量子电路末端位置的情况下,基于所述分类信息和所述第二指令列表,对所述第一量子电路进行等效编译,得到与所述第一量子电路等效的第二量子电路的第三指令列表,所述第三指令列表包括:重置操作的操作指令,所述重置操作的操作指令位于量子测量操作的操作指令之后,所述重置操作用于将量子比特的量子态重置至零态,所述第二量子电路的量子比特数量小于所述第一量子电路的量子比特数量,所述末端位置指示所述量子测量操作是沿着量子态时间演化方向上的量子测量操作中最后一个量子测量操作;所述第三指令列表中,所述第一信息指示的位于中间位置的量子测量操作之后不添加重置操作的操作指令;
在进行等效编译时,获取所述第二指令列表中操作指令所作用的量子位,为该量子位分配寄存单元,该寄存单元对应第二量子电路中的量子比特,并通过重置操作的操作指令,将分配给该量子位的寄存单元回收。
2.根据权利要求1所述的方法,其中,所述基于所述第二指令列表,确定分类信息,包括:
对所述第二指令列表进行倒序遍历,并在遍历到量子测量操作的情况下,获取所述量子测量操作所作用的第一量子位;
基于所述第一量子位和所述倒序遍历过程中更新的第一目标列表,确定所述量子测量操作在所述第一量子电路的位置,得到所述第一信息,所述第一目标列表用于记录是否遍历到所述第一量子电路中位于所述第一量子电路末端位置的每个量子位的量子测量操作;
其中,在倒序遍历到所述第一量子电路中位于所述第一量子电路末端位置的量子位的量子测量操作的情况下,更新所述第一目标列表。
3.根据权利要求2所述的方法,其中,所述基于所述第一量子位和所述倒序遍历过程中更新的第一目标列表,确定所述量子测量操作在所述第一量子电路的位置,得到所述第一信息,包括:
在所述第一目标列表指示已遍历到位于所述第一量子电路末端位置的所述第一量子位的量子测量操作的情况下,确定所述量子测量操作位于所述第一量子电路的中间位置,得到所述第一信息;
在所述第一目标列表指示未遍历到位于所述第一量子电路末端位置的所述第一量子位的量子测量操作的情况下,确定所述量子测量操作位于所述第一量子电路的末端位置,得到所述第一信息。
4.根据权利要求1所述的方法,其中,所述量子操作还包括目标操作,所述目标操作为由经典信息控制的量子门操作,所述分类信息还包括第二信息,所述第二信息包括:用于区分所述第二指令列表中所述目标操作的每个操作指令的属性值,所述基于所述第二指令列表,确定分类信息,包括:
在基于遍历控制索引对所述第二指令列表进行遍历的过程中,基于遍历到的所述目标操作的操作指令的遍历控制索引的索引值,确定所述目标操作的操作指令的属性值;且在所述第二指令列表遍历完成的情况下,得到所述第二信息。
5.根据权利要求4所述的方法,其中,在对所述第二指令列表进行倒序遍历的情况下,确定所述目标操作的操作指令的属性值为length-1-i,i为遍历到的所述目标操作的操作指令的遍历控制索引的索引值,length为所述第二指令列表的长度。
6.根据权利要求1所述的方法,其中,所述基于所述分类信息和所述第二指令列表,对所述第一量子电路进行等效编译,得到与所述第一量子电路等效的第二量子电路的第三指令列表,包括:
针对所述第二指令列表中每一操作指令,执行如下操作:
获取所述操作指令所作用的第二量子位;
基于所述第二量子位和寄存单元字典,确定为所述第二量子位分配的第二量子电路的寄存单元的第一目标标识,所述寄存单元字典包括寄存单元与量子位的对应关系;
基于所述第一目标标识和所述分类信息,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,所述第三指令列表包括等效编译得到的所述第二量子电路中操作指令。
7.根据权利要求6所述的方法,其中,所述基于所述第一目标标识和所述分类信息,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,包括:
在所述操作指令为量子测量操作的操作指令或目标操作的操作指令的情况下,基于所述分类信息确定所述操作指令对应量子操作的类型,所述目标操作为由经典信息控制的量子门操作;基于所述操作指令对应量子操作的类型和所述第一目标标识,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令;
在所述操作指令为重置操作的操作指令的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中重置操作的操作指令;
在所述操作指令为单量子比特门的操作指令的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中所述单量子比特门的操作指令;
在所述第二量子位的数量大于1的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中所述操作指令对应的量子门操作的操作指令。
8.根据权利要求7所述的方法,其中,在所述操作指令为量子测量操作的操作指令的情况下,所述基于所述分类信息确定所述操作指令对应量子操作的类型,包括:
在所述分类信息指示所述量子测量操作在所述第一量子电路末端位置,且所述第二指令列表中所述量子测量操作之后的操作指令中包括第一操作指令的情况下,确定所述量子测量操作的类型为第一类型,所述第一操作指令为由运行所述操作指令得到的经典信息控制的量子门操作的操作指令;
在所述分类信息指示所述量子测量操作在所述第一量子电路末端位置,且所述第二指令列表中所述量子测量操作之后的操作指令中不包括第一操作指令的情况下,确定所述量子测量操作的类型为第二类型;
在所述分类信息指示所述量子测量操作在所述第一量子电路中间位置的情况下,确定所述量子测量操作的类型为第三类型。
9.根据权利要求8所述的方法,其中,所述基于所述操作指令对应量子操作的类型和所述第一目标标识,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,包括:
基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中量子测量操作的操作指令;
在所述量子测量操作的类型为所述第二类型的情况下,基于所述第一目标标识,生成所述第二量子电路中重置操作的操作指令;
更新所述寄存单元字典,更新后的所述寄存单元字典指示所述第一目标标识对应的寄存单元为未分配给量子位的寄存单元。
10.根据权利要求7所述的方法,其中,在所述操作指令为目标操作的操作指令的情况下,所述基于所述分类信息确定所述操作指令对应量子操作的类型,包括:
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后包括第二操作指令,确定所述目标操作的类型为第四类型,所述分类信息还包括所述第二信息,所述第二信息包括:用于区分所述第一量子电路的操作指令中所述目标操作的每个操作指令的属性值,所述第二操作指令为所述第二指令列表中与所述操作指令受控条件相同,且位于所述操作指令之后的操作指令;
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后不包括所述第二操作指令,且基于所述第一信息确定与所述操作指令的受控条件匹配的第三操作指令位于所述第一量子电路中间位置的情况下,确定所述目标操作的类型为第五类型;
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后不包括所述第二操作指令,且基于所述第一信息确定与所述操作指令的受控条件匹配的第三操作指令位于所述第一量子电路末端位置的情况下,确定所述目标操作的类型为第六类型,所述第三操作指令为量子测量操作的操作指令。
11.根据权利要求10所述的方法,其中,所述基于所述操作指令对应量子操作的类型和所述第一目标标识,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,包括:
基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中与所述目标操作等效的量子控制操作的操作指令;
在所述目标操作的类型为所述第六类型的情况下,基于所述第三操作指令作用的第三量子位和所述寄存单元字典,确定为所述第三量子位分配的第二量子电路的寄存单元的第二目标标识;
基于所述第二目标标识,生成所述第二量子电路中重置操作的操作指令;
更新所述寄存单元字典,更新后的所述寄存单元字典指示所述第二目标标识对应的寄存单元为未分配给量子位的寄存单元。
12.根据权利要求6所述的方法,其中,所述基于所述第二量子位和寄存单元字典,确定为所述第二量子位分配的第二量子电路的寄存单元的第一目标标识,包括:
在查询到所述寄存单元字典中包括所述第二量子位的对应关系的情况下,将所述第二量子位对应的寄存单元的标识确定为所述第一目标标识;
在查询到所述寄存单元字典中未包括所述第二量子位的对应关系的情况下,基于所述寄存单元字典为所述第二量子位分配寄存单元,将所述第二量子位分配的寄存单元的标识确定为所述第一目标标识,并基于所述第二量子位分配的寄存单元的标识更新所述寄存单元字典。
13.根据权利要求12所述的方法,其中,在查询到所述寄存单元字典中未包括所述第二量子位的对应关系的情况下,所述基于所述寄存单元字典为所述第二量子位分配寄存单元,包括如下至少一项:
在查询到所述寄存单元字典中包括第一寄存单元的标识的情况下,将所述第一寄存单元分配给所述第二量子位,所述第一寄存单元为未分配给量子位的寄存单元;
在查询到所述寄存单元字典中不包括所述第一寄存单元的标识的情况下,获取所述寄存单元字典所表征的寄存单元的数量,基于所述数量确定所创建的第二寄存单元的标识,并将所述第二寄存单元分配给所述第二量子位。
14.根据权利要求1所述的方法,其中,所述基于所述第一指令列表,获取所述第一量子电路的操作指令执行顺序的依赖关系,包括:
获取所述第一指令列表中操作指令涉及的量子位,在所述操作指令为由经典信息控制的量子门操作的操作指令的情况下,操作指令涉及的量子位包括所述操作指令作用的受控条件所在的量子位;
基于操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,对所述操作指令进行编号,得到所述第一量子电路的操作指令的编号信息;
基于所述操作指令的编号信息,查找所述第一量子电路中与所述操作指令关联的其他操作指令,得到所述依赖关系,所述其他操作指令涉及的量子位包括所述操作指令涉及的量子位,所述其他操作指令的执行顺序在所述操作指令之前。
15.根据权利要求14所述的方法,所述基于操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,对所述操作指令进行编号,得到所述第一量子电路的操作指令的编号信息之前,还包括:
基于所述第一指令列表正序遍历过程中更新的第二目标列表,确定操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,所述第二目标列表用于记录所述第一量子电路中每个量子位在正序遍历过程中出现的次序;
其中,在正序遍历的操作指令涉及到第四量子位的情况下,所述第二目标列表中所述第四量子位在正序遍历过程中出现的次序加1,所述第四量子位为所述第一量子电路中任一量子位。
16.根据权利要求14所述的方法,其中,所述基于所述操作指令的编号信息,查找所述第一量子电路中与所述操作指令关联的其他操作指令,得到所述依赖关系,包括:
基于所述操作指令的编号信息,获取目标编号信息,所述目标编号信息中量子位标号与所述操作指令的编号信息中量子位标号相同,所述目标编号信息中量子位在所述第一量子电路的量子操作中出现的次序小于所述操作指令的编号信息中所述量子位在所述第一量子电路的量子操作中出现的次序;
获取所述目标编号信息对应的所述其他操作指令,得到所述依赖关系,所述其他操作指令为所述第一量子电路中执行顺序在所述操作指令之前,且与所述操作指令相邻的操作指令。
17.根据权利要求1所述的方法,其中,所述基于所述依赖关系,按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行重排序,得到所述第一量子电路的第二指令列表,包括:
按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行第一重排序,得到所述第一量子电路的第四指令列表,所述第四指令列表中,排序在前的操作指令中目标量子位的标号小于排序在后的操作指令中目标量子位标号,且针对所作用的量子位标号相同的操作指令按照操作指令在所述第一量子电路中的相对顺序排列,所述目标量子位为操作指令涉及的量子位中标号小的量子位;
基于所述依赖关系,对所述第四指令列表进行第二重排序,得到所述第二指令列表。
18.根据权利要求17所述的方法,其中,所述基于所述依赖关系,对所述第四指令列表进行第二重排序,得到所述第二指令列表,包括:
对所述第四指令列表进行针对操作指令的遍历,并针对当前遍历的操作指令将所述第四指令列表进行拆分,得到第一列表、第二列表和第三列表,所述第一列表为所述第四指令列表中排序在首位的操作指令到与所述当前遍历的操作指令相邻的前一个操作指令构成的列表,所述第二列表为所述当前遍历的操作指令构成的列表,所述第三列表为所述第四指令列表中排序在所述当前遍历的操作指令之后的操作指令构成的列表;
基于所述依赖关系中所述当前遍历的操作指令与所述第一量子电路的操作指令之间的目标依赖关系、所述第一列表、所述第二列表和所述第三列表,对所述第四指令列表进行操作指令的重排;
在所述第四指令列表遍历完成的情况下,基于重排后的所述第四指令列表确定所述第二指令列表。
19.根据权利要求18所述的方法,其中,所述基于所述依赖关系中所述当前遍历的操作指令与所述第一量子电路的操作指令之间的目标依赖关系、所述第一列表、所述第二列表和所述第三列表,对所述第四指令列表进行操作指令的重排,包括:
基于所述目标依赖关系和所述第一列表,获取第三目标列表,所述第三目标列表指示所述第一列表中与所述当前遍历的操作指令之间存在所述目标依赖关系的操作指令;
基于所述第三目标列表和第四目标列表,确定第五目标列表,第四目标列表指示所述第四指令列表中与所述当前遍历的操作指令之间存在所述目标依赖关系的操作指令,所述第五目标列表为从所述第四目标列表删除所述第三目标列表后得到的列表;
在所述第五目标列表不为空集的情况下,从所述第三列表中删除所述第五目标列表指示的操作指令,得到第四列表;
将所述第一列表、所述第五目标列表指示的操作指令、所述第二列表和所述第四列表按照从前至后的顺序进行列表拼接,得到重排后的所述第四指令列表。
20.根据权利要求17所述的方法,其中,所述基于所述依赖关系,对所述第四指令列表进行第二重排序之后,还包括:
将重排后的所述第四指令列表中量子测量操作的操作指令移动至目标位置,得到所述第二指令列表;
其中,所述目标位置为位于重排后的所述第四指令列表中目标操作指令之后,且与所述目标操作指令相邻的位置,所述目标操作指令所作用的量子位包括所述量子测量操作的操作指令所作用的量子位,所述第二指令列表中排序在所述目标位置之后的操作指令不包括所述量子测量操作的操作指令所作用的量子位。
21.一种量子电路处理装置,包括:
第一获取模块,用于获取第一指令列表,所述第一指令列表包括第一量子电路的操作指令,所述操作指令用于指示所述第一量子电路的量子操作,所述量子操作包括量子测量操作;
第二获取模块,用于基于所述第一指令列表,获取所述第一量子电路的操作指令执行顺序的依赖关系;
重排序模块,用于基于所述依赖关系,按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行重排序,得到所述第一量子电路的第二指令列表;
确定模块,用于基于所述第二指令列表,确定分类信息,所述分类信息包括:用于指示所述量子测量操作在所述第一量子电路位置的第一信息;
等效编译模块,用于在所述第一信息指示所述量子测量操作在所述第一量子电路末端位置的情况下,基于所述分类信息和所述第二指令列表,对所述第一量子电路进行等效编译,得到与所述第一量子电路等效的第二量子电路的第三指令列表,所述第三指令列表包括:重置操作的操作指令,所述重置操作的操作指令位于量子测量操作的操作指令之后,所述重置操作用于将量子比特的量子态重置至零态,所述第二量子电路的量子比特数量小于所述第一量子电路的量子比特数量,所述末端位置指示所述量子测量操作是沿着量子态时间演化方向上的量子测量操作中最后一个量子测量操作;所述第三指令列表中,所述第一信息指示的位于中间位置的量子测量操作之后不添加重置操作的操作指令;在进行等效编译时,获取所述第二指令列表中操作指令所作用的量子位,为该量子位分配寄存单元,该寄存单元对应第二量子电路中的量子比特,并通过重置操作的操作指令,将分配给该量子位的寄存单元回收。
22.根据权利要求21所述的装置,其中,所述确定模块包括:
第一获取子模块,用于对所述第二指令列表进行倒序遍历,并在遍历到量子测量操作的情况下,获取所述量子测量操作所作用的第一量子位;
第一确定子模块,用于基于所述第一量子位和所述倒序遍历过程中更新的第一目标列表,确定所述量子测量操作在所述第一量子电路的位置,得到所述第一信息,所述第一目标列表用于记录是否遍历到所述第一量子电路中位于所述第一量子电路末端位置的每个量子位的量子测量操作;
其中,在倒序遍历到所述第一量子电路中位于所述第一量子电路末端位置的量子位的量子测量操作的情况下,更新所述第一目标列表。
23.根据权利要求22所述的装置,其中,所述第一确定子模块,具体用于:
在所述第一目标列表指示已遍历到位于所述第一量子电路末端位置的所述第一量子位的量子测量操作的情况下,确定所述量子测量操作位于所述第一量子电路的中间位置,得到所述第一信息;
在所述第一目标列表指示未遍历到位于所述第一量子电路末端位置的所述第一量子位的量子测量操作的情况下,确定所述量子测量操作位于所述第一量子电路的末端位置,得到所述第一信息。
24.根据权利要求21所述的装置,其中,所述量子操作还包括目标操作,所述目标操作为由经典信息控制的量子门操作,所述分类信息还包括第二信息,所述第二信息包括:用于区分所述第二指令列表中所述目标操作的每个操作指令的属性值,所述确定模块包括:
第二确定子模块,用于在基于遍历控制索引对所述第二指令列表进行遍历的过程中,基于遍历到的所述目标操作的操作指令的遍历控制索引的索引值,确定所述目标操作的操作指令的属性值;且在所述第二指令列表遍历完成的情况下,得到所述第二信息。
25.根据权利要求24所述的装置,其中,在对所述第二指令列表进行倒序遍历的情况下,确定所述目标操作的操作指令的属性值为length-1-i,i为遍历到的所述目标操作的操作指令的遍历控制索引的索引值,length为所述第二指令列表的长度。
26.根据权利要求21所述的装置,其中,所述等效编译模块包括:
第二获取子模块,用于针对所述第二指令列表中每一操作指令,获取所述操作指令所作用的第二量子位;
第三确定子模块,用于基于所述第二量子位和寄存单元字典,确定为所述第二量子位分配的第二量子电路的寄存单元的第一目标标识,所述寄存单元字典包括寄存单元与量子位的对应关系;
等效编译子模块,用于基于所述第一目标标识和所述分类信息,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令,所述第三指令列表包括等效编译得到的所述第二量子电路中操作指令。
27.根据权利要求26所述的装置,其中,所述等效编译子模块包括:
第一等效编译单元,用于在所述操作指令为量子测量操作的操作指令或目标操作的操作指令的情况下,基于所述分类信息确定所述操作指令对应量子操作的类型,所述目标操作为由经典信息控制的量子门操作;基于所述操作指令对应量子操作的类型和所述第一目标标识,对所述操作指令进行等效编译,得到与所述操作指令等效的第二量子电路中操作指令;
第二等效编译单元,用于在所述操作指令为重置操作的操作指令的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中重置操作的操作指令;
第三等效编译单元,用于在所述操作指令为单量子比特门的操作指令的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中所述单量子比特门的操作指令;
第四等效编译单元,用于在所述第二量子位的数量大于1的情况下,基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中所述操作指令对应的量子门操作的操作指令。
28.根据权利要求27所述的装置,其中,在所述操作指令为量子测量操作的操作指令的情况下,所述第一等效编译单元,具体用于:
在所述分类信息指示所述量子测量操作在所述第一量子电路末端位置,且所述第二指令列表中所述量子测量操作之后的操作指令中包括第一操作指令的情况下,确定所述量子测量操作的类型为第一类型,所述第一操作指令为由运行所述操作指令得到的经典信息控制的量子门操作的操作指令;
在所述分类信息指示所述量子测量操作在所述第一量子电路末端位置,且所述第二指令列表中所述量子测量操作之后的操作指令中不包括第一操作指令的情况下,确定所述量子测量操作的类型为第二类型;
在所述分类信息指示所述量子测量操作在所述第一量子电路中间位置的情况下,确定所述量子测量操作的类型为第三类型。
29.根据权利要求28所述的装置,其中,所述第一等效编译单元,还用于:
基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中量子测量操作的操作指令;
在所述量子测量操作的类型为所述第二类型的情况下,基于所述第一目标标识,生成所述第二量子电路中重置操作的操作指令;
更新所述寄存单元字典,更新后的所述寄存单元字典指示所述第一目标标识对应的寄存单元为未分配给量子位的寄存单元。
30.根据权利要求27所述的装置,其中,在所述操作指令为目标操作的操作指令的情况下,所述第一等效编译单元,具体用于:
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后包括第二操作指令,确定所述目标操作的类型为第四类型,所述分类信息还包括所述第二信息,所述第二信息包括:用于区分所述第一量子电路的操作指令中所述目标操作的每个操作指令的属性值,所述第二操作指令为所述第二指令列表中与所述操作指令受控条件相同,且位于所述操作指令之后的操作指令;
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后不包括所述第二操作指令,且基于所述第一信息确定与所述操作指令的受控条件匹配的第三操作指令位于所述第一量子电路中间位置的情况下,确定所述目标操作的类型为第五类型;
在基于第二信息中所述操作指令的属性值确定所述第二指令列表中位于所述操作指令之后不包括所述第二操作指令,且基于所述第一信息确定与所述操作指令的受控条件匹配的第三操作指令位于所述第一量子电路末端位置的情况下,确定所述目标操作的类型为第六类型,所述第三操作指令为量子测量操作的操作指令。
31.根据权利要求30所述的装置,其中,所述第一等效编译单元,还用于:
基于所述第一目标标识,将所述操作指令等效编译为所述第二量子电路中与所述目标操作等效的量子控制操作的操作指令;
在所述目标操作的类型为所述第六类型的情况下,基于所述第三操作指令作用的第三量子位和所述寄存单元字典,确定为所述第三量子位分配的第二量子电路的寄存单元的第二目标标识;
基于所述第二目标标识,生成所述第二量子电路中重置操作的操作指令;
更新所述寄存单元字典,更新后的所述寄存单元字典指示所述第二目标标识对应的寄存单元为未分配给量子位的寄存单元。
32.根据权利要求26所述的装置,其中,所述第三确定子模块包括:
第一确定单元,用于在查询到所述寄存单元字典中包括所述第二量子位的对应关系的情况下,将所述第二量子位对应的寄存单元的标识确定为所述第一目标标识;
第二确定单元,用于在查询到所述寄存单元字典中未包括所述第二量子位的对应关系的情况下,基于所述寄存单元字典为所述第二量子位分配寄存单元,将所述第二量子位分配的寄存单元的标识确定为所述第一目标标识,并基于所述第二量子位分配的寄存单元的标识更新所述寄存单元字典。
33.根据权利要求32所述的装置,其中,所述第二确定单元,具体用于:
在查询到所述寄存单元字典中包括第一寄存单元的标识的情况下,将所述第一寄存单元分配给所述第二量子位,所述第一寄存单元为未分配给量子位的寄存单元;
在查询到所述寄存单元字典中不包括所述第一寄存单元的标识的情况下,获取所述寄存单元字典所表征的寄存单元的数量,基于所述数量确定所创建的第二寄存单元的标识,并将所述第二寄存单元分配给所述第二量子位。
34.根据权利要求21所述的装置,其中,所述第二获取模块包括:
第三获取子模块,用于获取所述第一指令列表中操作指令涉及的量子位,在所述操作指令为由经典信息控制的量子门操作的操作指令的情况下,操作指令涉及的量子位包括所述操作指令作用的受控条件所在的量子位;
编号子模块,用于基于操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,对所述操作指令进行编号,得到所述第一量子电路的操作指令的编号信息;
查找子模块,用于基于所述操作指令的编号信息,查找所述第一量子电路中与所述操作指令关联的其他操作指令,得到所述依赖关系,所述其他操作指令涉及的量子位包括所述操作指令涉及的量子位,所述其他操作指令的执行顺序在所述操作指令之前。
35.根据权利要求34所述的装置,其中,所述第二获取模块还包括:
第四确定子模块,用于基于所述第一指令列表正序遍历过程中更新的第二目标列表,确定操作指令涉及的每个量子位在所述第一量子电路的量子操作中出现的次序,所述第二目标列表用于记录所述第一量子电路中每个量子位在正序遍历过程中出现的次序;
其中,在正序遍历的操作指令涉及到第四量子位的情况下,所述第二目标列表中所述第四量子位在正序遍历过程中出现的次序加1,所述第四量子位为所述第一量子电路中任一量子位。
36.根据权利要求34所述的装置,其中,所述查找子模块,具体用于:
基于所述操作指令的编号信息,获取目标编号信息,所述目标编号信息中量子位标号与所述操作指令的编号信息中量子位标号相同,所述目标编号信息中量子位在所述第一量子电路的量子操作中出现的次序小于所述操作指令的编号信息中所述量子位在所述第一量子电路的量子操作中出现的次序;
获取所述目标编号信息对应的所述其他操作指令,得到所述依赖关系,所述其他操作指令为所述第一量子电路中执行顺序在所述操作指令之前,且与所述操作指令相邻的操作指令。
37.根据权利要求21所述的装置,其中,所述重排序模块包括:
第一重排序子模块,用于按照操作指令涉及的量子位标号从小到大的顺序对所述第一量子电路的操作指令进行第一重排序,得到所述第一量子电路的第四指令列表,所述第四指令列表中,排序在前的操作指令中目标量子位的标号小于排序在后的操作指令中目标量子位标号,且针对所作用的量子位标号相同的操作指令按照操作指令在所述第一量子电路中的相对顺序排列,所述目标量子位为操作指令涉及的量子位中标号小的量子位;
第二重排序子模块,用于基于所述依赖关系,对所述第四指令列表进行第二重排序,得到所述第二指令列表。
38.根据权利要求37所述的装置,其中,所述第二重排序子模块包括:
拆分单元,用于对所述第四指令列表进行针对操作指令的遍历,并针对当前遍历的操作指令将所述第四指令列表进行拆分,得到第一列表、第二列表和第三列表,所述第一列表为所述第四指令列表中排序在首位的操作指令到与所述当前遍历的操作指令相邻的前一个操作指令构成的列表,所述第二列表为所述当前遍历的操作指令构成的列表,所述第三列表为所述第四指令列表中排序在所述当前遍历的操作指令之后的操作指令构成的列表;
重排单元,用于基于所述依赖关系中所述当前遍历的操作指令与所述第一量子电路的操作指令之间的目标依赖关系、所述第一列表、所述第二列表和所述第三列表,对所述第四指令列表进行操作指令的重排;
第三确定单元,用于在所述第四指令列表遍历完成的情况下,基于重排后的所述第四指令列表确定所述第二指令列表。
39.根据权利要求38所述的装置,其中,所述重排单元,具体用于:
基于所述目标依赖关系和所述第一列表,获取第三目标列表,所述第三目标列表指示所述第一列表中与所述当前遍历的操作指令之间存在所述目标依赖关系的操作指令;
基于所述第三目标列表和第四目标列表,确定第五目标列表,第四目标列表指示所述第四指令列表中与所述当前遍历的操作指令之间存在所述目标依赖关系的操作指令,所述第五目标列表为从所述第四目标列表删除所述第三目标列表后得到的列表;
在所述第五目标列表不为空集的情况下,从所述第三列表中删除所述第五目标列表指示的操作指令,得到第四列表;
将所述第一列表、所述第五目标列表指示的操作指令、所述第二列表和所述第四列表按照从前至后的顺序进行列表拼接,得到重排后的所述第四指令列表。
40.根据权利要求37所述的装置,其中,所述第二重排序子模块还包括:
移动单元,用于将重排后的所述第四指令列表中量子测量操作的操作指令移动至目标位置,得到所述第二指令列表;
其中,所述目标位置为位于重排后的所述第四指令列表中目标操作指令之后,且与所述目标操作指令相邻的位置,所述目标操作指令所作用的量子位包括所述量子测量操作的操作指令所作用的量子位,所述第二指令列表中排序在所述目标位置之后的操作指令不包括所述量子测量操作的操作指令所作用的量子位。
41.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-20中任一项所述的方法。
42.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-20中任一项所述的方法。
43.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-20中任一项所述的方法。
CN202310577717.1A 2023-05-22 2023-05-22 量子电路处理方法、装置及电子设备 Active CN117391206B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310577717.1A CN117391206B (zh) 2023-05-22 2023-05-22 量子电路处理方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310577717.1A CN117391206B (zh) 2023-05-22 2023-05-22 量子电路处理方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN117391206A CN117391206A (zh) 2024-01-12
CN117391206B true CN117391206B (zh) 2024-11-19

Family

ID=89439811

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310577717.1A Active CN117391206B (zh) 2023-05-22 2023-05-22 量子电路处理方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN117391206B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115461763A (zh) * 2020-04-28 2022-12-09 国际商业机器公司 量子电路的有效量子适应性执行方法
CN115708111A (zh) * 2021-08-19 2023-02-21 量子计算有限责任公司 配置用于量子纠错的量子系统控制器

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113646778B (zh) * 2019-03-29 2024-09-06 谷歌有限责任公司 用于执行分段相加的不经意进位轨道寄存器
EP3839836A1 (en) * 2019-12-20 2021-06-23 Bull SAS Quantum computing compiling
CN114881237B (zh) * 2022-03-29 2023-03-10 北京百度网讯科技有限公司 量子计算处理方法、装置及电子设备
CN115860128B (zh) * 2022-12-21 2023-08-15 北京百度网讯科技有限公司 量子电路运行方法、装置及电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115461763A (zh) * 2020-04-28 2022-12-09 国际商业机器公司 量子电路的有效量子适应性执行方法
CN115708111A (zh) * 2021-08-19 2023-02-21 量子计算有限责任公司 配置用于量子纠错的量子系统控制器

Also Published As

Publication number Publication date
CN117391206A (zh) 2024-01-12

Similar Documents

Publication Publication Date Title
CN113537502B (zh) 量子电路的处理方法、装置、电子设备和存储介质
CN116151384B (zh) 量子电路处理方法、装置及电子设备
CN116187458B (zh) 量子电路处理方法、装置及电子设备
CN111027702B (zh) 一种实现量子线路替换的方法、装置、存储介质和电子装置
CN110929873B (zh) 一种量子程序的处理方法、装置、存储介质和电子装置
US8990209B2 (en) Distributed scalable clustering and community detection
CN110825375A (zh) 一种量子程序的转化方法、装置、存储介质和电子装置
CN111027703B (zh) 一种量子线路查询的方法、装置、存储介质及电子装置
CN116151381B (zh) 量子电路处理方法、装置及电子设备
CN116167446B (zh) 量子计算处理方法、装置及电子设备
CN116611527B (zh) 量子电路处理方法、装置及电子设备
CN116187463B (zh) 量子测量模式至量子电路的编译方法、装置及电子设备
CN116579435B (zh) 量子电路的分类方法、装置、电子设备、介质和产品
CN113609806A (zh) 一种结合子图同构的量子线路程序通用变换方法
CN113326869A (zh) 基于最长路融合算法的深度学习计算图优化方法
CN116187464B (zh) 盲量子计算处理方法、装置及电子设备
CN117391206B (zh) 量子电路处理方法、装置及电子设备
CN116629370B (zh) 量子电路处理方法、装置及电子设备
Thuerck et al. A fast, massively parallel solver for large, irregular pairwise Markov random fields.
CN116167447B (zh) 量子电路处理方法、装置及电子设备
KR20230132369A (ko) 양자 회로에서의 리소스 감소
CN117313878B (zh) 量子电路处理方法、装置及电子设备
CN117313883B (zh) 量子电路处理方法、装置及电子设备
CN117313881B (zh) 量子电路的分类方法、装置及电子设备
CN117313882A (zh) 量子电路处理方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant