经由符号资源估计进行量子程序的自动准确度管理的制作方法

文档序号:30312407发布日期:2022-06-05 21:56阅读:151来源:国知局
经由符号资源估计进行量子程序的自动准确度管理的制作方法
经由符号资源估计进行量子程序的自动准确度管理
1.相关申请的交叉引用
2.本技术要求于2019年10月17日提交的美国临时申请第62/916623号和2020年4月8日提交的美国专利申请第16/843733号的优先权,其全部内容通过引用并入本文。
技术领域
3.本技术涉及量子计算设备。具体地,本技术涉及用于使用符号资源估计作为编译过程的一部分来生成量子计算机专用低级指令的技术。


技术实现要素:

4.本文公开了用于使用符号资源估计来生成量子计算机专用低级指令的示例实施例。
5.当将量子程序翻译成目标专用低级指令时,必须以引入一些逼近误差的方式按照低级子例程来重写一些高级子例程(必须对它们进行分解)。虽然可以降低这些误差,但是这样做一般会增加所需的量子资源(例如,操作的数目和/或量子位的数目)。程序员通常知道所讨论的程序的总体容错能力。然而,给定该信息,对于在量子计算设备的编译期间发生的所有分解,推断出准确度参数的最佳选择是什么并不简单。
6.作为补救措施,所公开的技术涉及使该过程自动化并将该功能添加到量子程序编译器的各种改进。在本公开中,所产生的优化问题可以通过使用模拟退火(annealing)程序来解决;此外,本公开解释了如何以快几个数量级的方式来实现这一点。例如,在特定实施例中,该过程涉及将表达优化问题的代码变换成符号表达式。因为该变换导致编译的代码中的符号表达式,所以人们可以提取用于所讨论的量子程序的符号资源估计。在这些变换没有产生封闭形式的解决方案的情况下,它们仍然可以比可能使用其他资源估计工具快许多数量级地进行评估。访问这种符号或近似符号表达式不仅大大提高了准确度管理和资源估计的性能,而且还可以更好地通知量子软件开发人员和理论家量子程序中可能存在的瓶颈。反过来,所公开的技术为改进底层量子程序提供了新的途径和技术。
7.以前的资源估计器使用对操作进行计数的类模拟器方法。这种方法需要执行代码中的所有循环和其他控制流语句。相比之下,所公开的技术的实施例识别代码中的这些循环,在可能的情况下消除循环,并且符号化地简化用于量子程序所引入的总体操作计数和/或总误差的数学表达式。这允许开发人员具有显著的进步,因为该方法产生了作为输入参数(例如,所有输入参数)的函数、用于例如总的门计数的简明表达式,然后可以指定该表达式以便得到具体的数字。类模拟器方法将不得不为每个新的参数选择来重新运行整个估计过程。
8.此外,所公开的循环消除优化方法的实施例将所产生的表达式的评估提速了几个数量级。当使用资源估计器作为子例程来为量子程序寻找最佳准确度参数时,这是至关重要的,因为这需要许多对于不同参数的评估。
9.目前,量子计算领域中没有技术为符号(或近似符号)资源估计和自动准确度管理
提供支持。许多领域专家和量子程序开发人员因此不能执行非常高效的资源估计;相反,当前的方法需要相当多的时间来理解和计算量子程序中的误差传播。
10.所公开的技术的实施例提供了一种使量子程序开发人员能够得到详细且优化的资源估计的解决方案。此外,对符号资源估计的支持对于从事量子信息理论和算法的量子程序开发人员和研究人员来说是有吸引力的。使用所公开的技术的实施例,它们可以自动生成门计数的上限,而无需手动执行冗长的计算。
11.根据参考附图进行的以下详细描述,所公开的技术的前述及其他目的、特征和优点将变得更加明显。
附图说明
12.图1示出了其中可以实现所描述的实施例的各方面的合适的经典计算环境的一般化示例。
13.图2示出了用于实现根据所公开的技术的系统的可能的网络拓扑(例如,客户端-服务器网络)的示例。
14.图3示出了用于实现根据所公开的技术的系统的可能的网络拓扑(例如,分布式计算环境)的另一示例。
15.图4示出了用于实现所公开的技术的示例性系统,其中该系统包括与量子计算设备进行通信的一个或多个经典计算机。
16.图5-图6是用于执行所公开的技术的示例实施例的流程图。
具体实施方式
17.i.总体考虑
18.所公开的方法、装置和系统不应以任何方式被解释为限制。相反,本公开针对各种公开的实施例的所有新颖和非显而易见的特征和方面,单独的或以彼此的各种组合和子组合。此外,所公开的实施例的任何特征或方面可以在与彼此的各种组合和子组合中使用。例如,来自一个实施例的一个或多个方法动作可以与来自另一实施例的一个或多个方法动作一起使用,反之亦然。所公开的方法、装置和系统不限于任何特定方面或特征或其组合,所公开的实施例也不要求存在任何一个或多个特定优点或解决问题。
19.本文所描述的示例的各种替代方案是可能的。所公开的技术的各种方面可以组合使用或单独使用。不同的实施例使用一个或多个所描述的创新。本文描述的一些创新解决了

