CN111931939B - 一种单振幅量子计算模拟方法 - Google Patents
一种单振幅量子计算模拟方法 Download PDFInfo
- Publication number
- CN111931939B CN111931939B CN201910394102.9A CN201910394102A CN111931939B CN 111931939 B CN111931939 B CN 111931939B CN 201910394102 A CN201910394102 A CN 201910394102A CN 111931939 B CN111931939 B CN 111931939B
- Authority
- CN
- China
- Prior art keywords
- quantum
- vertex
- edge
- tensor
- value
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000004088 simulation Methods 0.000 title claims abstract description 57
- 239000002096 quantum dot Substances 0.000 claims abstract description 45
- 238000004364 calculation method Methods 0.000 claims abstract description 31
- 239000011159 matrix material Substances 0.000 claims description 66
- 230000009467 reduction Effects 0.000 claims description 49
- 230000001174 ascending effect Effects 0.000 claims description 13
- 230000015654 memory Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000000630 rising effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000010354 integration Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000004927 fusion Effects 0.000 description 3
- 230000005610 quantum mechanics Effects 0.000 description 3
- 239000004178 amaranth Substances 0.000 description 2
- 239000001427 calcium tartrate Substances 0.000 description 2
- 238000005094 computer simulation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000002787 reinforcement Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- TVEXGJYMHHTVKP-UHFFFAOYSA-N 6-oxabicyclo[3.2.1]oct-3-en-7-one Chemical compound C1C2C(=O)OC1C=CC2 TVEXGJYMHHTVKP-UHFFFAOYSA-N 0.000 description 1
- 239000004236 Ponceau SX Substances 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种单振幅量子计算模拟方法,方法包括:针对分布式集群的每个计算节点,获得目标量子程序;构建所述目标量子程序对应的无向图;其中,所述无向图的顶点表征量子逻辑门操作前或操作后的、所操作量子比特的量子态,所述无向图的一条边对应一张量;获得待测量的目标单振幅对应的量子态,基于所述量子态和无向图,并配合所述计算节点对应的GPU,计算所述量子态的子振幅;其中,所述子振幅为所述无向图对应的振幅;将所述子振幅返回至所述分布式集群的主节点,以使所述主节点归约各个子振幅,得到所述量子态的振幅,作为目标单振幅。利用本发明实施例,能够实现涉及50个甚至更多个量子比特的量子计算模拟。
Description
技术领域
本发明属于量子计算技术领域,特别是一种单振幅量子计算模拟方法。
背景技术
量子计算机是一类遵循量子力学规律进行高速数学和逻辑运算、存储及处理量子信息的物理装置。当某个装置处理和计算的是量子信息,运行的是量子算法时,它就是量子计算机。
量子计算机可执行多种经典计算机不能实现的任务,比如量子模拟和分解大质因数。在量子计算前进的道路上,为了实现“量子霸权”,需要先实现量子比特数在50以上并且有着高保真度的量子计算机。但在真正实现之前,可以先通过量子计算的相关理论,进行量子计算模拟,实现量子计算机的软硬件解耦,为量子程序和量子应用的发展打下基础。
量子计算模拟是一个借助数值计算和计算机科学来仿真遵循量子力学规律的模拟计算,作为一个仿真程序,它依据量子力学的量子比特的基本定律,利用计算机的高速计算能力,刻画量子态的时空演化。
目前,量子计算模拟,通常采用全振幅模拟,即一次性模拟量子比特末态的所有振幅,但全振幅模拟基于酉变换进行计算,其内存开销随量子比特数呈指数增长。如要对涉及30个量子比特的量子计算进行模拟时,内存开销需16GByte(吉字节);40个量子比特时,内存开销需16TByte(太字节),即210*(16GByte);50个量子比特时,内存开销则需16PByte(拍字节),即210*(16TByte)。这对于提供量子计算模拟服务的普通云平台甚至是超级计算平台来说都是难以承受的,学术界目前全振幅模拟器最大仅可模拟到49个量子比特,是基于世界最大的超级计算机的模拟结果,但它并没有对外提供云服务,这非常不利于量子程序和量子应用的研究与发展。此种情况下,单振幅模拟,即一次性只模拟出一个振幅的方案开始被提出,而这种模式则对内存需求将小很多。因此,可以看出,在当前平台内存资源受限的情况下,单量子态分量振幅的量子计算模拟的相关研究与实现对于量子计算的发展显得尤为重要。
发明内容
本发明的目的是提供一种单振幅量子计算模拟方法,以解决现有技术中的不足,以实现涉及50个甚至更多个量子比特的计算模拟。
本发明采用的技术方案如下:
一种单振幅量子计算模拟方法,所述方法包括:
针对分布式集群的每个计算节点,获得目标量子程序;
构建所述目标量子程序对应的无向图;其中,所述无向图的顶点表征量子逻辑门操作前或操作后的、所操作量子比特的量子态,所述无向图的一条边对应一张量;
获得待测量的目标单振幅对应的量子态,基于所述量子态和无向图,并配合所述计算节点对应的GPU,计算所述量子态的子振幅;其中,所述子振幅为所述无向图对应的振幅;
将所述子振幅返回至所述分布式集群的主节点,以使所述主节点归约各个子振幅,得到所述量子态的振幅,作为目标单振幅。
可选的,所述构建所述目标量子程序对应的无向图,包括:
解析所述目标量子程序,得到记录量子程序信息的链表;
遍历所述链表,当链表中量子逻辑门的类型为第一单量子门时,创建一条张量阶数为1的边;其中,该边与所述第一单量子门所操作的量子比特对应顶点链的最后一个顶点连接,第一单量子门的酉矩阵为对角矩阵;
当链表中量子逻辑门的类型为第二单量子门时,创建一条张量阶数为2的边和一个与该边连接的顶点;其中,该边与所述第二单量子门所操作的量子比特对应顶点链的最后一个顶点连接,第二单量子门的酉矩阵为非对角矩阵;
当链表中量子逻辑门的类型为第一双量子门时,创建一条张量阶数为2的边;其中,该边与所述第一双量子门所操作的两量子比特分别对应的顶点链中的最后一个顶点连接,所述第一双量子门的酉矩阵为对角矩阵;
当链表中量子逻辑门的类型为第二双量子门时,创建一条张量阶数为4的边和两个与该边连接的顶点;其中,该边与所述第二双量子门所操作的两量子比特分别对应的顶点链中的最后一个顶点连接,第二双量子门的酉矩阵为非对角矩阵;
得到所述目标量子程序对应的无向图。
可选的,所述基于所述量子态和无向图,并配合所述计算节点对应的GPU,计算所述量子态的子振幅,包括:
调用所述计算节点对应的GPU,对所述无向图的特定顶点所连接边的张量分别进行确定值降阶;其中,所述特定顶点为每一量子比特对应顶点链的第一及最后一个顶点;
删除所述特定顶点;
接收所述主节点分配的目标顶点的取值,基于所述目标顶点的取值,拆分当前无向图,针对拆分得到的每一子无向图,调用所述GPU对目标顶点连接边的张量分别进行确定值降阶;
针对该子无向图中的每一顶点,配合所述GPU将该顶点的所有连接边融合成一条新边,对所述一条新边的张量进行降阶,并删除该顶点;
对所有降阶后的新边的张量值求积,得到所述量子态的、该子无向图对应的第一子振幅;
对自身内部所有子无向图的第一子振幅求和,得到所述量子态的子振幅。
可选的,所述对所述无向图的特定顶点所连接边的张量分别进行确定值降阶,包括:
所述计算节点对应的GPU,针对每一条特定顶点所连接的边,根据降阶后的张量阶数和GPU中每个线程块中的线程个数,设置线程块数;
根据线程块序号、每个线程块中的线程个数及线程序号,计算降阶后张量的第一元素编号,并计算所述第一元素编号对应降阶前张量的两个第二元素编号;其中,所述元素编号的位数与当前边连接的顶点位数一一对应,所述元素编号每一位的值为对应顶点位的顶点取值;
从所述两个第二元素编号中,确定特定顶点位所对应编号位上的值为预设确定值的第二元素编号;
获取确定出的第二元素编号所对应的第二元素值,将第二元素值确定为所述第一元素编号对应的第一元素值。
可选的,所述接收主节点分配的目标顶点的取值,基于所述目标顶点的取值,拆分当前无向图,针对拆分得到的每一子无向图,调用所述GPU对目标顶点连接边的张量分别进行确定值降阶,包括:
接收主节点均分的目标顶点的一种或多种取值;其中,所述目标顶点为当前无向图中所连接边数最多的前m个顶点,所述m个顶点包含2m种取值,每个顶点的取值为0或1,m为正整数,计算节点的数量为2n,n为正整数,且n大于0、小于等于m;
针对均分到的每种顶点取值,将计算节点自身的一个无向图拆分为一个或多个子无向图;
针对每一子无向图,遍历目标顶点连接的边,调用所述GPU对所述目标顶点连接边的张量分别进行确定值降阶。
可选的,所述配合所述GPU将该顶点的所有连接边融合成一条新边,包括:
针对该顶点的所有连接边,确定待融合的第一条边和第二条边;
根据所述第二条边中不与第一条边相连的顶点,调用所述GPU对第一条边的第一张量进行升阶,以升阶后的张量更新所述第一张量;
删除第二条边,将第二条边中不与第一条边相连的顶点连接至第一条边,得到融合后的中间边;
根据记录的第一条边与第二条边的顶点编号之间的对应关系,调用所述GPU计算所述中间边的张量元素;
返回所述确定待融合的第一条边和第二条边的执行步骤,直至计算得到的张量元素为最后一条边的张量元素,将该最后一条边确定为融合成的一条新边。
可选的,所述对第一条边的第一张量进行升阶,包括:
所述GPU根据所述第一张量的阶数和所升的阶数,计算升阶后的张量阶数;
根据所述升阶后的张量阶数和GPU中每个线程块中的线程个数,设置线程块数;
根据线程块序号、每个线程块中的线程个数及线程序号,计算升阶后的张量的第一元素编号;
根据该第一元素编号、所升的阶数和第一张量的元素,计算升阶后的张量的元素。
可选的,所述计算所述中间边的张量元素,包括:
所述GPU根据更新后的第一张量的阶数和GPU中每个线程块中的线程个数,设置线程块数;
根据线程块序号、每个线程块中的线程个数及线程序号,计算中间边的张量的第一元素编号;
根据所述对应关系,确定所述第一张量中每一元素在所述第二条边的第二张量中的对应元素;
遍历所述第一张量中的每一元素,以该元素与其在所述第二张量中对应元素的乘积更新该元素。
可选的,所述对所述一条新边的张量进行降阶,包括:
所述GPU根据所述一条新边降阶后的张量阶数,设置线程块数;
根据线程块序号、每个线程块中的线程个数及线程序号,计算降阶后张量的第一元素编号,并计算所述第一元素编号对应降阶前张量的两个第二元素编号;其中,所述元素编号的位数与当前边连接的顶点位数一一对应,所述元素编号每一位的值为对应顶点位的顶点取值;
获取该两个第二元素编号一一对应的两个第二元素值,对该两个第二元素值求和,将求得的和确定为所述第一元素编号对应的第一元素值。
可选的,所述第一元素编号的计算公式为:
Idx=block_id*num+thread_id
其中,所述Idx为第一元素编号,block_id为线程块序号,num为每个线程块中的线程个数,thread_id为线程序号。
与现有技术相比,本发明能够每次只计算所涉量子比特的一个目标单振幅,具体地,将目标量子程序映射到无向图上,并结合路径积分法,将无向图拆分至多个计算节点上,由每个计算节点与下属GPU配合计算对应的子无向图。整个计算过程多是基于张量中元素的简单运算,与现有技术中基于酉矩阵的全振幅模拟相比,大大降低了对内存的需求,且计算量不随量子比特指数上升,从而可以实现涉及50个甚至更多个量子比特的量子计算模拟;GPU执行大量并行计算的性能较强,使得量子计算模拟效率较高。目前,应用本发明实施例提供的技术方案,最大已可实现涉及196个量子比特的量子计算模拟。
此外,实际应用中,有时只需要量子比特全振幅中的一个或多个振幅,在这种情况下,若采用现有技术中的全振幅模式,即一次性模拟出所有的振幅,无疑是对内存等资源以及时间的浪费;而应用本发明实施例提供的方法,则可以有针对性地进行一次或多次模拟,模拟出需要的一个或多个单振幅即可,大大节省了资源与时间。
附图说明
图1是本发明量子程序对应量子线路拆分成不同路径的具体示例;
图2是本发明实施例提供的单振幅量子计算模拟方法一种流程图;
图3是本发明实施例提供的单振幅量子计算模拟方法中不同类型量子逻辑门构建的无向图示意图。
具体实施方式
下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
为了实现涉及50甚至更多个量子比特的计算模拟,本发明实施例提供了单振幅量子计算模拟方法及装置。
下面首先对本发明实施例提供的一种单振幅量子计算模拟方法进行介绍。
本领域人员可以理解的是,每个量子比特都可以同时处于|0>和|1>的叠加态,一个量子比特的量子态可以表示为a|0>+b|1>,其中,a、b分别为|0>、|1>的振幅,均为复数。测量后,量子态塌缩至一个固定的量子态,其中,塌缩至|0>的概率是a2,塌缩至|1>的概率是b2,a2+b2=1。而n个量子比特的量子态则为2n个量子态的叠加态。举例而言,3个量子比特组成的量子态/>为23(即8)个量子态的叠加态,其中,这8个量子态分别为|000>、|001>、|010>、|011>、|100>、|101>、|110>和|111>,此时,3个量子比特组成的量子态/>可以表示为
。
其中,8个量子态中的每个量子态称为一个量子态分量,每个量子态分量对应的振幅,即c0至c7这些复数可称作一个单振幅。全振幅模拟,便是指一次性模拟出n个量子比特的2n个量子态分量的振幅;而单振幅模拟,则是指一次性模拟2n个量子态中的任意一个量子态分量的振幅。
目前,关于量子计算模拟,业内多采用全振幅模式。但对于全振幅模式来说,它所占用的内存通常随模拟的量子比特数呈指数上升,如模拟10个量子比特只需要16KB内存,模拟20个需要16MB内存,模拟30个需要16GB,而要模拟50个量子比特则需要高达16PB的内存,综合世界上所有的计算机内存也不能实现50个甚至更多个量子比特的全振幅模拟。
鉴于此,本发明实施例提供了一种单振幅量子计算模拟方法,应用于分布式集群的计算节点,所有计算节点对应一个主节点,每个计算节点下属(即控制)一个或多个GPU,一个计算节点控制的GPU数量可以是2的正整数次方,这样是为了处理量子信息比较方便,因为量子比特的量子态数量是2的指数。以下以一个计算节点控制一个GPU为例进行说明。优选地,分布式集群可以是超级计算机集群(如神威太湖之光超级计算机平台)。
需要说明的是,量子程序是由量子语言编写的一串能够在量子计算机上运行的指令序列,实现了对量子逻辑门操作的支持,并最终实现对量子计算的模拟。具体的说,量子程序就是一系列按照一定时序操作量子逻辑门的指令序列。
其中,量子逻辑门是一个基本的、操作一个小数量量子位元(即量子比特)的量子线路。它是量子线路的基础,就像传统逻辑门跟一般数位线路之间的关系。量子逻辑门包括单量子逻辑门、双量子逻辑门以及多量子逻辑门。
而一个量子程序可以包含几十上百个量子逻辑门操作,也可以包含成千上万个量子逻辑门操作。量子程序的执行过程,就是对所有的量子逻辑门按照一定时序执行的过程。需要说明的是,时序即各量子逻辑门被执行的时间顺序。
需要说明的是,量子逻辑门一般使用酉矩阵表示,而酉矩阵不仅是矩阵,也是一种操作和变换。一般量子逻辑门在量子态上的作用是通过酉矩阵左乘以量子态对应的右矢进行计算的。
例如:量子态|0>对应的右矢为,而量子态|1>对应的右矢为/>。
根据酉矩阵类型,量子逻辑门又可以分为对角量子逻辑门和非对角量子逻辑门。其中,对角量子逻辑门指酉矩阵为对角矩阵的量子逻辑门。公知的是,对角矩阵是指主对角线之外的元素皆为0的矩阵,而对角线上的元素可以为0或其他值。
如单位矩阵便是典型的对角矩阵。
相对地,主对角线之外有非零元素的矩阵即为非对角矩阵,如;而酉矩阵为非对角矩阵的量子逻辑门即是非对角量子逻辑门。
本领域人员可以理解的是,假设目标量子程序中除量子比特的初始量子态|0…0>和末态外共涉及M1个量子态,那么,由于每个量子比特的状态都可以处于|0>和|1>的叠加态,故针对M1个中的一个量子态,将其拆分成两个量子态分量:|0>和|1>,便可获得初始量子态到末态分量X=|x0…xn-1>的2M1条可能的变换路径,计算每条路径的振幅,再进行求和便可得末态分量,即目标量子态分量的振幅。其中,M1为正整数。
举例而言,目标量子程序涉及2个量子比特,分别为:q0、q1,初始态s0=|00>,目标量子态分量为|11>,该量子程序中包含2个H门(Hadamard Gate,阿达马门):H1、H2,1个CNOT门(Control-not Gate,控制非门)。
如图(1a)所示,给出了该量子程序对应量子线路的简单示意,可以看出,该量子线路除初始量子态|00>和目标量子态分量|11>外,还涉及4个量子态:s0 1、s0 2、s1 1、s1 2,其中每个量子态都可以表示为|0>和|1>的叠加态。若将s1 1拆分成|0>和|1>两部分,那么,由初始量子态|00>到|11>,便可以拆分成如图(1b)和(1c)的两条路径,分别求出初始量子态|00>经两条路径变换为|11>的子振幅,再对子振幅进行求和,便可得出目标量子程序对应的振幅值,完成模拟。
可以理解的是,若将目标量子程序中的M1个量子态,都将其拆分成|0>和|1>两部分,那么,便可获得初始量子态到末态分量的条可能的变换路径,计算每条路径的振幅,再进行求和便可得量子态的目标单振幅。
在一个只有单量子逻辑门和对角双量子逻辑门的量子程序中,给定量子比特的初始量子态为|0…0>,当其末态分量,即目标量子态分量取值为x=|x0…xn-1>时,其振幅的计算公式可以表示为:
(1)
公式(1)为量子力学路径积分方法的基本公式。
需要说明的是,公式(1)中函数均是关于布尔变量的复杂函数,表示量子逻辑门对量子态的贡献,为更好阐述,公式(1)中只体现了三类/>函数中的一个,对其他/>函数做了省略处理;/>取值为{0,1},对应量子位为/>的量子比特经第/>个量子逻辑门作用后量子态的分量。/>函数的取值主要与两个因素相关,一是量子逻辑门操作的量子比特在该量子逻辑门执行前后的量子态,二是量子逻辑门的酉矩阵。
具体地,是一个关于布尔变量/>和/>的复杂函数,取值由两个变量的值和对应对角双量子逻辑门的酉矩阵决定,/>和/>分别对应量子位为/>和/>的两个量子比特未经第/>个对角双量子逻辑门作用前量子态的分量;/>是一个关于布尔变量/>的复杂函数,取值由变量的值和对应对角单量子逻辑门的酉矩阵决定,/>对应量子位为/>的量子比特未经第/>个对角单量子逻辑门作用前量子态的分量;/>是一个关于布尔变量/>和/>的复杂函数,取值由两个变量的值和对应非对角单量子逻辑门的酉矩阵决定,/>和/>分别对应量子位为/>的量子比特在第/>个非对角单量子逻辑门作用前、后量子态的分量。可以理解的是,/>、/>、/>、/>、/>、/>、/>、/>、/>、/>均为非负整数。
本发明实施例提供的一种单振幅量子计算模拟方法,基于公式(1),扩至非对角双量子逻辑门,并将其映射成无向图。具体地,对应无向图的点,/>函数对应无向图的边,将求解公式(1)转换为对无向图的处理,可以理解的是,根据/>的取值可以将无向图进行拆分;更具体地,首先在多个计算节点上构建目标量子程序对应的无向图,再根据不同的顶点取值将无向图进行拆分,获得不同的子无向图,然后通过对子无向图的计算,获得对应路径的振幅,最终将所有路径的振幅合并,获得目标量子态分量的对应振幅。
如图2所示,本发明实施例提供的一种单振幅量子计算模拟方法,可以包括如下步骤:
S201,针对分布式集群的每个计算节点,获得目标量子程序;
站在计算节点的角度,每个计算节点均会获得一份相同的、由主节点发送的目标量子程序,该程序优选由现有的QRunes语言编写,也可由其他可行的量子语言编写而成,计算节点通常为计算机中的CPU,主节点也可为CPU且可将第一个计算节点作为主节点,其能够取用户输入的量子程序,以下以计算节点为CPU进行说明。
S202,构建所述目标量子程序对应的无向图;其中,所述无向图的顶点表征量子逻辑门操作前或操作后的、所操作量子比特的量子态,所述无向图的一条边对应一张量;
首先,可以解析目标量子程序,得到记录量子程序信息的链表。接着遍历该链表,依次读取链表中各个量子逻辑门的类型及酉矩阵形式,添加顶点和边,构建出量子程序的无向图。一种具体实现方式如下:
当链表中量子逻辑门的类型为第一单量子门时,创建一条张量阶数为1的边;其中,该边与所述第一单量子门所操作的量子比特对应顶点链的最后一个顶点连接,第一单量子门的酉矩阵为对角矩阵;
当链表中量子逻辑门的类型为第二单量子门时,创建一条张量阶数为2的边和一个与该边连接的顶点;其中,该边与所述第二单量子门所操作的量子比特对应顶点链的最后一个顶点连接,第二单量子门的酉矩阵为非对角矩阵;
当链表中量子逻辑门的类型为第一双量子门时,创建一条张量阶数为2的边;其中,该边与所述第一双量子门所操作的两量子比特分别对应的顶点链中的最后一个顶点连接,所述第一双量子门的酉矩阵为对角矩阵;
当链表中量子逻辑门的类型为第二双量子门时,创建一条张量阶数为4的边和两个与该边连接的顶点;其中,该边与所述第二双量子门所操作的两量子比特分别对应的顶点链中的最后一个顶点连接,第二双量子门的酉矩阵为非对角矩阵;
遍历完成,添加顶点和边完毕,即可得到所述目标量子程序对应的无向图。
需要说明的是,构建无向图过程中,在创建顶点时,会记录该顶点属于当前量子逻辑门所操作的量子比特的第几个顶点。
构建好的无向图中,每个量子比特会对应一个顶点链信息,顶点链信息包括第一个顶点至最后一个顶点的各顶点取值、顶点连接的边信息以及顶点标识。其中,顶点标识唯一确定一个顶点,根据该标识可以确定对应顶点属于哪个量子比特及其取值、连接边信息等;顶点的值确定后,应为0或1;但当顶点的值不确定时,可以为空,也可以为任一约定的符合顶点的取值类型的数值或字符,比如-1,用以在实现过程中对顶点的取值情况进行判断。其中,顶点的值可以用张量表示,也可以用变量或者其他合理的数据类型来表示。
无向图还包括边的张量信息,可以包括张量数组以及该张量对应边连接的顶点的标识。
其中,无向图的顶点对应量子逻辑门操作前或操作后、所操作的量子比特的量子态分量,取值均为{0,1},对应公式(1)中的变量;而所操作的量子比特即是对应量子逻辑门操作的量子比特。无向图的边对应目标量子程序中的量子逻辑门,具体地,每个量子逻辑门对应的边都对应一个张量,该张量中的元素由量子逻辑门对应的酉矩阵和对应边连接的顶点取值共同决定,可以理解的是该张量对应公式(1)中的/>函数。
张量(Tensor)是一个同时定义在几个线性空间的量,它是矢量概念和矩阵概念的推广。每个张量可以采用下标标记法,如张量T12,下标的数量即是张量的阶(rank),表示张量的维度。举例而言,标量是0阶张量,矢量是1阶张量,矩阵则是2阶张量。张量的形状则是指每个维度中元素的数量;张量的元素个数由其形状决定。
举例而言,已知张量B1234,下标为“1234”,为4阶张量;其中,若下标1表示的维度中元素有3个,下标2表示的维度中元素有4个,下标3表示的维度中元素有5个,下标4表示的维度中元素有4个,则张量B1234的形状shape=[3,4,5,6],元素个数为:。
在本发明实施例中,张量的阶与该张量对应边连接的顶点个数相等,张量的下标为无向图中顶点的编号。由于每个顶点的取值都只能为0或1,只有两种可能性,所以,对于一个n阶张量,其形状shape=[2,2,2…2],元素个数为2n。
而每一个张量元素的编号都可以表示为一个二进制编号,二进制编号的每一位可以表示为对应顶点的取值。
举例而言,边Em连接4个顶点,那么,它对应的张量就是一个4阶张量,其元素共有24=16个,则元素编号可以表示为二进制数:(0000)2~(1111)2。当边Em连接的4个顶点按照一定顺序排列,得到一个顶点序列,当四个顶点均取值为O时,顶点序列的组合取值为“0000”时,对应张量的第(0000)2位元素;当边Em连接的第一个顶点取值为1,第二个顶点取值为0,第三个顶点取值为0,第四个顶点取值为1时,则顶点序列的组合取值为“1001”,对应张量的(1001)2位元素。
实际应用中,当量子逻辑门为单量子逻辑门或双量子逻辑门且其对应的酉矩阵为对角矩阵,即对角单量子逻辑门或对角双量子逻辑门时,这类量子逻辑门作用在量子比特上,通常只会带来振幅的改变,而对应量子比特的量子态分量——对应公式(1)中的,则一般不会有改变。
此类型单量子逻辑门,典型地如泡利-Z门(Pauli-Z gate),其酉矩阵为
当利用泡利-Z门操作一个量子比特时,保留该量子比特的基本状态|0>不变,并将|1>转换成-|1>。
此类型双量子逻辑门,典型地如CZ门,其酉矩阵为:
当对两个量子比特Q0、Q1(Q0为控制比特,Q1为目标比特)执行CZ门操作时,当Q0的量子态为|0>时,Q1的量子态不变;当Q0的量子态为|1>时,Q1的量子态保留|0>不变,将|1>换成-|1>。
可以看出,无论是泡利-Z门还是CZ门,带来的都只是量子态分量振幅的变化,量子态分量不变。因此,对这类量子逻辑门,即酉矩阵为对角矩阵的单量子逻辑门或双量子逻辑门,构建无向图时,向无向图添加一条量子逻辑门对应边即可。
如图(3a)所示,对于对角单量子逻辑门,构建无向图时,只添加一条边E1即可,该边的一端与顶点V0相连。其中,V0为对应量子比特当前的最后一个顶点,即该量子逻辑门直接作用的量子态对应的顶点。
可以理解的是,边E1只连接一个顶点,故其张量为1阶张量,共有21=2个元素,该张量对应公式(1)中的/>函数,表示该对角单量子逻辑门对量子态的贡献。具体地,假设该对角单量子逻辑门的酉矩阵/>,则/>,其中,顶点V0取值为“0”时,对应/>的第(0)2位元素,即/>,V0取值为“1”时,对应其张量的第(1)2位元素,即/>。
举例而言,当边E1是对角单量子逻辑门泡利-Z门的对应边时,根据泡利-Z门的酉矩阵可知,其张量。
如图(3b)所示,对于对角双量子逻辑门,构建无向图时,也只需添加一条边E12,该边的一端与顶点V1相连,一端与顶点V2相连。其中,V1和V2分别为该对角双量子逻辑门操作的两个量子比特对应的当前最后一个顶点,即该对角双量子逻辑门直接作用的量子态对应的顶点。
可以理解的是,如图(3b)所示,边E12与两个顶点V1和V2相连,故其张量为2阶张量,共有22=4个元素,该张量对应公式(1)中的/>函数,表示该对角双量子逻辑门对量子态的贡献。具体地,假设该对角双量子逻辑门的酉矩阵/>,则。其中,当V1V2取值为“00”时,对应/>的第(00)2位元素;V1V2取值为“01”时,对应/>的第(01)2位元素;当V1V2取值为“10”时,对应/>的第(10)2位元素;V1V2取值为“11”时,对应/>的第(11)2位元素。当然,也可以按照顶点序列“V2V1”的取值来对应张量中元素,若按此顺序,可以理解的是,/>。需要说明的是,顶点序列的一种取值唯一确定张量中一个元素,但顶点序列的取值与张量中对应元素的位置关系并不是唯一的,可以根据实际需求而定。
举例而言,当边E12是对角双量子逻辑门CZ门的对应边时,根据其酉矩阵可知,其张量。
当量子逻辑门为单量子逻辑门且其对应的酉矩阵为非对角矩阵,即非对角单量子逻辑门时,如H门,其酉矩阵为,经过H门的操作,|0>将变为/>(|0>+|1>),|1>将变为/>(|0>-|1>),振幅和量子态分量都发生改变。对这类量子逻辑门,在构建无向图时,需向无向图添加一个单量子逻辑门操作后新量子态对应的顶点和一条量子逻辑门对应边。
如图(3c)所示,对于非对角单量子逻辑门,构建无向图时,添加一个顶点V4,一条边E34,该边的一端与顶点V3相连,一端与顶点V4相连。其中,V3为该非对角单量子逻辑门操作的量子比特对应的当前最后一个顶点,即该非对角量子逻辑门直接作用的量子态对应的顶点;V4为新增的顶点,对应非对角单量子逻辑门操作后的新量子态。
可以理解的是,边E34与两个顶点V3和V4相连,故其张量为2阶张量,共有22=4个元素,该张量对应公式(1)中的/>函数,表示该非对角单量子逻辑门对量子态的贡献。具体地,假设该对角单量子逻辑门的酉矩阵/>,则/>。其中,当V3V4取值为“00”时,对/>的第(00)2位元素;V3V4取值为“01”时,对应/>的第(01)2位元素;当V3V4取值为“10”时,对应/>的第(10)2位元素;V3V4取值为“11”时,对应/>的第(11)2位元素。
举例而言,当边E34是非对角单量子逻辑门H门的对应边时,根据其酉矩阵可知,张量。
当量子逻辑门为双量子逻辑门且其对应的酉矩阵为非对角矩阵,即非对角双量子逻辑门时,如CNOT门,其酉矩阵为,经过CNOT门的操作,控制比特的量子态为|0>时,受控比特的量子态不变,即控制比特和受控比特的量子态为|00>和|01>时,经CNOT门操作后,依然分别为|00>和|01>;控制比特的量子态为|1>时,受控比特的量子态则做非操作,即,将|0>变为|1>,将|1>变为|0>,即控制比特和受控比特的量子态为|10>和|11>时,经CNOT门操作后,分别变为|11>和|10>。因两个量子比特通常处于|00>、|01>、|10>和|11>的叠加态,故经CNOT门操作后,可以看出,所涉及两个量子比特的振幅和量子态分量均将发生改变。对这类量子逻辑门,在构建无向图时,针对每一个量子比特,需向无向图添加一个其在双量子逻辑门操作后新量子态对应的顶点,即两个新顶点,并向无向图添加一条双量子逻辑门的对应边。
如图(3d)所示,对于非对角双量子逻辑门,构建无向图时,需添加一条边E5678,为示意得更清楚,此处表现为两条边,但需要说明的是,图(3d)中的两条边实则是同一条边E5678。新添加的边一端与顶点V5、V7相连,一端与顶点V6、V8相连。其中,V5和V6分别为该非对角双量子逻辑门操作的两个量子比特对应的当前最后一个顶点,V7和V8分别为该非对角双量子逻辑门操作后两个量子比特的新量子态对应的顶点。特别地,当非对角双量子逻辑门为控制逻辑门时,V5、V7对应控制比特,V6、V8对应受控比特。
可以理解的是,如图(3d)所示,边E5678与四个顶点V5、V6、V7和V8相连,故其张量为4阶张量,共有24=16个元素,令顶点序列“V5V6V7V8”取值(“0000”~“1111”)分别对应/>中(0000)2~(1111)2位元素。具体地,假设该非对角双量子逻辑门的酉矩阵,其中,当/>时,/>不全为0,则顶点序列“V5V6V7V8”取值与/>中各元素的对应关系,如表1所示:
表1V5V6V7V8取值与U4中各元素的对应关系
可知,。
举例而言,当边E34是非对角单量子逻辑门CNOT门的对应边时,公知的是,其酉矩阵为,因此,其张量/>。
本领域人员可以理解的是,任意多量子比特门都可以用单量子逻辑门加上任意的双量子逻辑门来构建,在大多数情况下,双量子逻辑门多选择 CNOT门。某种意义上,CNOT门和单量子逻辑门是其他所有门的原型。故而本申请提供的方法也适用于带有多量子比特门的量子程序,实际应用中,可先将该量子程序中的多量子比特门转化成单量子逻辑门和双量子逻辑门的组合,然后再应用本发明提供的单振幅量子计算模拟方法。
S203,获得待测量的目标单振幅对应的量子态,基于所述量子态和无向图,并配合所述计算节点对应的GPU,计算所述量子态的子振幅;其中,所述子振幅为所述无向图对应的振幅;
实际应用中,当量子计算的模拟涉及众多量子比特时,若直接用狄拉克符号|>结合二进制表示方法来表示每个量子态,将会非常不方便。因此,常用二进制表示方法对应的十进制数来表示,如|000>即为零态,|0100>即为4态。可以理解的是,若目标量子态分量为十进制数,主节点需将其转换成二进制字符串,然后再发送给每个计算节点。该二进制字符串中的每一位都对应一个量子比特的取值,且其从低位到高位依次与从低位到高位的量子比特相对应,需要说明的是,低位和高位的排布对量子计算机而言,同经典计算机,均是低位到高位按照从右到左的顺序排列。举例而言,假设目标量子态分量为5态,转换成二进制形式即是“101”,对应3个量子比特(从低位到高位依次为:q0、q1、q2),那么,“101”分别对应“q2q1q0”。
具体的,基于所述量子态和无向图,并配合所述计算节点对应的GPU,计算所述量子态的子振幅,可以包括:
调用所述计算节点对应的GPU,对所述无向图的特定顶点所连接边的张量分别进行确定值降阶;其中,所述特定顶点为每一量子比特对应顶点链的第一及最后一个顶点;删除所述特定顶点;接收主节点分配的目标顶点的取值,基于所述目标顶点的取值,拆分当前无向图,针对拆分得到的每一子无向图,调用所述GPU对目标顶点连接边的张量分别进行确定值降阶;针对该子无向图中的每一顶点,配合所述GPU将该顶点的所有连接边融合成一条新边,对所述一条新边的张量进行降阶,并删除该顶点;对所有降阶后的新边的张量值求积,得到所述量子态的、该子无向图对应的第一子振幅;对计算节点内部所有子无向图的第一子振幅求和,得到所述量子态的子振幅。
最终,每个子无向图中的所有顶点被删除,只剩下张量阶数为0的边,0阶张量为标量。将这些边的张量值相乘,得到该计算节点中的量子态的第一子振幅。
例如,对某个子无向图,当前所有顶点及其连接边为S12、S16、S25、S3、S4:
针对顶点1,S12、S16融合成新边S126,对其张量A126降阶成A26,对应边变为S26,删除顶点1;
针对顶点2,对当前连接边S25、S26融合成新边S256,对其张量A256降阶为A56,对应边S56,删除顶点2;
针对顶点3,只连接边S3,对其张量A3降阶为A=x3(标量),对应边变为张量阶数为0的边s3,删除顶点3;
针对顶点4,只连接边S4,对其张量A4降阶为A′=x4(标量),对应边变为张量阶数为0的边s4,删除顶点4;
针对顶点5,当前只连接边S56融合后不变,对其张量A56降阶成A6,对应边S6,删除顶点5;
针对顶点6,当前只连接边S6,对其张量A6降阶为A′′=x6(标量),对应边变为张量阶数为0的边s6,删除顶点6。
计算该子无向图对应的第一子振幅为x3*x4*x6。
再如,对某个子无向图,当前所有顶点及其连接边为S123、S124、S15、S46:
针对顶点1,S123、S124、S15融合成新边S12345,对其张量A12345降阶成A2345,对应边变为S2345,删除顶点1;
针对顶点2,当前只连接边S2345,对其张量A2345降阶为A345,对应边S345,删除顶点2;
针对顶点3,只连接边S345,对其张量A345降阶为A45,对应边S45,删除顶点3;
针对顶点4,对当前连接边S45、S46融合成新边S456,对其张量A456降阶为A56,对应边S56,删除顶点4;
针对顶点5,当前只连接边S56,对其张量A56降阶成A6,对应边S6,删除顶点5;
针对顶点6,当前只连接边S6,对其张量A6降阶为B=y6(标量),对应边变为张量阶数为0的边s6,删除顶点6。
计算该子无向图对应的第一子振幅即为y6。
具体的,为了减少后续无向图的计算量,对无向图的特定顶点所连接边的张量分别进行确定值降阶,可以为:
计算节点对应的GPU,针对每一条特定顶点所连接的边,根据降阶后的张量阶数和GPU中每个线程块中的线程个数,设置线程块数;根据线程块序号、每个线程块中的线程个数及线程序号,计算降阶后张量的第一元素编号,并计算所述第一元素编号对应降阶前张量的两个第二元素编号;其中,所述元素编号的位数与当前边连接的顶点位数一一对应,所述元素编号每一位的值为对应顶点位的顶点取值;从所述两个第二元素编号中,确定特定顶点位所对应编号位上的值为预设确定值的第二元素编号;获取确定出的第二元素编号所对应的第二元素值,将第二元素值确定为所述第一元素编号对应的第一元素值。
其中,所述第一元素编号的计算公式(下同)为:
Idx=block_id*num+thread_id(2)
Idx为第一元素编号,block_id为线程块序号,num为每个线程块中的线程个数,thread_id为线程序号。
站在GPU的角度,一种确定值降阶的具体实现方式是:首先,张量的元素可以是复数,由于GPU没有(CPU具有)复数x+yi的表示形式,需要申请新的实部张量空间和虚部张量空间,其中,指定实部张量空间存放x,虚部张量空间存放y,以此表征张量。
获得所属计算节点(CPU)发来的降阶后的阶数n,判断2n是否小于num,若小于设置1个线程块,否则设置GPU线程块数为2n/num,num取值满足2的非负整数的次方。由于计算机自身特性,线程块序号block_id及线程序号thread_id往往从0开始编号。
以GPU为GTX1080ti为例,GTX1080ti的num=1024,thread_id=0、1、2……1023。比如对编号为2的顶点(简称顶点2)连接边E13254的5阶张量A13254进行确定值降阶,即对A13254的第3阶(或称第3维,下同)进行确定值降阶,其中,维数从右至左进行编号,如顶点1是第5维,顶点4是第1维。
假设确定值为0(也可为1,根据需要自行设定),是指顶点2取值为0。一次降阶操作通常指降一阶,故n=4,2n小于1024,线程块设1块,blcok_id=0。降阶后的4阶张量A1354只有16个元素,从0号线程开始,一个线程计算一个元素编号,只调用0-15号线程,其第一元素编号计算可得为:idx=0、1、2……15。
对于第一元素编号10(二进制1010),计算其对应降阶前的两个第二元素编号,计算原理如下:
将23-1-1=3(二进制为11,对第m阶降阶,则计算2m-1-1的值,目的是对元素编号进行拆分)和10按位进行与操作,得到2(二进制10)。对3进行按位取反(取反后为二进制1111……1100,该二进制位数由数据类型而定,如64位等等),在和10按位进行与操作,得到8(1000),实现对10的二进制拆分,得到了10的二进制前两位和后两位。降阶前下标2对应的顶点确定值为0和1的两个第二元素编号分别为:8(1000)按位左移一位(10000)和2(10)进行或操作,得到18(10010);所降的阶为第3阶,对18(10010)和4(相当于1<<(3-1),即对第m阶降阶,则进行1<<(m-1)的左移操作,1≤m≤n+1)进行或操作,得到22(10110)。
由于设定的确定值为0,即第3位特定顶点对应元素编号第3位上的值为0,二进制元素编号的位及位上的值与顶点位及顶点位上的顶点取值均一一对应且相同,从而确定出18为第一元素编号10对应所求的第二元素编号,获取A13254的元素编号18的元素值p,作为降阶后A1354的元素编号10的第一元素值。同理可计算得到A1354其余第一元素编号对应的第一元素值,最终得到降阶后的张量A1354={p0,p1,p2…p…p14,p15}。
之后,释放掉原降阶前张量A13254所占的显存。
具体的,为了降低计算复杂度,可以接收主节点均分的目标顶点的一种或多种取值;其中,所述目标顶点为当前无向图中所连接边数最多的前m个顶点,所述m个顶点包含2m种取值,每个顶点的取值为0或1,m为正整数,计算节点的数量为2n,n为正整数,且n大于0、小于等于m;针对均分到的每种顶点取值,将计算节点自身的一个无向图拆分为一个或多个子无向图;针对每一子无向图,遍历目标顶点连接的边,调用所述GPU对目标顶点连接边的张量分别进行确定值降阶。
其中,计算节点的数量为预设取值即n为预设值,与编写的量子程序和对应配置的可用计算资源相关,m值根据需要预先设定。如n=1,m=1,则对所连接边数最多的1个顶点,顶点取值情况原本不确定,有2种:0或1。把这2种取值情况分配到2个计算节点上分别进行计算,一计算节点中无向图的该顶点值被确定为0,得到一个子无向图,另一计算节点中无向图中的该顶点被确定为1,得到另一个子无向图,实现对无向图的拆分。
再如,n=1,m=2,取值情况有4种:00、01、10、11,则2个计算节点均分连接边最多的前2个顶点的4种取值:00、01、10、11,一般顺序均分,一个计算节点分到00、01,另一计算节点分到10、11。相当于,一个计算节点中的无向图被拆分为2个子无向图,一个子无向图中该2个顶点取值分别为0和0,另一个中取值分别为0和1。同样,另个计算节点的一子无向图中该两顶点取值分别为1和0,另一子无向图中该两顶点取值分别为1和1。
站在所有计算节点的角度,原本每个计算节点中均包括一个相同的无向图,至此进行拆分,每个计算节点的无向图会被拆分为一个或多个不同的子无向图,每个子无向图可以看成一条路径,计算一个计算节点内部每条路径对应的第一子振幅,并对内部的各个第一子振幅求和,得到当前节点对应的量子态的子振幅,体现了路径积分法(FeymannPathIntegral)的思想,而非基于酉矩阵变换方法,原因在于后者会造成内存占用呈指数上升。
以n=1、m=2为例,当前无向图中所连接边数最多的是顶点3和顶点5。与顶点3或5连接的所有边假设为E3241、E361、E32、E354、E125、E45、E56,遍历这些边,调用分到00取值的计算节点下属的GPU,分别对子无向图中这些边的张量进行确定值降阶,原理与上述对无向图的特定顶点所连接边的张量分别进行确定值降阶相同,再次示例说明如下:
对于边E3241,对应4阶张量T3241,对顶点3、5取值00的情况,由于该边未连接顶点5,只需对T3241的顶点3所处的第4阶进行确定值降阶。GPU依然先申请新的实部张量和虚部张量,获得所属计算节点(CPU)发来的降阶后的阶数n,判断2n是否小于num,若小于设置1个线程块,否则设置GPU线程块数为2n/num。
以GTX1080ti为例,GTX1080ti的num=1024,thread_id=0、1、2……1023。顶点3取值为0,即确定值为0。一次降阶操作通常指降一阶,故n=3,2n小于1024,线程块设1块,blcok_id=0。降阶后的3阶张量T241只有8个元素,从0号线程开始,一个线程计算一个元素编号,只调用0-7号线程,其第一元素编号利用公式(2)计算可得为:idx=0、1、2……7。
对于第一元素编号5(二进制101),计算其对应降阶前的两个第二元素编号,计算原理如下:
对第4阶,就将24-1-1=7(二进制111)和5进行按位与操作,得到5(二进制101)。对7进行按位取反(取反后为二进制1111……1000),在和5按位进行与操作,得到0,实现对5的二进制拆分。降阶前下标3对应的顶点3确定值为0和1的两个第二元素编号分别为:0按位左移一位和5进行或操作,得到5(0101);对5(0101)和8(1000)(相当于1<<(4-1),即对第m阶降阶,则进行1<<(m-1)的左移操作,1≤m≤n+1)进行或操作,得到13(1101)。
由于元素编号的二进制每一位值表示对应顶点的取值,0101表示T3241的边E3241顶点3、2、4、1取值依次为0、1、0、1,从而确定出5为第一元素编号5的最终所求的第二元素编号,获取T3241中元素编号为5的第二元素值,作为降阶后T241中元素编号5的第一元素值w5。同理可计算得到其余第一元素编号对应的第一元素值,最终得到降阶后的张量T243={w0,w1,w2,w3,w4,w5,w6,w7}。
之后,释放掉原降阶前张量T3241所占的显存。
另外,对于边E354的顶点3、5取值00的情况,由于每次降阶只降一阶,可先对边E354的张量T354降顶点3所处的第3阶为T54,在将T54降顶点5所在的第2阶为T4。
其余子无向图中边及其取值情况的降阶计算同上,不再赘述。
具体的,所述配合所述GPU将该顶点的所有连接边融合成一条新边,包括:
针对该顶点的所有连接边,确定待融合的第一条边和第二条边;根据所述第二条边中不与第一条边相连的顶点,调用所述GPU对第一条边的第一张量进行升阶,以升阶后的张量更新所述第一张量;删除第二条边,将第二条边中不与第一条边相连的顶点连接至第一条边,得到融合后的中间边;根据记录的第一条边与第二条边的顶点编号之间的对应关系,调用所述GPU计算所述中间边的张量元素;返回所述确定待融合的第一条边和第二条边的执行步骤,直至计算得到的张量元素为最后一条边的张量元素,将该最后一条边确定为融合成的一条新边。
实际应用中,一般对任意两条边的融合都需先对一条边的张量进行升阶,因此,一般选择将该顶点所有连接边中阶数最大的边作为第一条边。
可以理解的是,第二条边为除第一条边之外的剩余边中未被融合的边。
具体地,可以直接从剩余的边中选取一条边作为第二条边;也可以先将顶点的连接边根据阶数大小进行排序,按照从小到大或从大到小的顺序均可,不做限定,然后将阶数最大的边确定为第一条边,将剩下未被融合的边中阶数最大的边确定为第二条边。
举例而言,顶点Vn连接的边共有4条,分别为:En1、En2、En3、En4,对应的阶数分别为:3、2、4、2。首先将边按照阶数从大到小进行排序,得:En3、En1、En2、En4(或En3、En1、En4、En2),可以看出,En3阶数最大,将其确定为第一条边,剩下未被融合的三条边中,En1阶数最大,将其确定为第二条边。
对比第一条边与第二条边连接的顶点,确定出与第二条边相连但与第一条边不相连的顶点,然后根据确定出的顶点对第一张量执行升阶操作,并以升阶后的新张量来更新第一张量。
举例而言,假设该顶点编号为2,其对应的第一条边为E12,连接顶点1和2,对应的第一张量为A12={1,2,3,4};第二条边为E23,连接顶点2和3,对应第二张量B23={5,6,7,8}。对比两条边连接的顶点,可知,顶点3是与第二条边相连,与第一条边不相连的顶点。据此,将A12升阶为A123,由下述可知A123={1,1,2,2,3,3,4,4},然后将第一条边对应的第一张量更新为A123。
其中,针对第一条边的第一张量的升阶计算由GPU执行,原理可如下:
所述GPU对第一条边的第一张量进行升阶,可以根据所述第一张量的阶数r和所升的阶数s,计算升阶后的张量阶数t=r+s,其中,r、s均为正整数;根据所述升阶后的张量阶数t和GPU中每个线程块中的线程个数num,设置线程块数,其中,若2t小于num设置1个线程块,否则设置GPU线程块数为2n/num;根据线程块序号block_id、每个线程块中的线程个数num及线程序号thread_id,计算升阶后的张量的第一元素编号idx,计算公式同公式(2);根据该第一元素编号idx、所升的阶数s和第一张量的元素,计算升阶后的张量的元素。
继续以GTX1080ti为例,从计算节点接收升阶指令信息,升阶前第一张量A12={1,2,3,4},其对应元素编号0、1、2、3(对应二进制00、01、10、11),升一阶到A123,r=2,s=1,t=3。判断2t小于num(1024),配置1线程块,block_id=0。与前述同理,thread_id=0、1……1023,由于A123只有8个元素,只需调用0-7号线程,每个线程由公式(2)计算得到A123的idx依次为0、1、2……7。对第一元素编号为idx的元素赋值:dst[idx]=src[idx/2s],表示第一元素编号为idx的A123元素值dst[idx]等于元素编号为idx/2s的取整部分的A12元素值,取整部分即指去掉小数点后面所剩下的整数部分。
由A123的idx计算idx/2s=idx/2,依次为0、0.5、1、1.5、2、2.5、3、3.5,可得:
dst[0]=src[0]=1,dst[1]=src[0.5]=src[0]=1;
dst[2]=src[1]=2,dst[3]=src[1.5]=src[1]=2;
dst[4]=src[2]=3,dst[5]=src[2.5]=src[2]=3;
dst[6]=src[3]=4,dst[7]=src[3.5]=src[3]=4。
从而得到A123={1,1,2,2,3,3,4,4}。同理,若对A12升2阶到A1234,可得A1234={1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4}。
再以升阶前第一张量为10阶张量A12345678910={1,2,3……1024}为例,其对应元素编号0、1、2……1023(对应二进制0000000000、0000000001……1111111111),升一阶到A1234567891011,r=10,s=1,t=11。判断2t大于num(1024),配置2t/num个即2个线程块,block_id=0、1,每个线程块中的线程编号thread_id均为0、1……1023,升阶后的张量元素个数为211,0号线程块计算得到的idx依次为0、1、2……1023,1号线程块计算得到idx依次为1024、1025……2047,即A1234567891011的idx为0至2047。
计算idx/2s=idx/2,依次为0、0.5、1、1.5……1023、1023.5,可得:
dst[0]=src[0]=1,dst[1]=src[0.5]=src[0]=1;
dst[2]=src[1]=2,dst[3]=src[1.5]=src[1]=2;
……
dst[2046]=src[1023]=1024,dst[2047]=src[1023.5]=src[1023]=1024。
从而得到A1234567891011={1,1,2,2……1024,1024}。
得到升阶后的张量之后,释放掉原第一张量所占的显存。
仍以第一条边为E12、第二条边为E23为例,第一张量更新为A123后,删除第二条边E23,将第二条边中不与第一条边相连的顶点3连接至第一条边,得到融合后的中间边E123。然后根据记录的第一条边与第二条边的顶点编号之间的对应关系,调用所述GPU计算所述中间边的张量C123的元素。
该对应关系可由第一张量A123和第二张量B23得出。其中,A123对应的顶点序列为“123”,B23对应的顶点序列为“23”。可以看出顶点2在A123对应的顶点序列中是第2位,在B23对应的顶点序列中是第1位,顶点编号3在A123对应的顶点序列中是第3位,在B23对应的顶点序列中是第2位,将此位置对应关系记录下来。具体地,可以存储在一个数组中,如存储在数组MaskArray中,MaskArray的元素结构为:Struct{顶点在A123对应的顶点序列中的位置,顶点在B23对应的顶点序列中的位置}。
具体的,计算所述中间边的张量元素,步骤可如下:
所述GPU首先申请一个数组array,将计算节点CPU中的Maskarray复制到GPU上并存入array中;
根据更新后的第一张量的阶数q和GPU中每个线程块中的线程个数num,设置线程块数,若2q小于num设置1个线程块,否则设置2q/num个线程块;根据线程块序号block_id、每个线程块中的线程个数num及线程序号thread_id,计算中间边的张量的第一元素编号idx,计算公式同公式(2);
根据array中存储的对应关系,确定所述第一张量中每一元素在所述第二条边的第二张量中的对应元素;遍历所述第一张量中的每一元素,以该元素与其在所述第二张量中对应元素的乘积更新该元素。
以第一张量A123={1,1,2,2,3,3,4,4}和第二张量B23={5,6,7,8}为例,由对应关系可知,顶点2分别在A123和B23对应的顶点序列中的第2位和第1位,顶点编号3分别在A123和B23对应的顶点序列中的第3位和第2位。
首先,将第一张量元素的位置编号表示为二进制数(对应顶点“123”的取值):(000)2、(001)2、(010)2、(011)2、(100)2、(101)2、(110)2、(111)2,将第二张量中元素的位置编号表示为二进制数(对应顶点“23”的取值):(00)2、(01)2、(10)2、(11)2,根据顶点2和3分别在张量A123和B23对应的顶点序列中的位置对应关系,可以确定出A123中每一元素在B23中的对应元素如表1所示:
表1 A123中每一元素在B23中的对应元素
其中,表1的第二行中,二进制数下划线是为了明确B23中顶点在A123的每个元素的位置编号中的取值,便于阐述得更清楚,并无任何限定意义。
遍历第一张量中的每一元素,将其与第二张量中的对应元素相乘,然后用乘积去更新该元素。
以A123和B23为例,首先将A123中的每一元素与B23中的对应元素相乘,可得乘积为依次为:5、6、14、16、15、18、28、32,然后用这些乘积去更新A123,得到中间边E123的张量C123={5,6,14,16,15,18,28,32}。
其中,针对所述一条新边的张量的降阶计算由GPU执行,流程可如下:
首先,所述GPU根据所述一条新边降阶后的张量阶数,设置线程块数;
其次,根据线程块序号、每个线程块中的线程个数及线程序号,计算降阶后张量的第一元素编号,并计算所述第一元素编号对应降阶前张量的两个第二元素编号;其中,所述元素编号的位数与当前边连接的顶点位数一一对应,所述元素编号每一位的值为对应顶点位的顶点取值。
需要说明的是,该两步骤与上述确定值降阶对应步骤的计算原理一致,在此不对其进行赘述。
然后,获取该两个第二元素编号一一对应的两个第二元素值,对该两个第二元素值求和,将求得的和确定为所述第一元素编号对应的第一元素值。
可见,与确定值降阶的计算原理相比,区别在于确定值降阶需要从两个第二元素编号L1、L2中找出某一顶点位所对应编号位上的值为预设确定值的第二元素编号L1,从而得到第二元素编号L1对应的第二元素值,作为第一元素编号对应的第一元素值,而降阶计算则需要将两个第二元素编号L1、L2分别对应的两第二元素值相加,得到的和作为第一元素编号对应的第一元素值。
参见上述确定值降阶的具体实现方式及示例,假设5阶张量A13254为顶点2最终融合后的一条新边的张量,其余条件一致。对于第一元素编号10(二进制1010),计算其对应降阶前的两个第二元素编号为18(10010)、22(10110)。由于处于第3阶的顶点2的取值未定(可为0或1),该两元素编号18、22均为10的对应元素编号,获取18、22对应的元素值p、p′进行相加,得到的和p′′即为第一元素编号10的第一元素值,以此类推,最终得到A13254降阶后的张量A1354。
再举例而言,假设该顶点为顶点2,融合其所有连接边后,获得一条新边E1234,其张量为A1234={5,5,6,6,14,14,16,16,15,15,18,18,28,28,32,32}。该条新边张量的对应顶点序列为“1234”,除顶点2之外,得到新顶点序列“134”,新顶点序列的取值与A1234中元素的对应关系如表2所示:
表2新顶点序列“134”的取值与A1234中元素的对应关系
因此,对目标边E1234基于顶点2降阶后,删除顶点2,得到降阶后的新边E134,对应张量A134={19,19,22,22,43,43,50,50}。
S204,将所述子振幅返回至所述分布式集群的主节点,以使所述主节点归约各个子振幅,得到所述量子态的振幅,作为目标单振幅。
归约即为数据归约,是指在尽可能保持数据原貌的前提下,最大限度地精简数据量。主节点通过规约各个计算节点计算的子振幅,对所有子振幅进行求和,得到所测量量子态的目标单振幅。
现有的CPU微架构是面向指令执行高效率而设计的,逻辑处理(指令执行)性能强大,效率较高,但GPU线程数较多(成百上千),专注大规模并发计算,其数值计算效率通常高于CPU大约5至10倍。基于此,本发明实施例中,涉及的主要计算任务包括确定值降阶、升阶及融合过程的中间边的张量元素计算等等,均分配到各计算节点CPU下属的GPU上执行,CPU主要执行逻辑处理任务,两者协同,使得单振幅量子计算模拟效率处于较高水平。
可见,本发明能够每次只计算所涉量子比特的一个目标单振幅,具体地,将目标量子程序映射到无向图上,并结合路径积分法,将无向图拆分至多个计算节点上,由每个计算节点与下属GPU配合计算对应的子无向图。整个计算过程多是基于张量中元素的简单运算,与现有技术中基于酉矩阵的全振幅模拟相比,大大降低了对内存的需求,且计算量不随量子比特指数上升,从而可以实现涉及50个甚至更多个量子比特的量子计算模拟;GPU执行大量并行计算的性能较强,使得整体量子计算模拟效率较高。目前,应用本发明实施例提供的技术方案,最大已可实现涉及196个量子比特的量子计算模拟。
此外,实际应用中,有时只需要量子比特全振幅中的一个或多个振幅,在这种情况下,若采用现有技术中的全振幅模式,即一次性模拟出所有的振幅,无疑是对内存等资源以及时间的浪费;而应用本发明实施例提供的方法,则可以有针对性地进行一次或多次模拟,模拟出需要的一个或多个单振幅即可,大大节省了资源与时间。
以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。
Claims (10)
1.一种单振幅量子计算模拟方法,其特征在于,所述方法包括:
针对分布式集群的每个计算节点,获得目标量子程序;
构建所述目标量子程序对应的无向图;其中,所述无向图的顶点表征目标量子程序中量子逻辑门操作前或操作后的、所操作量子比特的量子态,所述无向图的一条边对应表示目标量子程序中量子逻辑门的一张量;
获得待测量的目标单振幅对应的量子态,基于所述量子态和无向图,并配合所述计算节点对应的GPU对所述无向图的边的张量进行确定值降阶,直至获得的所有降阶后的张量阶数为0的新边,基于新边的张量计算所述量子态的子振幅;其中,所述子振幅为所述无向图对应的振幅;
将所述子振幅返回至所述分布式集群的主节点,以使所述主节点归约各个子振幅,得到所述量子态的振幅,作为目标单振幅。
2.根据权利要求1所述的单振幅量子计算模拟方法,其特征在于:所述构建所述目标量子程序对应的无向图,包括:
解析所述目标量子程序,得到记录量子程序信息的链表;
遍历所述链表,当链表中量子逻辑门的类型为第一单量子门时,创建一条张量阶数为1的边;其中,该边与所述第一单量子门所操作的量子比特对应顶点链的最后一个顶点连接,第一单量子门的酉矩阵为对角矩阵;
当链表中量子逻辑门的类型为第二单量子门时,创建一条张量阶数为2的边和一个与该边连接的顶点;其中,该边与所述第二单量子门所操作的量子比特对应顶点链的最后一个顶点连接,第二单量子门的酉矩阵为非对角矩阵;
当链表中量子逻辑门的类型为第一双量子门时,创建一条张量阶数为2的边;其中,该边与所述第一双量子门所操作的两量子比特分别对应的顶点链中的最后一个顶点连接,第一双量子门的酉矩阵为对角矩阵;
当链表中量子逻辑门的类型为第二双量子门时,创建一条张量阶数为4的边和两个与该边连接的顶点;其中,该边与所述第二双量子门所操作的两量子比特分别对应的顶点链中的最后一个顶点连接,第二双量子门的酉矩阵为非对角矩阵;
得到所述目标量子程序对应的无向图。
3.根据权利要求2所述的单振幅量子计算模拟方法,其特征在于:所述基于所述量子态和无向图,并配合所述计算节点对应的GPU对所述无向图的边的张量进行确定值降阶,直至获得的所有降阶后的张量阶数为0的新边,基于新边的张量计算所述量子态的子振幅,包括:
调用所述计算节点对应的GPU,对所述无向图的特定顶点所连接边的张量分别进行确定值降阶;其中,所述特定顶点为每一量子比特对应顶点链的第一及最后一个顶点;
删除所述特定顶点;
接收所述主节点分配的目标顶点的取值,基于所述目标顶点的取值,拆分当前无向图,针对拆分得到的每一子无向图,调用所述GPU对目标顶点连接边的张量分别进行确定值降阶;
针对该子无向图中的每一顶点,配合所述GPU将该顶点的所有连接边融合成一条新边,对所述一条新边的张量进行降阶,并删除该顶点;
对所有降阶后的新边的张量值求积,得到所述量子态的、该子无向图对应的第一子振幅;
对自身内部所有子无向图的第一子振幅求和,得到所述量子态的子振幅。
4.根据权利要求3所述的单振幅量子计算模拟方法,其特征在于:所述对所述无向图的特定顶点所连接边的张量分别进行确定值降阶,包括:
所述计算节点对应的GPU,针对每一条特定顶点所连接的边,根据降阶后的张量阶数和GPU中每个线程块中的线程个数,设置线程块数;
根据线程块序号、每个线程块中的线程个数及线程序号,计算降阶后张量的第一元素编号,并计算所述第一元素编号对应降阶前张量的两个第二元素编号;其中,所述元素编号的位数与当前边连接的顶点位数一一对应,所述元素编号每一位的值为对应顶点位的顶点取值;
从所述两个第二元素编号中,确定特定顶点位所对应编号位上的值为预设确定值的第二元素编号;
获取确定出的第二元素编号所对应的第二元素值,将第二元素值确定为所述第一元素编号对应的第一元素值。
5.根据权利要求4所述的单振幅量子计算模拟方法,其特征在于:所述接收所述主节点分配的目标顶点的取值,基于所述目标顶点的取值,拆分当前无向图,针对拆分得到的每一子无向图,调用所述GPU对目标顶点连接边的张量分别进行确定值降阶,包括:
接收主节点均分的目标顶点的一种或多种取值;其中,所述目标顶点为当前无向图中所连接边数最多的前m个顶点,所述m个顶点包含2m种取值,每个顶点的取值为0或1,m为正整数,计算节点的数量为2n,n为正整数,且n大于0、小于等于m;
针对均分到的每种顶点取值,将计算节点自身的一个无向图拆分为一个或多个子无向图;
针对每一子无向图,遍历目标顶点连接的边,调用所述GPU对所述目标顶点连接边的张量分别进行确定值降阶。
6.根据权利要求3所述的单振幅量子计算模拟方法,其特征在于:所述配合所述GPU将该顶点的所有连接边融合成一条新边,包括:
针对该顶点的所有连接边,确定待融合的第一条边和第二条边;
根据所述第二条边中不与第一条边相连的顶点,调用所述GPU对第一条边的第一张量进行升阶,以升阶后的张量更新所述第一张量;
删除第二条边,将第二条边中不与第一条边相连的顶点连接至第一条边,得到融合后的中间边;
根据记录的第一条边与第二条边的顶点编号之间的对应关系,调用所述GPU计算所述中间边的张量元素;
返回所述确定待融合的第一条边和第二条边的执行步骤,直至计算得到的张量元素为最后一条边的张量元素,将该最后一条边确定为融合成的一条新边。
7.根据权利要求6所述的单振幅量子计算模拟方法,其特征在于:所述对第一条边的第一张量进行升阶,包括:
所述GPU根据所述第一张量的阶数和所升的阶数,计算升阶后的张量阶数;
根据所述升阶后的张量阶数和GPU中每个线程块中的线程个数,设置线程块数;
根据线程块序号、每个线程块中的线程个数及线程序号,计算升阶后的张量的第一元素编号;
根据该第一元素编号、所升的阶数和第一张量的元素,计算升阶后的张量的元素。
8.根据权利要求6所述的单振幅量子计算模拟方法,其特征在于:所述计算所述中间边的张量元素,包括:
所述GPU根据更新后的第一张量的阶数和GPU中每个线程块中的线程个数,设置线程块数;
根据线程块序号、每个线程块中的线程个数及线程序号,计算中间边的张量的第一元素编号;
根据所述对应关系,确定所述第一张量中每一元素在所述第二条边的第二张量中的对应元素;
遍历所述第一张量中的每一元素,以该元素与其在所述第二张量中对应元素的乘积更新该元素。
9.根据权利要求6所述的单振幅量子计算模拟方法,其特征在于:所述对所述一条新边的张量进行降阶,包括:
所述GPU根据所述一条新边降阶后的张量阶数,设置线程块数;
根据线程块序号、每个线程块中的线程个数及线程序号,计算降阶后张量的第一元素编号,并计算所述第一元素编号对应降阶前张量的两个第二元素编号;其中,所述元素编号的位数与当前边连接的顶点位数一一对应,所述元素编号每一位的值为对应顶点位的顶点取值;
获取该两个第二元素编号一一对应的两个第二元素值,对该两个第二元素值求和,将求得的和确定为所述第一元素编号对应的第一元素值。
10.根据权利要求4-5和7-9任一项所述的单振幅量子计算模拟方法,其特征在于:所述第一元素编号的计算公式为:
Idx=block_id*num+thread_id
其中,所述Idx为第一元素编号,block_id为线程块序号,num为每个线程块中的线程个数,thread_id为线程序号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910394102.9A CN111931939B (zh) | 2019-05-13 | 2019-05-13 | 一种单振幅量子计算模拟方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910394102.9A CN111931939B (zh) | 2019-05-13 | 2019-05-13 | 一种单振幅量子计算模拟方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111931939A CN111931939A (zh) | 2020-11-13 |
CN111931939B true CN111931939B (zh) | 2024-02-09 |
Family
ID=73282551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910394102.9A Active CN111931939B (zh) | 2019-05-13 | 2019-05-13 | 一种单振幅量子计算模拟方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111931939B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114757357B (zh) * | 2020-12-29 | 2023-06-02 | 合肥本源量子计算科技有限责任公司 | 量子线路的振幅估计方法、装置、存储介质及电子装置 |
CN114764549B (zh) * | 2020-12-31 | 2023-04-25 | 合肥本源量子计算科技有限责任公司 | 基于矩阵乘积态的量子线路模拟计算方法、装置 |
CN114692880B (zh) * | 2020-12-31 | 2023-09-05 | 本源量子计算科技(合肥)股份有限公司 | 一种量子线路中量子态振幅的模拟方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103038956A (zh) * | 2010-03-19 | 2013-04-10 | 多伦多大学董事局 | 经由输出耦合器的调制的激光器的振幅及相位调制 |
CN105960651A (zh) * | 2013-12-05 | 2016-09-21 | 微软技术许可有限责任公司 | 量子计算机上用于计算距离测度的方法和*** |
CN108833353A (zh) * | 2018-05-18 | 2018-11-16 | 中南大学 | 基于三方参与的量子拜占庭协定方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8811763B2 (en) * | 2007-12-06 | 2014-08-19 | The United States Of America As Represented By The Secretary Of The Army | Method and system for producing image frames using quantum properties |
WO2012047356A2 (en) * | 2010-07-26 | 2012-04-12 | The University Of Vermont | Uses of systems with degrees of freedom poised between fully quantum and fully classical states |
-
2019
- 2019-05-13 CN CN201910394102.9A patent/CN111931939B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103038956A (zh) * | 2010-03-19 | 2013-04-10 | 多伦多大学董事局 | 经由输出耦合器的调制的激光器的振幅及相位调制 |
CN105960651A (zh) * | 2013-12-05 | 2016-09-21 | 微软技术许可有限责任公司 | 量子计算机上用于计算距离测度的方法和*** |
CN108833353A (zh) * | 2018-05-18 | 2018-11-16 | 中南大学 | 基于三方参与的量子拜占庭协定方法 |
Non-Patent Citations (2)
Title |
---|
Classical Simulation of Intermediate-Size Quantum Circuits;Jianxin Chen 等;《arXiv:1805.01450v2》;第1-12页 * |
单量子比特量子计算中的全局相位;魏永鑫 等;《福建师范大学学报(自然科学报)》;第29卷(第3期);第42-46页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111931939A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7186797B2 (ja) | 量子計算のための方法及びシステム | |
CN110188885B (zh) | 一种量子计算模拟方法、装置、存储介质和电子装置 | |
CN109800883B (zh) | 量子机器学习框架构建方法、装置及量子计算机 | |
CN111931939B (zh) | 一种单振幅量子计算模拟方法 | |
CN110826719B (zh) | 一种量子程序的处理方法、装置、存储介质和电子装置 | |
CN111914378B (zh) | 一种单振幅量子计算模拟方法及装置 | |
CN111915011B (zh) | 一种单振幅量子计算模拟方法 | |
Gorlatch | Systematic efficient parallelization of scan and other list homomorphisms | |
KR20200088475A (ko) | 신경망의 기능적 부분망의 동시 훈련 | |
JP2022511331A (ja) | 量子ボルツマンマシンを実装及び最適化するためのハイブリッド量子古典コンピュータシステム | |
CN110516810B (zh) | 一种量子程序的处理方法、装置、存储介质和电子装置 | |
JP7389268B2 (ja) | 量子状態準備回路の生成方法、装置、チップ、機器及びプログラム | |
KR102108342B1 (ko) | 그래프 특성을 보존하는 대규모 그래프 증폭 시스템 | |
JP7372996B2 (ja) | ノードグループ化方法、装置及び電子機器 | |
JP7381723B2 (ja) | 量子操作実行方法及び装置、量子操作の制御波形の生成方法及び装置、量子操作チップ、並びにコンピュータ装置及びプログラム | |
Soni et al. | Parallel multi-core and multi-processor methods on point-value multiresolution algorithms for hyperbolic conservation laws | |
CN113128015B (zh) | 预估单振幅模拟量子计算所需资源的方法和*** | |
Gosmann et al. | Automatic optimization of the computation graph in the Nengo neural network simulator | |
Areias et al. | Implicit solutions with consistent additive and multiplicative components | |
Paszyńska | Volume and neighbors algorithm for finding elimination trees for three dimensional h-adaptive grids | |
Steinbach et al. | Multiple-Valued Problem Solvers--Comparison of Several Approaches | |
US9600446B2 (en) | Parallel multicolor incomplete LU factorization preconditioning processor and method of use thereof | |
JP7474536B1 (ja) | 情報処理システム、情報処理方法 | |
US20230409666A1 (en) | Computer-readable recording medium storing calculation program, calculation method, and information processing device | |
Sanfui et al. | Symbolic and Numeric Kernel Division for GPU-based FEA Assembly of Regular Meshes with Modified Sparse Storage Formats |
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 | ||
CB02 | Change of applicant information |
Address after: 230008 6th floor, building E2, phase II, venture industrial park, high tech Zone, Hefei City, Anhui Province Applicant after: Benyuan Quantum Computing Technology (Hefei) Co.,Ltd. Address before: 230008 6th floor, building E2, phase II, venture industrial park, high tech Zone, Hefei City, Anhui Province Applicant before: ORIGIN QUANTUM COMPUTING COMPANY, LIMITED, HEFEI |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |