软件限定的量子计算机的制作方法

文档序号:21484679发布日期:2020-07-14 17:10阅读:270来源:国知局
软件限定的量子计算机的制作方法

相关申请的交叉引用

本专利申请要求2018年11月26日提交的标题为“software-definedquantumcomputer”的美国非临时申请16/199,993和2017年11月28日提交的标题为“software-definedquantumcomputer”的美国临时申请62/591,641的专利优先权,其内容通过引用整体并入本文。



背景技术:

本公开的各方面总体上涉及可配置的量子计算系统,并且更具体地,涉及软件限定的量子计算机。

在针对固态量子位(也写作qubit)(例如,超导量子位,量子点(qd)等)的传统量子计算机(qc)中,在芯片或集成电路的硬件设计中构建量子位,并且它们的连接通常被该硬件设计限定。这意味着,例如(但不限于):(i)可以计算的问题的大小,(ii)可以实施的电路操作或算法/计算的类型,以及(iii)相应的性能指标(例如,运行电路/算法所需的门总数、执行计算所需的时间以及量子电路的成功概率)强烈依赖于量子位硬件(即,用于实现量子位的硬件)的具体设计,其通常被实施为芯片或集成电路。换句话说,传统的固态量子计算机的操作或配置由于硬件组件的固有限制而趋于僵化。

非常需要允许量子计算机的灵活性和可配置性,尤其是动态和/或基于软件的可配置性的技术。



技术实现要素:

以下给出了一个或多个方面的简化概述,以便提供对这些方面的基本理解。该概述不是所有预期方面的详尽概述,并且既不旨在标识所有方面的关键或重要元素,也不旨在描绘任何或所有方面的范围。其目的是以简化形式给出一个或多个方面的一些概念,作为稍后给出的更详细描述的序言。

在本公开的一方面,硬件描述语言可以用于软件限定的量子计算机,以配置可用于软件限定的量子计算机的各种资源以执行特定的任务、功能、程序或例程。硬件描述语言可以用于动态地配置软件限定的量子计算机,使得例如计算的大小(例如,量子位的数量)不需要是固定的并且可以在运行中进行调整。在一个示例中,硬件描述语言可以指定软件限定的量子计算机的结构(例如,硬件连接性)和行为(例如,操作)。

在本公开的一方面,描述一种软件限定的量子计算机,其包括:控制单元,其被配置为从软件程序接收编程指令并至少部分地基于所述编程指令生成控制信号;以及多个量子位,其中一数量的所述量子位和任意两个所述量子位之间的连接由来自所述控制单元的控制信号启用和控制。

在本公开的另一方面,描述一种软件限定的量子计算机,其包括多个模块,每个模块具有控制单元、通信控制单元和多个量子位,每个控制单元被配置为从软件程序接收编程指令,并且至少部分地基于所述编程指令生成控制信号,并且一数量的所述量子位和任意两个所述量子位之间的连接由来自所述控制单元的所述控制信号来启用和控制。所述软件限定的量子计算机还包括交换机/路由器单元,所述交换机/路由器单元被配置为启用来自每个所述模块的所述通信控制单元的通信信道。

在本公开的另一方面,描述一种软件限定的量子计算架构,其包括:应用程序编程接口(api);量子操作系统(os),所述api在其上执行,所述量子os包括资源管理器和交换机;以及多个量子核,其经由所述交换机连接,所述资源管理器被配置为确定所述量子核中量子位的分配。

在本公开的另一方面,描述一种用于编译软件限定的量子计算机的源代码的方法,该方法包括:对量子编程语言的高级中间表达执行词汇分析;对所述词汇分析的输出执行语义分析;以及基于所述语义分析的输出生成所述量子编程语言的中级中间表达。

在本公开的又一方面,描述一种计算机可读介质,其存储具有指令的代码,所述指令可由处理器执行,用于编译软件限定的量子计算机的源代码,所述代码包括:用于对量子编程语言的高级中间表达执行词汇分析的代码;用于对所述词汇分析的输出执行语义分析的代码;以及用于基于所述语义分析的输出生成所述量子编程语言的中级中间表达的代码。

在本公开的另一方面,描述一种软件限定的量子计算机,其包括第一控制单元和第二控制单元。所述第一控制单元可被配置为从软件程序接收编程指令并生成第一控制信号,并且第一多个量子位由来自所述第一控制单元的所述第一控制信号启用和控制。所述第二控制单元可被配置为从所述软件程序接收编程指令并生成第二控制信号,并且第二多个量子位由来自所述第二控制单元的所述第二控制信号启用和控制。此外,所述第一控制单元可被配置为搬运(shuttle)要由所述第二控制单元控制的一数量的所述第一多个量子位,使得所述第二多个量子位的数量增加了所搬运的所述第一多个量子位的所述数量。

本文描述了与软件限定的量子计算机相关的各个方面的方法、设备和计算机可读存储介质。

附图说明

附图仅说明了一些实施方式,因此不应视为对范围的限制。

图1a是说明根据本公开的各方面的软件限定的量子计算机的示例的图示。

图1b-1d是说明根据本公开的各方面的控制多个区域的量子位(qubit)的示例的图示。

图2是说明根据本公开的各方面的可扩展的软件限定的量子计算机的示例的图示。

图3是说明根据本公开的各方面的软件限定的量子计算机架构的示例的图式。

图4a-4c是说明根据本公开的各方面的资源管理器工作流的示例的流程图。

图5是说明根据本公开的各方面的应用程序编程接口(api)访问点的级别的示例的图。

图6是说明根据本公开的各方面的编译器架构的示例的图。

图7a-7c是说明根据本公开的各方面的异常分类的示例的图。

图8是说明根据本发明的各方面的计算机装置的示例的图。

具体实施方式

以下关于附图给出的详细描述旨在作为对各种配置的描述,而不意图代表可以实践本文中所描述的概念的仅有配置。该详细描述包括特定细节,以提供对各种概念的透彻理解。然而,对于本领域技术人员将显而易见的是,可以在没有这些具体细节的情况下实践这些概念。在某些情况下,以框图形式示出了众所周知的组件,以避免使这些概念模糊。

本公开描述了用于实施量子计算机(qc)、qc系统或量子信息处理(qip)系统的方法的各个方面,其中,qc的功能方面中的若干个,如果不是大多数个,由软件限定(即软件限定的功能)。即,qc的功能不需要是僵化的或受硬件设计限制,可以使用软件进行配置。通过实施qc的软件限定的架构,可以使用软件或一些动态指令来限定量子位的系统,控制和操纵量子位连接性(例如,不同量子位之间的连接),以及调制量子位间的交互(例如,不同量子位之间的交互)以执行给定的计算或仿真任务。此方法还可能涉及用于描述qc的硬件配置的系统化方式。

经典的,即非量子的中央处理单元(cpu)通常包括控制单元和数据路径,这两者通常使用数字互补金属氧化物半导体(cmos)电路来实施。控制单元通常翻译程序的指令以决定如何操纵数据,并管理cpu中执行该指令所需的资源以及每个指令执行的定时。数据路径是处理器中功能单元、寄存器和总线的集合,正被处理的数据从中流过。通过控制单元指示各种功能单元、寄存器和总线来操纵数据以执行计算,从而最终输出期望的计算任务。在典型的cpu中,控制单元和数据路径是使用数字电路实施的,数字电路使用逻辑元件来构建,使用晶体管搭建,并且在芯片上的布局高度交织。

量子计算机(或qc/qip系统)操纵量子数据(以量子位为单位),因此数据路径必须由量子对象组成。存储、传输和处理数据的功能单元必须能够处理量子位,保持量子特征(例如叠加和纠缠)并同时作用于叠加输入状态的所有分量。另一方面,控制单元通常是经典的,因为控制程序中指定的指令本质上是经典的。典型的控制单元可被配置为将来自程序或算法的指令翻译为经典的控制信号,该经典的控制信号操作功能单元以作用于量子位,从而实现期望的数据操纵。对量子位的作用本质上通常是模拟的,其中经典的控制信号(通常由经过调制的载波电磁场(例如,射频(rf)、微波、光)组成,该调制编码相同或单独的场中的作用)通过量子系统的受控时间演变将量子位(或一组量子位)转换为不同的量子状态。也就是说,经典的控制信号用于控制操作,该操作随着时间顺序转换量子位状态以生成期望的计算或仿真。

在本公开中,考虑了量子计算机(或qc/qip系统)的实施,其中在硬件中专门设计和构建了控制单元,同时使数据路径的物理实施完全灵活且可重新配置。数据路径的物理实施是通过提供给硬件单元的一组指令来描述的,而不是在硬件中预先设计和制造的。同样,量子位数据路径之间的交互也被实施为指令序列,该指令序列实现了量子位系统的时间演变,该时间演变由控制单元使用软件程序生成的控制信号指定。

在本公开中描述的方法具有一些独特的特征,这些独特的特征将该方法与较早的方法区分开。下面针对例如基于受困离子技术的qc,描述所提出系统的独特的特征。受困离子技术可以指的是使用加载或布置到陷阱或类似结构中的离子或原子来控制其状态,以执行量子操作/仿真。

在第一方面,系统中的量子位的数量和连接性(例如,交互作用)不是由硬件设计预先确定的。例如,在硬件(控制单元)设计中,qc可以具有控制单元,该控制单元能够一次控制n个量子位(例如,n是整数,可以是16、32、64或更大的值),然后在每次我们选择操作qc时“加载”1到m量子位之间的任何位置(例如,其中m也是整数,并且可能比n大得多)。

图1a示出了图示100,其说明根据本公开的各方面的软件限定的量子计算机的示例。如上所述,图1a的图示100中所示的系统可以加载或启用多达m个量子位,然后控制n个量子位的任何子集(例如,参见图1a中的量子位130),其中m≥n。如本文所使用的,术语量子计算机、量子计算机系统、量子计算系统、量子信息处理系统可以互换使用。

如上所述,硬件描述语言可以用于软件限定的量子计算机,以配置可用于软件限定的量子计算机的各种资源,使得其可以执行特定的任务、功能、程序或例程。硬件描述语言可用于动态配置软件限定的量子计算机,使得例如可以在运行中调整计算的大小(例如,量子位的数量)(例如,可以在任何时间点从一种大小改变为其他大小)。在一个示例中,硬件描述语言可以指定软件限定的量子计算机的结构和行为。此方法不同于传统的量子计算机,在传统的量子计算机中,配置是僵化的并由硬件固定。相反,可以使用例如硬件描述语言(或量子硬件描述语言)以类似于可以如何配置现场可编程装置的方式来配置软件限定的量子计算机。这样,可以根据所执行的具体操作的需要,将软件限定的量子计算机配置为加载和使用10量子位、20量子位或100量子位(或就此而言的任何数量)。

在第二方面,量子位在它们之间具有可用的所有交互,其中这种形式的交互通常可以关闭。换句话说,每个量子位可以与剩余量子位的子集(包括单个其他量子位)或所有剩余量子位交互或与其具有某种连接性(例如,参见图1a中的连接或交互140)。量子位之间的一些交互可以由控制单元(例如,参见图1a中的控制单元120)“打开”或启用,以影响对一组量子位的某些指令(例如,一组逻辑门)。可以通过对控制单元进行编程的方式(例如,通过程序110使用编程指令115)来确定每个指令的性质,以生成执行指令的必要控制信号(例如,参见控制信号125)。程序110提供的编程指令115因此可以反映该组指令,并且控制单元120可以处理编程指令115以生成适当的控制信号125来执行该组指令。

在另一方面,在一个实施方式中,该组指令可以被描述为代数学的量子门的集合,其中每个门对量子位的量子输入执行离散的作用,以生成量子位的输出状态。

在另一方面,在另一实施方式中,该组指令可以被描述为广义上限定的参数化的连续量子门的集合,其中每个门对量子输入执行依赖于参数的作用。例如,与期望的交互哈密顿量(hamiltonian)相关联的qc中的一组量子位的预定演变由指示演变性质的连续变量来实施。

在又一方面,所使用的该组量子位的时间演变可以是绝热的(例如,绝热的时间演变)、非绝热的(例如,非绝热的时间演变)或介于两者之间(例如,绝热/非绝热的或混合的时间演变),只要它们被明确限定即可。

在又一方面,在另一实施方式中,该组指令可以是量子逻辑门和哈密顿量演变的组合。该组合可以是时间的、空间的或两者兼而有之。

在另一方面,扩展或可扩展系统也可以被视为本公开中描述的该类型的软件限定的量子计算机的一部分。整个复合系统可以用一组单独组成的量子位系统构建而成,其中组成的量子位系统之间的量子连接是通过组成的量子位系统的子集之间的共享纠缠或通过在组成的量子位系统之间物理移动量子位来建立的。

图1b示出图示170,其说明控制单元122的示例。图示170中的单个控制单元122可以代表图1a中的若干个控制单元120的实施方式。这些个控制单元120虽然在物理上和/或逻辑上是彼此分开的,但是可以在更高级别的结构内被组织或实施,在这种情况下为单个控制单元122。例如,在图示170中,控制单元122包括控制单元120a、120b、…、120k,它们也可以被称控制单元122的为子控制单元或子单元。在此示例中,每个控制单元120a、120b、…、120k可以处理控制单元122接收到的编程指令115的一个子集,或者可以接收其自己的单独的一组编程指令115。图2示出可扩展的软件限定的量子计算机,下面将更详细地描述,其说明了使用不止一个控制单元120的情况,其中这些控制单元120可以分开实施。

每个控制单元120a、120b、...、120k是独立可编程的,并且可以用于控制(例如,使用控制信号125)单独一组量子位(例如,量子位130)。量子位的数量对于所有控制单元可以相同,或者可以在各个控制单元之间变化,这取决于所接收的编程指令以及控制单元120a、120b、…、120k中的相应一个可以加载或启用的量子位的最大数量。

在另一方面,当使用离子阱技术实施量子位时,每个控制单元120a、120b、...、120k处理离子阱的不同区域中的量子位。然后可以通过与离子阱中的相邻区域相关地使用这些控制单元来扩展软件限定的量子计算机。

图1c和1d分别示出图示180和190,以说明在不同控制单元之间(例如,离子阱中不同区域之间)“搬运”离子或原子。例如,在图示180中,控制单元120a控制x个量子位(例如,离子或原子),并且控制单元120b控制y个量子位(例如,离子或原子)。虚线表示虽然将控制单元120a和控制单元120b示出为分离的装置,但是它们可以可选地被一体地实施为同一结构的一部分(例如,图1b中的控制单元122)。

图示190示出将z个量子位从控制单元120a控制的量子位“搬运”或转移到控制单元120b控制的量子位。作为该处理的结果,让控制单元120a控制(x-z)个量子位,并让控制单元120b控制(y+z)个量子位。在一个示例中,如果两个控制单元最初都处理了三十(30)个离子或原子,并且有五(5)个离子或原子被搬运或转移,那么让控制单元120b控制或处理三十五(35)个离子或原子,并让控制单元120a控制或处理二十五(25)个离子或原子。这些被搬运或转移的离子或原子可用于将信息从一组量子位传送到另一组量子位。

基于图1b-1d中描述的附加方面,软件限定的量子计算机(例如,图1a中的软件限定的量子计算机100的变体)可以包括第一控制单元(例如,控制单元120a)和第二控制单元(例如,控制单元120b),其中第一控制单元被配置为从软件程序接收编程指令(例如,编程指令115)并生成第一控制信号(例如,控制信号125a),并且通过来自第一控制单元的第一控制信号启用和控制第一多个量子位(例如,x个量子位),并且其中第二控制单元被配置为从软件程序接收编程指令并生成第二控制信号(例如,控制信号125b),并且通过来自第二控制单元的第二控制信号启用和控制第二多个量子位(例如,y个量子位)。在这样的量子计算机中,可以动态地改变包括第一控制单元和第二控制单元的控制单元的数量(例如,基于所需的量子位的数量和控制那些量子位所需的控制单元的数量来增加或减少)。

第一控制单元还被配置为搬运一数量的要由第二控制单元控制的第一多个量子位(例如,z个量子位),使得第二多个量子位的数量增加了所搬运的第一多个量子位的数量(例如,y+z个量子位)。仍由第一控制单元控制的量子位的数量减少了搬运走的量子位的数量(例如x–z个量子位)。

由第一控制单元接收的编程指令可以与由第二控制单元接收的编程指令不同。由第一控制单元接收的编程指令包括用于搬运要由第二控制单元控制的所述数量的第一多个量子位的通信指令。

在另一方面,所搬运的该数量的第一多个量子位包括与第一多个量子位相关联的信息,并且该信息通过所搬运的该数量的第一多个量子位被传送到第二多个量子位。所搬运的要由第二控制单元控制的该数量的第一多个量子位包括一个或多个量子位,并且所述一个或多个量子位的搬运建立了在第一多个量子位和第二多个量子位之间的通信信道。

在另一方面,第一多个量子位包括由来自第一控制单元的控制信号启用和控制的存储器/操作量子位(例如,参见图2中的存储器/操作量子位130a)和通信量子位(例如,参见图2中的通信量子位130b),并且所搬运的该数量的第一多个量子位包括所述通信量子位中的一个或多个。

可以根据以上关于图1a-1d描述的技术,通过调整离子或原子的数量以及控制该离子或原子所需的控制单元的数量来扩展软件限定的量子计算机的能力。下面通过图2更详细地描述这种扩展后的能力。

图2示出图示200,其说明根据本公开的各方面的可扩展的软件限定的量子计算机或量子计算系统的示例。图2中的图示200中所示的可扩展的量子计算系统遵循图1a和图1b-1d中的图示100中所示的系统的一些架构方面。例如,图示200中的系统包括程序110a,程序110a向具有控制单元120a和通信控制单元220a(在图2中称为通信控制单元220a)的模块210a(模块1)提供编程指令115a。编程指令115a可以用于对控制单元120a进行编程,以通过控制单元120a产生的控制信号影响对已经加载到模块210a内的一个或多个量子位的一组指令。此外,编程指令115a可用于对通信控制单元220a进行编程,以通过通信控制单元220a产生的控制信号影响对一个或多个量子位的一组指令,以启用、实施或控制与交换机/路由器单元230的通信信道225a。