背景技术:
中提到的一个或多个问题。通常,给定的技术/工具不能解决所有这样的问题。
20.本技术和权利要求中使用的单数形式“一”、“一个”和“该”包括复数形式,除非上下文另有明确规定。此外,术语“包括”意味着“包含”。此外,如本文所使用的,术语“和/或”意味着短语中的任何一项或任何项的组合。
21.ii.所公开的技术的详细实施例
22.本文公开了用于使用符号资源估计生成量子计算机专用低级指令的技术的示例实施例。
23.当将量子程序翻译成目标专用低级指令时,必须以引入一些逼近误差的方式根据低级子例程来重写一些高级子例程(必须对它们进行分解)。虽然可以降低这些误差,但是
这样做一般会增加所需的量子资源(操作的数目和量子位的数目)。量子程序程序员通常知道所讨论的程序的总体容错能力。然而,给定该信息,对于在编译期间发生的所有分解,推断出准确度参数的最佳选择是什么并不简单。
24.作为补救措施,所公开的技术描述了一种可以在量子程序编译器中使用的自动化过程。
25.在另一工作中(参见等人的“managing approximation errors in quantum programs”,可以在https://arxiv.org/pdf/1807.02336处获得),示出了如何使用模拟退火程序来解决所产生的优化问题。然而,这项工作并没有触及如何实现待解决的问题的细节。在本公开中,将示出如何以快几个数量级的方式来实现这一点。人们可以通过对表达优化问题的代码进行变换来实现这一点。因为所公开的变换通常导致编译的代码中完全符号化的表达式,所以人们可以提取这些表达式以得到用于所讨论的量子程序的符号资源估计。在这些变换没有产生封闭形式的解决方案的情况下,它们仍然可以比可能使用其他资源估计工具快许多数量级地进行评估。访问这种符号或近似符号表达式不仅大大提高了准确度管理和资源估计的性能,而且还可以更好地通知理论家量子程序中可能存在的瓶颈。反过来,这允许改进(多个)底层量子算法。
26.在本公开中,描述了用于在代码中指定逼近分解的示例性方法。在最新的量子编程语言中,所产生的准确度参数要么是常数(且因此在一般情况下是错误的),要么必须与任何其他参数一起被传递。虽然第一种方法最终无法产生正确的量子电路,但是从程序员的角度来看,第二种方法是不切实际的。
27.考虑调用几个不完美子例程的量子操作。每一个这样的操作都需要知道由它自己、它的子例程以及它的任何子例程所执行的所有子例程引入的所有准确度参数。例如,
28.qfunction f(eps1,eps2,

,epsn,qureg):
29.g(eps1,qureg[0])
[0030]
h(eps2,eps3,qureg[1-3])
[0031]

[0032]
z(epsn,qureg)
[0033]
其中h(eps2,eps3,qureg[1-3])可以只将eps3传递给它的子例程中的一个子例程。
[0034]
这显然不是处理逼近误差的可扩展方式。使用所公开的技术,每个子例程确切地知道那些直接地影响它的代码的准确度参数。此外,这些参数可以在代码中的任何地方被定义。
[0035]
因此,上述示例将记为:
[0036]
qfunction f(qureg):
[0037]
eps my_eps;
[0038]
g(qureg[0])
[0039]
h(qureg[1-3])
[0040]

[0041]
z(qureg)
[0042]
其中f(qureg)的实现可以在它的实现方式中使用my_eps,就好像它是实数(例如,
0.001)一样。显然,这是可扩展的,并且是所公开的技术的实施例所支持的作为输入的内容。一旦代码被以这种形式进行编写,那么它就可以在公开的框架中使用。具体地,所公开的框架由图4和图5中的流程图400和500示出。在所示框架中,一个或多个(例如,所有)量子子例程在代码中被变换。在特定示例实现方式中,该变换为一个或多个子例程(例如,每个子例程)添加两个附加版本。这本质上将程序(例如,整个程序)复制两次。一个副本将确定非自由操作的数目,并且第二个副本将跟踪由逼近分解引入的总体误差。此外,在某些实施例中,移除对“自由”操作的一个或多个(例如,所有)调用。在某些示例实现方式中,可以由程序员指定哪些操作是昂贵的/自由的。
[0043]
三个副本可以被馈送到优化器中,该三个副本是代码中出现的准确度参数(例如,所有的准确度参数)的函数。通过使用对两个添加的副本(计算操作计数和总误差)重复调用,优化器可以尝试减少操作计数,同时确保总误差小于用户指定的误差阈值。虽然实现起来很简单,但是这种方法也存在先前的资源估计工具所具有的问题:在优化过程期间,量子程序中的所有循环都要执行数千次。
[0044]
作为补救措施,所公开的技术的实施例引入了允许消除这些循环中的一个或多个循环的特殊的循环优化。具体地并且在某些实施例中,该形式的循环被变换:
[0045][0046]
迭代地这样做通常允许消除程序的两个副本(用于操作计数和总误差)中的所有循环。在原始程序中只有一个循环的情况下,注意n次加法被1次加法和1次乘法所代替。考虑到这两个操作可以作为一条融合的乘法累加指令来在现代处理器架构上执行,人们可以预期加速大约n倍,从而带来实质性的改进。典型的量子程序包含许多嵌套循环。因此,许多数量级的加速是很容易实现的。
[0047]
一旦已经执行了所有可能的循环优化,包括中间重新关联和循环简化/规范化,计算门计数或总体误差的程序变得简单多了。在许多实际示例中,程序中只有一个循环,通常为以下形式
[0048]
for i=1:n
[0049]
eps+=f(i)*delta_eps;
[0050]
这种循环一般无法被进一步优化。然而,该程序是近似符号形式的,这意味着存在用于f(i)和delta_eps的符号表达式。因此,所公开的技术的示例实施例可以从回到程序的输入(其可以是未知的或编译时间常数)的最终返回语句(返回门计数或总误差)来遍历程序的低级表示。诸如上面这样的循环使用公知的公式(例如,几何级数)产生在许多情况下可以被符号化简化的总和表达式。在简化之后,所公开的框架可以输出两个符号表达式,作为所有算法和分解参数(例如,问题大小以及分解的准确度参数)的函数,这两个符号表达式可以用于有效地评估门计数和总误差。
[0051]
此外,分支的一些特殊情况可以通过所公开的框架被优化。例如,所公开的技术的实施例识别以计算两个实际参数(arguement)中的最小值的低级表示的形式的分支表达
式。这允许人们使用sum_i_min(f(i),g(i))《=min(sum_i f(i),sum_i g(i))最终分别输出门计数和总误差的两个上界。通常,这种变换允许进一步简化右手边的两个总和。
[0052]
iii.示例计算环境
[0053]
图1示出了所描述的实施例的各方面可以在其中实现的合适的经典计算环境100的通用示例。计算环境100不旨在对所公开的技术的使用范围或功能提出任何限制,因为本文描述的技术和工具可以在具有计算硬件的各种通用或专用环境中实现。
[0054]
参考图1,计算环境100包括至少一个处理设备110和存储器120。在图1中,这种最基本的配置130被包括在虚线内。处理设备110(例如,cpu或微处理器)执行计算机可执行指令。在多处理系统中,多个处理设备执行计算机可执行指令来提高处理能力。存储器120可以是易失性存储器(例如,寄存器、高速缓存、ram、dram、sram)、非易失性存储器(例如,rom、eeprom、闪存)或两者的某种组合。存储器120存储软件180,软件180实现用于执行所公开的技术中的任何技术以开发量子计算机程序和/或操作的量子计算机的工具,如本文所描述。存储器120还可以存储用于合成、生成或编译量子电路以执行所公开的技术中的任何技术的软件180。
[0055]
计算环境可具有附加特征。例如,计算环境100包括存储设备140、一个或多个输入设备150、一个或多个输出设备160以及一个或多个通信连接170。诸如总线、控制器或网络之类的互连机制(未示出)将计算环境100的组件互连。通常,操作系统软件(未示出)为在计算环境100中执行的其他软件提供操作环境,并且协调计算环境100的组件的活动。
[0056]
存储设备140可以是可移动或不可移动的,并且包括一个或多个磁盘(例如,硬盘驱动器)、固态驱动器(例如,闪存驱动器)、磁带或盒式磁带、cd-rom、dvd或可以用于存储信息并可以在计算环境100内被访问的任何其他有形非易失性存储介质。存储装置140还可以存储用于实现所公开的技术中的任何技术的软件180的指令。存储装置140还可以存储用于生成和/或合成所描述的技术中的任何技术、系统或量子电路的软件180的指令。
[0057]
(多个)输入设备150可以是触摸输入设备(诸如键盘、触摸屏、鼠标、笔、轨迹球)、语音输入设备、扫描设备或向计算环境100提供输入的其他设备。(多个)输出设备160可以是显示设备(例如,计算机显示器、膝上型显示器、智能手机显示器、平板显示器、上网本显示器或触摸屏)、打印机、扬声器或提供来自计算环境100的输出的另一设备。
[0058]
(多个)通信连接170实现了通过通信介质与另一计算实体进行通信。通信介质在调制数据信号中传送诸如计算机可执行指令之类的信息或其他数据。调制数据信号是这样的信号:该信号以在信号中编码信息的方式设置或改变其一个或多个特性。作为示例而非限制,通信介质包括用电、光、rf、红外、声或其他载体实现的有线或无线技术。
[0059]
如上所述,用于执行所公开的技术中的任何技术、用于控制量子计算装置以执行本文公开的电路设计或编译/合成的各种方法和技术可以在存储在一个或多个计算机可读介质上的计算机可读指令的总体上下文中进行描述。计算机可读介质是可以在计算环境内被访问或者是被计算环境访问的任何可用介质(例如,存储器或存储设备)。计算机可读介质包括有形计算机可读存储器或存储设备,诸如存储器120和/或存储装置140,并且不包括传播载波或信号本身(有形计算机可读存储器或存储设备不包括传播载波或信号本身)。
[0060]
本文公开的方法的各种实施例也可以在由处理器在计算环境中执行的计算机可执行指令(诸如程序模块中包括的指令)的总体上下文中进行描述。通常,程序模块包括例
程、程序、库、对象、类、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。在各种实施例中,程序模块的功能可以根据需要在程序模块之间组合或划分。用于程序模块的计算机可执行指令可以在本地或分布式计算环境内执行。
[0061]
在图2中描绘了用于实现根据所公开的技术的系统的可能网络拓扑200(例如,客户端-服务器网络)的示例。联网的计算设备220可以是例如运行浏览器或连接到网络212的其他软件的计算机。计算设备220可以具有如图1所示并如上所述的计算机架构。计算设备220不限于传统的个人计算机,而是可以包括被配置为连接到网络212并与之通信的其他计算硬件(例如,智能电话、膝上型计算机、平板计算机或其他移动计算设备、服务器、网络设备、专用设备等)。此外,计算设备220可以包括fpga或其他可编程逻辑设备。在所示实施例中,计算设备220被配置为经由网络212与计算设备230(例如,远程服务器,诸如云计算环境中的服务器)进行通信。在所示实施例中,计算设备220被配置为将输入数据传输到计算设备230,并且计算设备230被配置为实现用于控制量子计算设备来执行所公开的实施例的技术中的任何技术的技术和/或用于生成量子电路以执行本文公开的技术中的任何技术的电路生成/编译/合成技术。计算设备230可以向计算设备220输出结果。从计算设备230接收的任何数据可以被存储或显示在计算设备220上(例如,显示为计算设备220处的图形用户界面上或网页上的数据)。在所示实施例中,所示网络212可被实现为使用有线联网(例如,以太网ieee标准802.3或其他适当标准)或无线联网(例如,ieee标准802.11a、802.11b、802.11g或802.11n或其他适当标准中的一个)的局域网(“lan”)。替代地,网络212的至少一部分可以是互联网或类似的公共网络,并且使用适当的协议(例如,http协议)来操作。
[0062]
在图3中描绘了用于实现根据所公开的技术的系统的可能网络拓扑300(例如,分布式计算环境)的另一示例。联网的计算设备320可以是例如运行浏览器或连接到网络312的其他软件的计算机。计算设备320可以具有如图1所示并如上所述的计算机架构。在所示实施例中,计算设备320被配置为经由网络312与多个计算设备330、331、332(例如,远程服务器或其他分布式计算设备,诸如云计算环境中的一个或多个服务器)进行通信。在所示实施例中,计算环境300中的计算设备330、331、332中的每个计算设备用于执行所公开的技术的至少一部分,和/或用于控制量子计算设备以执行所公开的实施例中的任何实施例的技术的至少一部分,和/或用于生成量子电路以执行本文公开的技术中的任何技术的电路生成/编译/合成技术。换句话说,计算设备330、331、332形成分布式计算环境,在该分布式计算环境中,用于执行本文公开的技术中的任何技术的技术方面和/或量子电路生成/编译/合成过程在多个计算设备之间共享。计算设备320被配置为将输入数据传输到计算设备330、331、332,计算设备330、331、332被配置为分布式地实现这样的过程,包括所公开的方法中的任何方法的执行或所公开的电路中的任何电路的创建,并且向计算设备320提供结果。从计算设备330、331、332接收的任何数据可以被存储或显示在计算设备320上(例如,显示为计算设备320处的图形用户界面上或网页上的数据)。所示网络312可以是以上关于图2讨论的网络中的任何网络。
[0063]
参考图4,用于实现所公开的技术的示例性系统包括计算环境400。在计算环境400中,编译的量子计算机电路描述(包括用于执行所公开的技术中的任何技术的量子电路,如本文所公开的)可以用于对一个或多个量子处理单元进行编程(或配置),使得(多个)量子处理单元实现由量子计算机电路描述所描述的电路。
[0064]
环境400包括一个或多个量子处理单元402和一个或多个读出设备408。(多个)量子处理单元执行量子电路,该量子电路由量子计算机电路描述预编译和描述。(多个)量子处理单元可以是以下各项中的一项或多项但不限于:(a)超导量子计算机;(b)离子阱量子计算机;(c)用于量子计算的容错架构;和/或(d)拓扑量子架构(例如,使用马约拉纳零模的拓扑量子计算设备)。预编译的量子电路(包括所公开的电路中的任何电路)可以在量子处理器控制器420的控制下经由控制线406被发送到(或者应用于)(多个)量子处理单元。量子处理器控制器(qp控制器)420可以与经典处理器410(例如,具有如上关于图1所描述的架构)结合来操作,以实现期望的量子计算过程。在所示的示例中,qp控制器420还经由一个或多个qp子控制器404来实现期望的量子计算过程,这些qp子控制器404被具体地适配为控制(多个)量子处理器402中的对应的量子处理器。例如,在一个示例中,量子控制器420通过向一个或多个存储器(例如,低温存储器)发送指令来促进编译的量子电路的实现,该一个或多个存储器然后将该指令传递到(多个)低温控制单元(例如,(多个)qp子控制器404),(多个)低温控制单元将例如表示门的脉冲序列传输到(多个)量子处理单元402用于实现。在其他示例中,(多个)qp控制器420和(多个)qp子控制器404进行操作以向(多个)量子处理器提供适当的磁场、编码操作或其他这样的控制信号,以实现编译的量子计算机电路描述的操作。(多个)量子控制器可以进一步与读出设备408进行交互,以(例如,通过一旦可用就从量子处理单元读出或测量出数据结果等)帮助控制和实现期望的量子计算过程。
[0065]
参考图4,编译是将量子算法的高级描述翻译成包括量子操作序列或门序列的量子计算机电路描述的过程,该量子计算机电路描述可以包括本文公开的电路(例如,被配置为执行本文公开的程序中的一个或多个程序的电路或由所公开的技术中的任何技术产生的电路)。编译可以由编译器422使用环境400的经典处理器410(例如,如图4所示)来执行,该处理器410从存储器或存储设备412加载高级描述并将所产生的量子计算机电路描述存储在存储器或存储设备412中。
[0066]
在其他实施例中,编译和/或验证可由远程计算机460(例如,具有以上关于图1所述的计算环境的计算机)远程地执行,远程计算机460将所产生的量子计算机电路描述存储在一个或多个存储器或存储设备462中,并将量子计算机电路描述传输到计算环境400,以在(多个)量子处理单元402中实现。此外,远程计算机400可以将高级描述存储在存储器或存储设备462中,并将该高级描述传输到计算环境400,以与(多个)量子处理器一起编译和使用。在这些场景的任何一个中,由(多个)量子处理器执行的计算的结果可以在计算过程之后和/或计算过程期间被传送到远程计算机。此外,远程计算机可以与(多个)qp控制器420进行通信,使得量子计算过程(包括任何编译、验证和qp控制程序)可以由远程计算机460远程地控制。通常,远程计算机460经由通信连接450与(多个)qp控制器420、编译器/合成器422和/或验证工具423进行通信。
[0067]
在特定实施例中,环境400可以是云计算环境,其通过合适的网络(可以包括互联网)向一个或多个远程计算机(诸如远程计算机460)提供环境400的量子处理资源。
[0068]
vi.结束语
[0069]
所公开的方法、装置和系统不应以任何方式被解释为限制。相反,本公开针对各种公开的实施例的所有新颖和非显而易见的特征和方面,单独的和以彼此的各种组合和子组合。所公开的方法、装置和系统不限于任何特定方面或特征或其组合,所公开的实施例也不
要求存在任何一个或多个特定优点或解决问题。
[0070]
鉴于可以应用所公开的技术的原理的许多可能实施例,应当认识到所示实施例为所公开的技术的示例,并且不应被视为对所公开的技术的范围的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1