程序110a还可以向模块210b(模块2)提供编程指令115b,模块210b被配置为包括控制单元120b和通信控制单元220b(在图2中被称为通信控制单元220a),通信控制单元220b继而可以启用、实施或控制与交换机/路由器单元230的通信信道225b。如图示200中所示,该系统中使用的模块的数量是可配置或可扩展的,并且最多可以有k个模块,其中模块210k(模块k)还可以包括控制单元和通信控制单元(除了多个内部量子位之外),并且可以启用模块210k和交换机/路由器单元230之间的通信信道225k。交换机/路由器单元230被配置为通过模块与交换机/路由器单元230之间的交互来提供不同模块之间的连接性。

图2中的通信控制单元220a和220b可以独立于它们相应的控制单元120a和120b来实施,或者可以集成在它们相应的控制单元120a和120b内。使用通信控制单元220a和220b以及交换机/路由器单元230实现的通信也可以至少部分地使用图1c和1d中描述的搬运技术来完成或实现,其中来自一组量子位的信息可用于作为搬运量子位的结果的另一组量子位。

在每个模块210a、...、210k内,存在可以由相应的控制单元和通信控制单元控制的一数量的量子位130。其中一些量子位可以用于存储器/操作(例如,量子位130a),而其他量子位可以是用于启用通信信道225的通信量子位(例如,量子位130b)。例如,当使用受困离子技术实施模块中的量子位130时,存储器/操作量子位130a可基于171yb+原子离子,而通信量子位130b可基于138ba+原子离子。其他种类和/或同位素也可以用于存储器/操作和通信量子位对。存储器/操作量子位130a由来自相应的控制单元的控制信号启用和控制,并且通信量子位130b由来自相应的通信控制单元的控制信号启用和控制。

在另一方面,硬件配置的特定实例(例如,图1a-1d和图2中描述的系统的硬件配置)可以使用硬件描述语言(hdl)的量子版本来提供,其获得每个硬件(或一组量子位)实例中的关键资源、它们的可用性和相对连接以及由该配置启用的量子硬件的低级功能。它还将具有接口,由较高级别的软件生成的量子程序将控制硬件对该接口的操作(例如,参见程序110、110a和控制单元120、120a,120b)。

在又一方面,本公开中描述的方法还确保了量子程序(例如,将使用qc或qc系统实现的程序或指令)的最大可移植性,因为使用软件限定的架构允许代码独立于qc或qc系统的硬件特性的底层细节。即,图1a和图2中的程序110和110a可以被分别移植。

在另一方面,本公开中描述的方法的灵活性允许使用优化的图放置(graphplacement)和嵌入算法,通过使用启发式算法(例如,定制禁忌搜索(tabusearch,ts))和深度学习两者,在不同的软件限定的架构之间移植程序。使用定制禁忌搜索用于启发式算法可能涉及使用全局优化算法和元启发式或元策略来控制嵌入的启发式技术。

在另一方面,本公开中描述的方法使得能够使用形式方法和算法方法二者来验证程序移植到软件限定的架构。

在另一方面,本公开还描述了资源管理器的实施方式(例如,参见图3中的图示300中的资源管理器330),以交付最有效的软件限定的架构,用于将要进行的作业。优化是通过以下参数完成的:

(a)软件限定的架构有两个方面:量子位的可变数量和可变的连接性。资源管理器可以被配置为在针对所请求的架构优化资源时获取这两个方面。

(b)当离子的数量小于32时(例如,对于受困离子的qc系统),离子与32个硬接线信道或交互对准的最佳性。找到正确的对准可能是无关紧要的。对于n个离子,其中n<32,有33-n种方式使离子对准。假定所有这些对准的成本相同,但是在系统开始校准时,可以更好地了解成本。上面描述的资源管理器被配置为在存在非无关紧要的成本函数时提供优化。

(c)如果量子位较少,则可以在波形(例如,模拟控制信号)的计算时间上获得收益,这有利于使用其中所使用的量子位的数量可以动态配置的软件限定的架构。即,量子位的数量的可变性或可配置性在软件限定的qc的硬件方面提供益处。

(d)通过例如允许建立鲁棒的应用程序编程接口(api)栈,连接的可变性将在软件方面提供益处。尽管当前系统可以固有地具有受限图形,但在硬件方面也可能会有益处。

在又一方面,本公开中描述的软件限定的qc方法也可以适应来自云计算的弹性的概念。例如,可以实施一种弹性计算环境,其中可以在程序运行期间将量子位从保留区(已加载到单独的阱区)搬运到计算区,然后按需返回。即,在程序运行期间对系统的需求可以用于动态地修改(例如,向其提供弹性)计算环境。因此,可以在陷阱中具有容易获得的区域,其中具有额外的计算资源(例如,预加载的离子),以轻松地按需扩展计算环境。

在另一方面,本文中针对软件限定的qc和qc/qip系统描述的架构可以支持同质和异质多核量子处理单元(qpu)系统。同质多核qpu是相同陷阱(例如,离子阱)的网络。另一方面,异质多核qpu是不同配置的陷阱的网络,或者是使用不同技术(例如,离子阱,超导电路等)构建的qpu的网络。

对于具有不同技术的异质多核qpu网络,可能需要使用换能器(例如,量子换能器)来连接不同物理系统的量子位。在一种实施方式中,可以在不同技术的两个量子位之间使用单个换能器。在另一种实施方式中,可以基于连接或交互的方向来使用不同的换能器(例如,在从量子位1到量子位2的方向上使用第一换能器,而在从量子位2到量子位1的方向上使用第二换能器)。

关于本公开描述的软件限定的qc和qc/ip系统的各个方面包括与架构、实施、配置和优化相关的各方面,包括但不限于架构图、电路图、可移植性、二次分配问题、深度最佳布局、(启发式)最佳嵌入的顺序、单指令多数据(simd)qc、量子电路编译、量子电路设计和量子电路优化。

图3示出图示300,其说明了根据本公开各方面的用于软件限定的qc的系统架构的示例。图示300中所示的系统架构基于离子阱或离子阱技术,并且以示例而非限制的方式提供。基于与离子阱技术不同的技术(例如,受困中性原子或超导电路)的系统也可以使用关于图3中的图示300描述的技术来实施。

软件限定的量子计算机通常可以包括三个主要架构层。位于最顶部的是api栈310,其被配置为向计算机用户显示可编程接口。典型地,api栈310不显示硬件可变性并且假定虚拟的大型完全连接的量子计算机。也就是说,计算机用户无需知道硬件的配置方式。

量子操作系统(os或qos)320位于硬件和api栈310之间。软件限定的量子架构的基元(primitives)可以被显示并且在该层内部是可编程的。量子os320可以包括资源管理器330(上面至少部分地进行了描述),以找到处理量子位分配的优化方式。即,资源管理器330的作用是识别最有效的软件限定的架构,用于即将执行的作业。量子位分配可以是内部或内量子核(例如,参见量子核370a、370b和370m)。量子核也可被称为量子单元、核单元或简称为核。如在本公开中使用的,除非另有说明,否则量子核可以表示例如单个离子阱(尽管也可以使用其他技术的量子核)。应当理解,单个离子阱可以包括一个或多个量子位。如果网络或架构中的核单元不相同,则该架构称为异质架构(这可意味着不同的离子阱,或由不同技术制成的不同核,如离子阱和受困中性原子,或超导量子位)。另一方面,当网络或架构具有相同的核单元(例如,相同的离子阱)时,该架构被称为同质架构。资源管理器330被配置为决定或确定如何在核单元(例如,离子阱)内分配和对准量子位。资源管理器330还被配置为确定最佳量子位连接(例如,交互140)和通信信道(例如,通信信道225)(例如,光子互连),以用于在多个核单元(例如,陷阱)上的量子位分配。在资源管理器330确定了映射之后,量子os320内的交换机340可以路由所有操作和读出。交换机340可以包括软交换机350和硬交换机360,其可以具有连接到量子核的经典信道380(虚线)和量子信道385(实线)。

在软件限定的量子架构中的资源分配的另一方面,图4a-4c示出流程图400,其说明根据本公开的各方面的资源管理器工作流的示例。

在软件限定的量子架构中,有许多不同种类的资源可供资源管理器(例如,资源管理器330)处置。这些资源包括量子位、连接性、相干性、核单元(例如,离子阱)之间的(光子)互连网络、经典通信信道、以及其他类型的资源。软件限定的量子架构需要通过资源管理器在合理的时间范围内尽可能优化资源利用。当经由api栈310提交程序(例如,一组指令)时(参见405),其被翻译成下一级中间表达,然后被移交给资源管理器(参见410)。资源管理器从该类似网表的表达,估计执行程序的成本(参见415)。资源经理将使用此成本来做出有关资源分配的决策。资源管理器做出的第一个决定是硬件是否具有用于执行该程序的充分必要资源(参见420)。如果它是一个多量子核系统,则资源管理器分配该程序可以在其上运行的最低数量的核(参见425)。如果有不止一组最低数量的核,则资源管理器选择分配该程序成本最低的核。例如,当前请求的操作是接着已在某个软件限定的架构上执行的一系列先前操作(参见430)。资源管理器可以在将该操作映射到现有软件限定的架构的成本(参见440)与创建源于该操作的软件限定的架构的成本(参见435)之间进行比较,并做出相应的决定(请参见445、450)。如果有任何决定增加了电路深度(请参见455),或者如果发生了舍入错误(参见465),则需要升起适当的旗标(参见460、470),同时返回结果。然后,可以将作业置于目标核的优先队列(参见475)。

与本公开中描述的软件限定的量子计算机架构相关的另一方面是编译量子程序的需要。参考图5,图5示出了图表500,其说明根据本公开的各方面的api访问点的级别的示例。图表500示出作为顶级的客户端510,其后是restapi520、量子编程语言(qpl)530、高级中间表达(hlir)540、用于软件限定的架构的中级中间表达(mlir)550、量子硬件限定或描述语言(hdl)560、低级中间表达(llir)570、量子控制系统语言580、以及作为最低级的机器代码590。

在理想系统实施方式中,可以不通过最高级别的api(例如,restapi520)来显示软件限定的量子架构。可以将使用qpl(例如qpl530)编写的代码翻译为高级中间表达(540),其仍可以采用理想的量子架构。可以访问软件限定的量子架构的语言基元的解释器可以将代码翻译为中级中间表达(550)。然后可以将该中级表达翻译成硬件描述语言(hdl)或量子hdl(qhdl)的量子版本(560)。需要鲁棒类型系统来限制程序员的错误从软件限定架构的高级中间表达传播到中级中间表达。鲁棒类型系统的开发可以通过类型理论的应用来完成。这些应用的标准逻辑语言是floyd-hoare逻辑和直觉类型理论。虽然将floyd-hoare逻辑用于命令式中级中间表达可能是很自然的,但如果该表达具有分布式量子计算机的功能元素,则可以从直觉类型理论的使用中受益。如上所述,在使用qhdl之后,可以获得或应用低级中间表达(570)、量子控制系统语言(580)和机器代码(590)。

进一步关于量子程序的编译,图6示出了图示600,图示600说明根据本公开的各方面的量子编译器的典型组件的示例。如图示600中所示,量子编译器620接收量子编程语言源代码610。量子编译器620包括词汇分析器630和语义分析器640,后者又具有操作语义分析器650和指称语义分析器660。量子编译器620的输出是中间表达670。

在软件限定的架构的情况下,量子编译器620的变体被用于将源代码(610)的高级中间表达(hlir)翻译为中级中间表达(mlir)(670))。hlir经过词汇分析器630,词汇分析器630检查或验证程序的语法是否合适。目的是查看软件限定的架构的基元是否正用于适当格式化的参数和指令。然后,语义分析器640确定代码的意义。如图示600中所示,这在两个级别上完成。操作语义分析器650检查代码的组织是否符合软件限定的架构的语言。然后,指称语义分析器660验证每个语句的输入和输出的预期和实际类型的等效性。一旦语义分析完成,就完成了将高级中间表达(hlir)翻译为中级中间表达(mlir),其中mlir包含软件限定的架构的语言基元。

与软件限定的qc架构的运行有关的另一方面是异常处理。在软件限定的量子计算机上执行程序时,可能会发生异常。图7a-7c示出了说明根据本公开的各方面的异常分类的示例的图示700、740和750。如图7中的图示700中所示,异常710可以来自硬件720或软件730。用于软件限定的qc架构的api栈(例如,参见api栈310)通常足够鲁棒,以轻松处理这些异常并以适当级别的摘要返回异常消息。

图7b中的图示740示出了硬件异常720。这些异常可以包括但不限于退相干错误721、测量错误722、搬运错误725、复位726、中断727、隐形传态错误728和频率拥挤729。测量错误722可能来自全局测量错误723或局部测量错误724。

图7c中的图示750示出了软件异常730。这些异常可以包括但不限于栈跟踪760、错误770和程序员发起780。唯一的程序员发起异常是测量。软件错误770包括但不限于地址错误771、旋转舍入错误772、特权扰乱错误773、非法指令错误774、被零除错误775、克隆错误776和断层扫描错误777。在软件限定的qc架构中,在提取硬件错误和处理大量软件错误中,中间层起到至关重要的作用。

现在参考图8,图8说明了根据本公开的各方面的示例性计算机装置800。例如,计算机装置800可以例如代表单个计算装置、多个计算装置或分布式计算系统。计算机装置800可以被配置为量子计算机(或qc/qip系统)、经典计算机或量子和经典计算功能的组合。例如,计算机装置800可以实施本文描述的软件限定的量子计算机的一些或全部特征,包括模块化可扩展性、架构、资源管理器功能和工作流、api访问点以及异常分类/处理。此外,计算机装置800可以实施经典计算机的各方面以执行某些功能,如编译、优化等。另外,计算机装置800可以顺序和/或同时实施经典计算机和量子计算机特征的组合,以便实现本文描述的各个方面。这样,计算机装置800可以包括关于图1-3描述的硬件和/或软件组件中的一个或多个。

更一般地,计算机装置800可以包括处理器848,用于执行与本文描述的一个或多个特征相关的处理功能。处理器848可以包括单组或多组处理器或多核处理器。此外,处理器848可以被实施为集成处理系统和/或分布式处理系统。

处理器848可以包括中央处理单元(cpu)、量子处理单元(qpu)或此二者。这样,处理器848可以用于执行或实施经典操作、量子操作或经典操作和量子操作的组合。

处理器848可以用于例如实施控制单元、通信控制单元和/或交换机/路由器单元中的至少一部分(例如,参见图1和图2),以运行程序、api和/或qos中的至少一部分(例如,参见图1-3),和/或实施与量子位控制相关的各方面(例如,参见图1-3)。

处理器848可以用于例如执行图4a-4c中描述的资源管理器工作流,实施图5中描述的应用程序编程接口(api)访问点的级别,实施图6中描述的编译器架构的功能,和/或实施图7a-7c中描述的异常。

计算机装置800可以包括用于存储数据的存储器850,存储器850可以包括可由处理器848执行的指令,以执行本文描述的功能。在一种实施方式中,存储器850可以对应于计算机可读存储介质,其存储代码或指令,以执行本文描述的功能或操作中的一个或多个。在一个示例中,存储器850可以包括图1和图2中的程序110和110a。在另一示例中,存储器850可以用于启用图3中描述的软件限定的量子计算机架构(例如,通过存储qos320的至少一部分)、图4a-4c中的资源管理器工作流、图5中描述的api访问点的级别、图6中描述的编译器架构和/或图7a-7c中描述的异常。

此外,计算机装置800可以包括通信组件852,通信组件852用于利用本文描述的硬件、软件和服务来建立和维持与一方或多方的通信。通信组件852可以在计算机装置800上的组件之间以及计算机装置800与外部装置之间进行通信,该外部装置例如是位于通信网络上的装置和/或串行或本地连接到计算机装置800的装置。例如,通信组件852可以包括一个或多个总线,并且可以进一步包括分别与发送器和接收器相关联的发送链组件和接收链组件,可操作用于与外部装置接口。

在一方面,当计算机装置800实施量子操作时,通信组件852可以包括和/或实施图2中的通信控制单元(例如,通信控制单元220a和220b)和交换机/路由器单元230的各方面。

另外,计算机装置800可以包括数据存储854,其可以是硬件和/或软件的任何合适的组合,并提供关于本文描述的实施方式采用的信息、数据库和程序的大容量存储。例如,数据存储854可以是用于操作系统840(例如,经典os、量子os或两者)的数据存储库。在一种实施方式中,数据存储854可以包括存储器850。

计算机装置800还可以包括用户接口组件856,用户接口组件856可操作以从计算机装置800的用户接收输入,并且还可操作以生成用于呈现给用户的输出。用户接口组件856可以包括一个或多个输入装置,包括但不限于键盘、数字键盘、鼠标、触敏显示器、数字化仪、导航键、功能键、麦克风、语音识别组件、能够从用户接收输入的任何其他结构或其任意组合。此外,用户接口组件856可以包括一个或多个输出装置,包括但不限于显示器、扬声器、触觉反馈机构、打印机、能够向用户呈现输出的任何其他机构或其任意组合。

在一种实施方式中,用户接口组件856可以发送和/或接收与操作系统840的操作相对应的消息。此外,处理器848可以执行操作系统840和/或应用程序或程序,并且存储器850或数据存储854可以存储它们。

当计算机装置800被实施为基于云的基础结构解决方案的一部分时,用户接口组件856可用于允许基于云的基础结构解决方案的用户与计算机装置800进行远程交互。例如,用户可以通过提供将被编程以由计算机装置800执行的算法或仿真来进行交互。

在又一方面,当实施量子计算机或qc/qip系统的各方面时,计算机装置800可以包括量子位硬件870。如上所述,量子位硬件870可以基于一种量子技术,如受困离子技术,在这种情况下,量子位硬件870包括至少一个离子阱以执行量子操作。量子位硬件870可以基于其他类型的量子技术,如超导技术,在这种情况下,量子位硬件870包括用于执行量子操作的超导电路。

尽管已经根据所示的实施方式提供了本公开,但是本领域的普通技术人员将容易认识到,实施例可以存在变型,并且那些变型将在本公开的范围内。因此,本领域的普通技术人员可以做出许多修改而不脱离所附权利要求的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1