一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于量子算法的计算流体动力学模拟方法、装置及设备与流程

2022-02-25 20:08:31 来源:中国专利 TAG:


1.本技术涉及量子计算技术领域,特别是涉及基于量子算法的计算流体动力学模拟方法、装置及设备。


背景技术:

2.cfd(computational fluid dynamics,计算流体动力学)是近代流体力学,数值数学和计算机科学结合的产物,是一门具有强大生命力的交叉科学。它以电子计算机为工具,应用各种离散化的数学方法,对流体力学的各类问题进行数值实验、计算机模拟和分析研究,以解决各种实际问题。cfd是模拟飞机气动设计的一个基本工具,从中可以获得飞机周围的流动特性和作用于飞机表面的气动力。这些计算在计算上是昂贵的,这使得寻求高效的cfd算法成为研究人员永远没有解决的问题。
3.现有技术中,在通过计算流体动力学模拟流体运动的过程中,针对隐式方案是无条件稳定的,需要求解线性系统其中是一个系数矩阵,在计算过程中必须求逆。对该矩阵求逆的计算非常复杂,并且需要采用迭代方法。该系数矩阵的维数跟网格节点成线性关系,当网格节点规模很大时,使用例如,jacobi(雅可比)方法,lu方法或gmres(广义最小残差法)等经典的算法,实现该系数矩阵的求解将非常的困难。
4.量子计算的固有特征是量子并行性。在希尔伯特空间(复线性空间)中,n量子比特的量子态是一个向量,每个量子操作都是在此线性空间中的变换。如果将对一个实际问题的描述编码为一组量子比特的量子状态向量,则可以通过并行执行一个操作来处理向量实现问题的求解,而无需迭代一组量子比特中每个量子比特的状态。例如,如果将矩阵和向量相乘,不再需要for循环,仅需要几个量子门作用于输入的量子态上即可。因此量子计算的并行性可以大大增加cfd的计算速度。所以希望利用量子计算实现cfd模拟。


技术实现要素:

5.本技术实施例的目的在于提供一种基于量子算法的计算流体动力学模拟方法、装置及设备,以实现利用量子计算实现cfd模拟。具体技术方案如下:
6.第一方面,本技术实施例提供了一种基于量子算法的计算流体动力学模拟方法,所述方法包括:
7.在利用有限体积法解析计算流体动力学的过程中,针对流体运动的离散化数值网格中各网格单元,构建表示所述网格单元坐标信息的第一量子线路、表示所述网格单元的状态参数的第二量子线路,其中,所述网格单元的状态参数存储在量子随机存取存储器中,所述量子随机存取存储器可操作处于量子叠加态的地址和数据;
8.基于所述第一量子线路、所述第二量子线路、所述量子随机存取存储器构建表示所述网格单元流体状态变化的线性系统方程的参数的第三量子线路;
9.针对所有的网格单元,基于所述第三量子线路求解所述网格单元的线性系统方程,当所述网格单元的流体状态趋于稳定时,获得所述网格单元线性系统方程的状态参数
表示的流体状态作为所述网格单元的目标状态。
10.第二方面,本技术实施例提供了一种基于量子算法的计算流体动力学模拟装置,所述装置包括:
11.网格量子线路构建模块,用于在利用有限体积法解析计算流体动力学的过程中,针对流体运动的离散化数值网格中各网格单元,构建表示所述网格单元坐标信息的第一量子线路、表示所述网格单元的状态参数的第二量子线路,其中,所述网格单元的状态参数存储在量子随机存取存储器中,所述量子随机存取存储器可操作处于量子叠加态的地址和数据;
12.参数量子线路构建模块,用于基于所述第一量子线路、所述第二量子线路、所述量子随机存取存储器构建表示所述网格单元流体状态变化的线性系统方程的参数的第三量子线路;
13.目标状态获取模块,用于针对所有的网格单元,基于所述第三量子线路求解所述网格单元的线性系统方程,当所述网格单元的流体状态趋于稳定时,获得所述网格单元线性系统方程的状态参数表示的流体状态作为所述网格单元的目标状态。
14.第三方面,本技术实施例提供了一种量子计算机设备,包括:量子线路、量子效应器及量子随机存取存储器,所述量子计算机设备在运行时实现任一所述的基于量子算法的计算流体动力学模拟方法。
15.第四方面,本技术实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现任一所述的基于量子算法的计算流体动力学模拟方法。
16.本技术实施例提供的基于量子算法的计算流体动力学模拟方法、装置及设备,在利用有限体积法解析计算流体动力学的过程中,针对流体运动的离散化数值网格中各网格单元,构建表示网格单元坐标信息的第一量子线路、表示网格单元的状态参数的第二量子线路,其中,网格单元的状态参数存储在量子随机存取存储器中,量子随机存取存储器可操作处于量子叠加态的地址和数据;基于第一量子线路、第二量子线路、量子随机存取存储器构建表示网格单元流体状态变化的线性系统方程的参数的第三量子线路;针对所有的网格单元,基于第三量子线路求解网格单元的线性系统方程,当网格单元的流体状态趋于稳定时,获得网格单元线性系统方程的状态参数表示的流体状态作为网格单元的目标状态,实现了利用量子计算实现cfd模拟。量子计算的固有特征是量子并行性,利用量子计算,相对于经典算法有指数级的加速,从而能够降低cfd的复杂度,增加cfd的实用性。当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
17.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1为相关技术中离散化数值网格的一种示意图;
19.图2为相关技术中离散化数值网格的另一种示意图;
20.图3为相关技术中迭代时间与网格单元个数关系的曲线图;
21.图4本技术实施例的基于量子算法的计算流体动力学模拟方法的第一种示意图;
22.图5为本技术实施例的初始状态的量子线路的一种示意图;
23.图6为本技术实施例的数字版本的的量子线路的一种示意图;
24.图7为本技术实施例的oracle ob的量子线路的一种示意图;
25.图8为本技术实施例的oracle o
l
的量子线路的一种示意图;
26.图9为本技术实施例的oracle oa的量子线路的一种示意图;
27.图10为本技术实施例的量子线性求解器的量子线路的一种示意图;
28.图11为本技术实施例的后处理过程中的量子线路的一种示意图;
29.图12a为现有技术中经典模型的一种示意图;
30.图12b为本技术实施例的量子-经典混合模型的一种示意图;
31.图13为本技术实施例的基于量子算法的计算流体动力学模拟方法的第二种示意图;
32.图14为本技术实施例的网格单元个数与量子比特数之间关系的曲线图;
33.图15为本技术实施例的qdac算法的量子线路的一种示意图;
34.图16a为本技术实施例的实部qadc算法的量子线路的一种示意图;
35.图16b为本技术实施例的相位估计的量子线路的一种示意图;
36.图16c为本技术实施例的实部qadc的量子线路q部分的量子线路的一种示意图;
37.图17a为本技术实施例的关于t的量子线路的一种示意图;
38.图17b为本技术实施例的关于k的量子线路的一种示意图;
39.图17c为本技术实施例的关于w的量子线路的一种示意图;
40.图18为本技术实施例的基于量子算法的计算流体动力学模拟装置的一种示意图。
具体实施方式
41.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
42.申请概述:
43.cfd模拟是飞机气动设计的一个基本工具,从中可以获得飞机周围的流动特性和作用于飞机表面的气动力。cfd问题通常与用数值方法求解一系列方程有关。其中,cfd求解器需要对偏导数方程进行时间积分,因此需要使用时间增量进行迭代以计算系统的小变化,并在系统变得稳定时停止。在这个问题设置上,经典算法中一般通过su2(the standford university unstructured suite,一种斯坦福大学开发的高精度偏微分方程求解器)进行计算。在cfd模拟时,从数学模型开始,需要定义以下元素,包括:数值网格、离散化方法、数值方案及解决方法。
44.数值网格:网格是解决问题的空间连续域的离散表示。将每个空间点都认为是一个节点,由一组相邻节点界定的体积定义一个网格单元。在结构化网格的情况下,每个节点和网格单元由一组索引唯一标识,例如,在二维情况下可以表示为(a,b),其中,a与b分别表
示二维空间的横坐标及纵坐标,例如图1所示,由一组网格节点(a,b,c,d,

)组成已知坐标的网格,控制体积中心(又叫单元)坐标为p(a,b)。非结构化网格通常由四面体元素组成,并且需要一个连通性列表,该列表指定给定的一组节点组成一个单元的方式。
45.离散化方法:解决上述流体动力学方程式的标准方法是fvm(finite volume method,有限体积法)。fvm方法中将数值网格划分为多个网格单元,考虑了与每个网格单元相关联的局部体积,并应用了积分守恒定律。这种定律表明,体积ω内流体的所有变量u的变化仅取决于其表面s上的通量f。fvm可以自动满足流体力学方程式的守恒性质。这个守恒方程可以写成如下:
[0046][0047]
数值方案:在空间连续域离散化之后,要求解的方程的数学运算符也必须离散化,方程的这种近似是通过数值方案实现的。考虑两种类型的数值方案:时间积分方案和空间方案。时间积分方案是指从流体的最初状态开始对需要求解的变量的时间进行积分建模,而空间方案则代表这些需要求解的变量的空间梯度。
[0048]
解决方法:一旦建立了离散问题和数值方案,就必须解决一个代数方程组。根据方案的性质,需要迭代方法。
[0049]
求解公式(1)守恒方程的一种有效方法是fvm。基于上述介绍的离散化数值方案和解决方法,需要对空间的数值网格进行求解。在二维空间,每个空间点是一个节点,由一组索引标识。通过最近相邻节点连接的节点集合形成网格,示例性的例如图2所示,节点(a,b)、节点(a,b 1)、节点(a 1,b)、节点(a 1,b 1)组成的四边形网格。两个相邻节点之间的线的中点和相邻网格的中心点决定了一个节点周围的单元,例如图2中的以节点(a,b)为中心的八边形单元。守恒方程应用于网格的每个单元,即网格单元。在公式(1)的离散化表示中,微分运算被数值逼近代替,并选择隐式欧拉格式来处理时间微分。公式(1)离散为:
[0050][0051]
un为第n个时刻(第n次积分)所有网格单元的流体状态,un={ui},i=0,1,2,

,n-1,ui=(ρ,ρu,ρν,ρe)i表示第i个网格单元的流体状态,ρ表示流体密度,u及v表示流体速度在二维坐标下的两个分量,e表示单位质量流体的总能量,bn(un)表示第n个时刻的残差量,且其为与un相关的函数。
[0052]
令δun=u
n 1-un,则:
[0053][0054]
将公式(3)代入公式(2),得到:
[0055][0056]
其中,δ
i,i

δ
j,j

为与网格单元的坐标信息相关的参数。
[0057]
另则,公式(4)等价为:
[0058]
a(un)δun=-bn(un)
ꢀꢀ
(5)
[0059]
其中,a(un)表示第n个时刻的系数矩阵,且其为与un相关的函数。
[0060]
将a(un)简写为an,将-bn(un)简写为bn,从而得到了一个需要求解线性系统:anδun=bn的迭代问题。
[0061]
当网格单元数目为n时,那么un的维数为4n,求解时,获取这n个网络单元的流体初始状态得到u0,根据u0计算得到a0,b0,解a0(u
1-u0)=b0,得到u1,然后计算a1,b1,得到u2,一直迭代下去,迭代截止条件是bn趋近于0。在这种情况下,需要使用求解anδun=bn形式的线性系统的方法,其中,δun=u
n 1-un。
[0062]
经典方案中,隐式欧拉求解器具有线性复杂度,an是一个稀疏矩阵,在计算过程中必须求逆。对该矩阵求逆的计算非常复杂,并且需要采用迭代方法。经典的求解方法采用多重网格法,该稀疏矩阵的维数跟网格节点成线性关系,复杂度为o(n),其中n为网格单元数。经典方案中,运行时间与网格单元的数量具有很好的线性关系,例如图3,当网格节点规模很大时,使用例如,jacobi(雅可比)方法,lu方法或gmres(广义最小残差法)等经典的算法,实现将非常的困难。
[0063]
有鉴于此,为了降低cfd的复杂度,增加cfd的实用性,本技术实施例提供了一种基于量子算法的计算流体动力学模拟方法,该方法包括:在利用有限体积法解析计算流体动力学的过程中,针对流体运动的离散化数值网格中各网格单元,构建表示所述网格单元坐标信息的第一量子线路、表示所述网格单元的状态参数的第二量子线路,其中,所述网格单元的状态参数存储在量子随机存取存储器中,所述量子随机存取存储器可操作处于量子叠加态的地址和数据;基于所述第一量子线路、所述第二量子线路、所述量子随机存取存储器构建表示所述网格单元流体状态变化的线性系统方程的参数的第三量子线路;针对所有的网格单元,基于所述第三量子线路求解所述网格单元的线性系统方程,当所述网格单元的流体状态趋于稳定时,获得所述网格单元线性系统方程的状态参数表示的流体状态作为所述网格单元的目标状态。
[0064]
量子计算的固有特征是量子并行性。在希尔伯特空间(复线性空间)中,n量子比特的量子态是一个向量,每个量子操作都是在此线性空间中的变换。如果将对一个实际问题的描述编码为一组量子比特的量子状态向量,则可以通过并行执行一个操作来处理向量实现问题的求解,而无需迭代一组量子比特中每个量子比特的状态。例如,如果将矩阵和向量相乘,不再需要for循环,仅需要几个量子门作用于输入的量子态上即可。本技术实施例中,实现了利用量子计算实现cfd模拟,利用量子计算,相对于经典算法有指数级的加速,从而能够降低cfd的复杂度,减少cfd的计算时间,增加cfd的实用性。
[0065]
以下进行具体说明:
[0066]
首先,对本技术实施例中的符号进行解释。
[0067]
n:网格单元数。
[0068]
表示编码所有网格单元初始状态所用的量子比特数。
[0069]
qf:用浮点数表示的量子比特数。
[0070]
itimes:迭代次数。
[0071]
ui=(ρ,ρu,ρν,ρe)i,第i个网格单元的变量(也称为状态参数),也表示i个网格单元的流体状态,共有4个变量。
[0072]
un={ui},i=0,1,2,

,n-1,un表示问题对应的所有变量,也表示所有网格单元的流体状态的集合,维数是4n。
[0073]
当线性系统方程anδun=bn的残差bn趋于0时,可以得到稳定的解,量子算法是求解此类线性系统的有效方法。可以建立量子线路来完成计算。参见图4,本技术实施例提供了一种基于量子算法的计算流体动力学模拟方法,包括:
[0074]
s11,在利用有限体积法解析计算流体动力学的过程中,针对流体运动的离散化数值网格中各网格单元,构建表示上述网格单元坐标信息的第一量子线路、表示上述网格单元的状态参数的第二量子线路,其中,上述网格单元的状态参数存储在量子随机存取存储器中,上述量子随机存取存储器可操作处于量子叠加态的地址和数据。
[0075]
本技术实施例的基于量子算法的计算流体动力学模拟方法,可以通过具备量子计算能力的电子设备,例如量子计算机等实现,也可通过经典计算机模拟量子计算实现。
[0076]
第一量子线路用于表示网格单元的坐标信息,第二量子线路用于表示网格单元的状态参数。例如针对第i个网格单元(或称为网格单元i):ui=(ρ,ρu,ρν,ρe)i,第一量子线路用于表示i相关的坐标信息,第二量子线路用于表示(ρ,ρu,ρν,ρe)。
[0077]
网格单元的状态参数存储在qram(quantum random access memory,量子随机存取存储器中,qram是经典随机存取存储器的量子模拟,是一种可以有效地存储和加载量子信息的结构。与普通方式不同,量子随机存取存储器可操作处于量子叠加态的地址和数据,qram在叠加中操作地址。当地址处于叠加状态时,qram使用户能够有效地获取qram中的数据。在一种可能的实施方式中,上述量子随机存取存储器内存储有的地址和数据的预设映射关系,上述地址用第一叠加态编码,上述第一叠加态中的每个本征态对应一个地址信息,上述数据用第二叠加态编码,上述第二叠加态中的每个本征态对应一个数据信息。本技术实施例中qram既可以采用量子的方式实现,也可以采用经典计算机模拟实现,利用经典计算机模拟实现qram为现有技术,还可以采用硬件电路实现,此处不再赘述,
[0078]
s12,基于上述第一量子线路、上述第二量子线路、上述量子随机存取存储器构建表示上述网格单元流体状态变化的线性系统方程的参数的第三量子线路。
[0079]
利用第一量子线路可以得到各网格单元的坐标信息,利用第二量子线路可以得到各网格单元的初始状态参数,由因为网格单元的流体状态时通过状态参数表示的,因此可以得到各网格单元的初始流体状态。量子随机存取存储器能够存储各网格单元的状态参数(包括初始状态参数及迭代后的状态参数),因此基于第一量子线路、第二量子线路、量子随机存取存储器,可以构建表示网格单元流体状态变化的线性系统方程的参数的第三量子线路。
[0080]
s13,针对所有的网格单元,基于上述第三量子线路求解上述网格单元的线性系统方程,当上述网格单元的流体状态趋于稳定时,获得上述网格单元线性系统方程的状态参数表示的流体状态作为上述网格单元的目标状态。
[0081]
可以通过第三量子线路对所有的网格单元的流体状态进行迭代,当网格单元的流体状态趋于稳定时,即残差bn趋于0时,可以得到此时各网格单元线性系统方程的流体状态,即为各网格单元的目标状态。
[0082]
可选的,在得到各网格单元的目标状态后,可以将网格单元的目标状态转化为模拟编码态,并测量上述模拟编码态,从而完成流体运动的计算流体动力学的解析。
[0083]
从量子随机存取存储器中读取的网格单元的目标状态为数字态(量子数字态),需要转化为模拟编码态(量子模拟态),并通过测量模拟编码态得到用于描述流体运动的经典
数据,从而完成后续流体运动的计算流体动力学的解析。
[0084]
网格单元的目标状态的量子形式的数字编码态表示为保存在qram中。经典信息的提取过程如下:首先从qram中读取数字编码态的然后通过qdac(quantum digital-to-analog converter,量子数模转换器),将数字编码态转化为模拟编码态:其中,可以理解的是,模拟编码态是指数字信息编码在量子态振幅上的态,而数字编码态是指数字信息编码在量子态本身(相等于寄存器)上的态。最后,通过测量模拟编码态来提取经典信息。
[0085]
在计算的过程中需要用到n个网格单元,当网格单元的数量n很大时,可选的,可以分多次采集网格单元的流体状态。单次采样时,可以只采样n个网格单元中的n1个网格单元的流体状态,从而通过多次采样得到最后输出的经典信息。假设降维后第j个网格包含aj个原来的网格,一共采样m次,第j个网格出现的次数为bj次,则得到的n1个网格的解可以表示为:为:最终采样m次,由于qdac是概率性的操作,因此有概率会将数字信息成功转化为模拟信息,因此需要m/p次从qram中提取信息以及m/p次的qdac转换。
[0086]
量子计算的固有特征是量子并行性,本技术实施例中,利用量子计算的量子并行性,相对于经典算法有指数级的加速,从而能够降低cfd计算的复杂度,减少cfd计算的时间,增加cfd的实用性。
[0087]
为了便于量子线路的设计,方便明确各量子线路的功能,在一种可能的实施方式中,上述第一量子线路包括第一oracle及第二oracle;上述第一oracle用于提取指定网格单元的相邻网格数,上述第二oracle用于提取网格单元的坐标信息。
[0088]
利用网格化方案将网格单元坐标相关的参数编码到第一量子线路中。此处可以定义了两个oracle:第一oracle(以下表示为o
adjacent
)和第二oracle(以下表示为o
coor
)。其中,o
adjacent
用于提取指定网格单元的相邻网格数,可以表示为:
[0089]oadjacent
|i》|j》=|i》|g(i,j)》
ꢀꢀ
(6)
[0090]
其中:g(i,j)是网格单元i的第j个相邻的网格单元。
[0091]ocoor
用于提取网格单元的坐标,可以表示为:
[0092][0093]
其中表示和网格单元i相关的坐标信息,比如网格单元i各个顶点的坐标。还可以用o
coor
得到其它的位置信息,比如网格单元i中心的坐标和网格单元i每条边的法线。
[0094]
构建o
adjacent
和o
coor
所需的量子比特数量分别为2(m-2),m-2 c0qf,这里c0qf是一个量子比特序列,表示从网格单元坐标中获得的坐标信息和其他位置信息,c0是一个常数。构建o
adjacent
和o
coor
的复杂度依赖于网格方案的复杂度。其中,复杂度可以为所以o
adjacent
和o
coor
的复杂度为
[0095]
在本技术实施例中,第一量子线路包括第一oracle及第二oracle;第一oracle用于提取指定网格单元的相邻网格数,第二oracle用于提取网格单元的坐标信息,将第一量子线路的功能分配给第一oracle及第二oracle实现,明确了每部分的功能,便于量子线路的设计及应用。
[0096]
在数据转换的过程中,需要用到量子数字态及模拟编码态两种形式的状态参数,在一种可能的实施方式中,上述第二量子线路,包括:通过量子态的振幅提取上述网格单元的状态参数的第二模拟态量子线路,和通过量子态的本征态提取上述网格单元的状态参数的第二数字态量子线路。
[0097]
第二量子线路包括第二模拟态量子线路及第二数字态量子线路,第二模拟态量子线路用于通过量子态的振幅提取上述网格单元的状态参数,即用于表示模拟编码态的状态参数;第二数字态量子线路用于通过量子态的本征态提取上述网格单元的状态参数,即用于表示数字态的状态参数。
[0098]
在利用fvm求解的过程中,每个网格单元的状态参数ui的初值可以认为是相同的,可以表示为ui=(x0,x1,x2,x3),其中,x0,x1,x2,x3分别为ρ,ρu,ρν,ρe的具体数值,所以所有网格单元的初始状态u0可以表示为:
[0099][0100]
其中:j=imod4,即i/4取余数,最终xj是x0、x1、x2和x3中的一个。为u0的模拟编码态的表示形式,为可以用如图5所示的量子线路来制备。
[0101]
同样,还可以构建数字版本的即:
[0102][0103]
其中,为u0的数字态的表示形式,对应的量子线路可以如图6所示。
[0104]
可以保存在qram,qram的定义如下:
[0105][0106]
上式中的mu作为保存网格单元参数状态变量的数据存储器,是一个量子随机存取存储器qram,具有量子逻辑门的功能,并且mu可以作用在一个叠加态上面。需要说明的是,上述定义的qram是一种可以有效地存储和加载量子信息的结构,qram将地址和数据均编码在量子比特上,可以通过量子比特的叠加态表示地址,因此能够在叠加态中操作地址。qram能够使数字形式的量子数据并行加载和存储以时间复杂度o(logn)进行。其中,时间复杂度o(logn)表示当数据增大n倍时,耗时增大logn倍,其中的log可以是以2为底的。
[0107]
由上述描述可知,线性系统方程可以为:anδun=bn,其参数为系数矩阵an和当前时刻的残差量bn,因此可以将第三量子线路的功能进行更加细致的划分。
[0108]
在一种可能的实施方式中,上述线性系统方程为:anδun=bn;其中:δun=u
n 1-un;其中:n表示记录流体状态的第n个时刻;un表示第n个时刻网格单元的流体状态,un={ui},i=0,
1,2,

,n-1,ui表示网格单元i的流体状态;an表示第n个时刻的系数矩阵,且表示an为与相关的函数,bn表示第n个时刻的残差量,且表示bn为与相关的函数,n为网格单元的总数量,为上述网格单元的坐标信息。
[0109]
上述线性系统方程的参数包括当前时刻的系数矩阵an和当前时刻的残差量bn;上述第三量子线路包括对应上述系数矩阵an的oracle oa,和对应上述残差量bn的oracle ob;系数矩阵an是一个稀疏矩阵,并且当i和j相邻时,元素ai′j′
是非零的;上述oracle oa用于提取当前n时刻系数矩阵an的元素ai′j′
,其中,ai′j′
表示系数矩阵中第i

行第个j

元素;an={ai′j′
},i

=4i i1;j

=4j j1,i,j=0,1,2,

,n-1;i1,j1∈[0,3]的整数;对网格单元i的第j个相邻网格单元,上述oracle oa的作用为oa|i》|j》=|i》|j》|ai′j′
》;上述oracle ob用于提取当前n时刻的残差量bn的元素bi,其中,bi表示网格单元i的残差量,bn={bi},i=0,1,2,

,n-1;对网格单元i,上述oracle ob的作用为ob|0》=∑
ibi
|i》。
[0110]
oracle ob对网格单元的初始流体状态,即|0》态的作用为ob|0》=∑
ibi
|i》,bi表示网格单元i的残差量,为第个网格单元及其邻近网格单元的状态参数和坐标的函数,这些函数的表达式是规则的,具体来说,bi的表达式只与i mod4相关,因此可以有效地构造bi,其中,mod表示求余运算。oracle ob的一种可能的量子线路图可以如图7所示。
[0111]
首先,得到相关的状态参数和坐标:|i》|u
related
》|x
related
》,x
related
表示相关网格单元的坐标信息,u
related
表示相关网格单元对应的状态参数信息。
[0112]
然后,计算bi得到:|i》|u
related
》|x
related
》|bi》。
[0113]
此处,可以不计算|u
related
》和|x
related
》,|i》|bi》,因为其是为了计算目标状态而构建出的辅助态,可以使用qdac进行操作,完成∑
ibi
|i》的过程。
[0114]
在这个过程中,所需的量子比特的数量是m cbqf,m为一个常数,表示备用的量子比特的数量,cbqf是一个辅助量子比特序列用来计算bi;也可以用于qdac量子线路。假设qdac的成功率是p
qdac
,则mu,o
adjacent
和o
coor
的使用次数为o(1/p
qdac
)。量子逻辑门的复杂度是o(poly(m)/p
qdac
poly(1/∈p
qdac
)),其中∈代表qdac的准确度。
[0115]
下面对oracle ob的一种可能的构建方式进行说明,在一种可能的实施方式中,上述基于上述第一量子线路、上述第二量子线路、上述量子随机存取存储器构建表示上述网格单元流体状态变化的线性系统方程的参数的第三量子线路,包括:
[0116]
步骤a,针对bn包括的对应于网格单元i的残差量bi,获取网格单元i的相关网格单元。
[0117]
步骤b,基于上述第二oracle获取上述相关网格单元的坐标信息作为第一相关坐标信息x
related

[0118]
步骤c,基于上述第二量子线路和上述量子随机存取存储器,获取相关网格单元对应的状态参数信息作为第一相关状态参数u
related

[0119]
步骤d,构建用于同时编码上述第一相关坐标信息和上述第一相关状态参数的第一子量子线路oracle o
b1
,oracle o
b1
用于实现:
[0120]
|i》|0》|0》

|i》|u
related
》|x
related
》。
[0121]
步骤e,根据u
related
和x
related
获得bi(x
related
,u
related
)。
[0122]
步骤f,构建编码bi(x
related
,u
related
)的第二子量子线路oracle o
b2
,oracle o
b2

于实现|i》|u
related
》|x
related
》|0》

|i》|u
related
》|x
related
》|bi》。
[0123]
步骤g,构建第三子量子线路oracle o
b3
,其中:上述第三子量子线路oracle o
b3
是上述第一子量子线路oracle o
b1
的转置共轭量子线路,oracle o
b3
用于实现|i》|u
related
》|x
related
》|bi》

|i》|0》|0》|bi》。
[0124]
步骤h,构建用于量子态转化的第四子量子线路oracle o
b4
,oracle o
b4
用于实现|i》|0》|0》|bi》

bi|i》。
[0125]
步骤i,基于上述第一子量子线路oracle o
b1
、上述第二子量子线路oracle o
b2
、上述第三子量子线路oracle o
b3
和上述第四子量子线路oracle o
b4
构建oracle ob。
[0126]
需要说明的是,借助上述第一子量子线路oracle o
b1
、上述第二子量子线路oracle o
b2
、上述第三子量子线路oracle o
b3
和上述第四子量子线路oracle o
b4
构建oracle ob只是一种可能方式,一方面上述第一子量子线路oracle o
b1
、上述第二子量子线路oracle o
b2
、上述第三子量子线路oracle o
b3
和上述第四子量子线路oracle o
b4
并不遵守严格的顺序步骤限制,另一方面,每个子量子线路,其本质均是实现某种功能的一个量子态演化操作,即等效一个量子量子逻辑门。量子逻辑门在具体应用场景中,可以作用在用于描述具体应用场景的不同的量子态上和/或辅助量子比特位的预设量子态上,更直观的理解是,初始量子态的选择和设置不是唯一的,这是符合量子态叠加特性的,也是基于量子比特资源的占用和释放方便性,本领域技术人员可以按需进行设置的,示例性的,在|i》|u
related
》|x
related
》|0》

|i》|u
related
》|x
related
》|bi》的实现过程中,可以设置初始态是|i》|u
related
》|x
related
》|0》之前的其它态,例如初始态是|i》|u
related
》|x
related
》|1》。此时,为实现量子态演化操作的可逆操作,需要在通过额外量子线路进行量子比特资源的释放。
[0127]
在本实施例中,优选设置初始态为|i》|u
related
》|x
related
》|0》,一方面可以减少量子态初始态制备的复杂程度,另一方面,可以在实现该功能性的量子态演化操作的可逆操作的过程中,减少量子线路的在编码的复杂程度,整体可以起到简化量子线路的设置的效果。
[0128]
同理,对上述其它功能oracle的设置,也满足以上量子线路简单方便优化设置的需求。故可以理解的是,以上提供的步骤a到步骤i只是oracle ob的一种可能的构建方式。oracle oa对网格单元的流体状态的作用可以为:
[0129][0130]ai
′j′
为系数矩阵的一个元素,为异或符号,z为自定义二进制数,可以为0,此时公式(11)可以表示为:oa|i》|j》=|i》|j》|ai′j′
》。
[0131]
系数矩阵ai′j′
表示为:
[0132][0133]
i0、j0分别表示网格单元i、j的编号,即i、j的具体数值,每个网格单元有4个状态参数,i1、j1范围是0~3的整数(包括0及3),分别表示网格单元i0、j0的4种状态参数。表示网格单元i0中的状态参数,,u
j0
表示网格单元j0中的状态参数;表示网格单元i0相关的位置坐标,x
j0
表示网格单元j0相关的位置坐标。
[0134]
这里函数形式对于不同的i0,i1,j0,j1也是有规律的,它们可以分为2种类
型:i0=j0和i0≠j0,对于不同的i1和j1,每种类型又包含16种情况,因此,可以有效地构建oa。
[0135]
为了计算首先构造:
[0136][0137]
则就是的算术表达式,从而得到:
[0138][0139]
因为及为为了计算目标状态而构造出的辅助态,因此可以不必计算。
[0140]
从而实现oracle oa,其对应的量子线路如图8所示。所需的量子比特数是2m caqf,caqf是用来计算a
ij
的辅助量子比特序列。量子逻辑门的复杂度为o(poly(m))。a
ij
的表达式比bi更复杂,所以ca≥cb。
[0141]
下面对oracle oa的一种可能的构建方式进行说明,在一种可能的实施方式中,上述基于上述第一量子线路、上述第二量子线路、上述量子随机存取存储器构建表示上述网格单元流体运动状态变化的线性系统方程的参数的第三量子线路,包括:
[0142]
步骤1,针对an包括的系数矩阵ai′j′
,基于上述第一oracle获取网格单元i的第j个相邻网格单元的网格数g(i,j),其中:g(i,j)为网格单元的状态参数和坐标信息的函数。
[0143]
步骤2,基于网格单元i的第j个相邻网格单元的网格数g(i,j)构建ai′j′
的第i行第j个非零元素的列数f(i,j);其中,其中:f(i,j)为网格单元的状态参数和坐标信息的函数,%表示取余运算,表示向下取整符号。
[0144]
此处量子线路的构造有一个技巧,例如图9所示。可以简单地对i和j的最高log(n)量子比特进行第一oracle运算,然后,在|i》和|j》的整个空间中构造了o
l
,其中o
l
对网格单元状态的作用可以写为:o
l
|i》|j》=|i》|f(i,j)》,在这个过程中所需的量子比特数是2m。
[0145]
步骤3,根据f(i,j)获得a
ij
,其中:
[0146][0147]
i0、j0表示网格单元i、j的编号,每个网格单元有4个状态参数,i1、j1范围是0~3,分别表示网格单元i0、j0的4种状态参数;表示网格单元i0中的状态参数,,u
j0
表示网格单元j0中的状态参数;表示网格单元i0相关的位置坐标,x
j0
表示网格单元j0相关的位置坐标。
[0148]
步骤4,针对i0和j0,利用上述量子随机存取存储器提取其对应的状态参数和u
j0
;并利用上述第二oracle提取其对应的坐标信息和x
j0

[0149]
步骤5,构建用于同时编码上述坐标信息和x
j0
和上述状态参数和u
j0
的第一子量子线路oracle o
a1
,oracle o
a1
用于实现:
[0150][0151]
步骤6,构建编码的第二子量子线路oracle o
a2
,oracle o
a2
用于实现:
[0152][0153]
步骤7,构建第三子量子线路oracle o
a3
,其中:上述第三子量子线路oracle o
a3
是上述第一子量子线路oracle o
a3
的转置共轭量子线路,oracle o
a3
用于实现用于实现
[0154]
步骤8,基于上述第一子量子线路oracle o
a1
、上述第二子量子线路oracle o
a2
和上述第三子量子线路oracle o
a3
构建oracle oa。
[0155]
同上述借助第一子量子线路oracle o
b1
、上述第二子量子线路oracle o
b2
、上述第三子量子线路oracle o
b3
和上述第四子量子线路oracle o
b4
的构建oracle ob过程只是一种可能方式的论述,上述借助第一子量子线路oracle o
a1
、上述第二子量子线路oracle o
a2
和上述第三子量子线路oracle o
a3
构建oracle oa的过程也只是一种可能方式,在此不在赘述。
[0156]
在一种可能的实施方式中,上述针对所有的网格单元,基于上述第三量子线路求解上述网格单元的线性系统方程,当上述网格单元的流体状态趋于稳定时,获得上述网格单元线性系统方程的状态参数表示的流体状态作为上述网格单元的目标状态,具体包括:
[0157]
步骤一,针对所有的网格单元,基于上述第三量子线路表示的上述线性系统方程,从上述网格单元的状态参数的初始值开始,对上述线性系统方程进行迭代直至bn趋近于0时,获取此时的δun。
[0158]
步骤二,根据获取的δun对上述量子随机存取存储器中存储的un进行更新,得到u
n 1
作为上述网格单元的目标状态。
[0159]
将问题线性化后,转化为求解线性方程,该过程的目标是输出一个目标状态:
[0160][0161]
这样这样为计算得到的目标状态,|x》为目标状态的真值,|x》的振幅满足其中,∈为预设的精度。
[0162]
此处可以使用安德鲁
·
柴尔德(andrew childs)的chebyshev方法的量子线性求解器(quantum linear solver)作为计算的加速器,该量子线性求解器的整体量子线路可以如图10所示。其中,t=o(log(j0))是控制比特的量子比特数,α为的归一化常数。总共的量子比特数是2(m 1) t caqf。通过量子线性求解器得到
[0163]
将转化为数字形式:
[0164]
根据mu生成以下状态:mu为量子随机存储器中存储的所有网格单元的流体状态。
[0165]
接着在和上执行量子加法器,得到:
[0166]
用解纠缠得到其量子线路如图11所示。
[0167]
从而得到并用更新mu。在此过程中,需要m 2qf个量子比特。用到两次mu,一次qadc和一次量子加法器。
[0168]
从量子随机存取存储器中获取演化得到的态为数字编码态即网格单元的目标状态。
[0169]
在一种可能的实施方式中,上述δun为信息编码在量子态振幅上的模拟编码态数据;上述根据δun对上述量子随机存取存储器中存储的un进行更新,得到u
n 1
作为上述网格单元的目标状态,具体包括:
[0170]
步骤1,构建第一数据转化量子线路oracle o
convert1
,oracle o
convert1
用于实现:
[0171]
δun|i》|0》

|i》|δun》。
[0172]
步骤2,从上述量子随机存取存储器中提取un。
[0173]
步骤3,构建量子加法器线路oracle o
add
,oracle o
add
用于实现:
[0174]
|i》|un》|δu》

|i》|un》|u
n 1
》。
[0175]
步骤4,构建第二数据转化量子线路oracle o
convert2
,oracle o
convert2
用于实现:|i》|un》|u
n 1


|i》|0》|u
n 1
》。
[0176]
步骤5,获得由依次设置的上述第一数据转化量子线路oracle o
convert1
、上述量子随机存取存储器、上述量子加法器线路oracle o
add
和上述第二数据转化量子线路oracle o
convert2
的量子线路编码的由量子态本征态编码的|i》|0》|u
n 1
》作为上述线性系统方程所包含的状态参数目标值。
[0177]
步骤6,根据上述状态参数目标值得到上述网格单元的目标状态。
[0178]
需要说明的是,同上述借助第一子量子线路oracle o
b1
、上述第二子量子线路oracle o
b2
、上述第三子量子线路oracle o
b3
和上述第四子量子线路oracle o
b4
的构建oracle ob过程只是一种可能方式的论述,上述借助上述第一数据转化量子线路oracle o
convert1
、上述量子随机存取存储器、上述量子加法器线路oracle o
add
和上述第二数据转化量子线路oracle o
convert2
得到量子线路的过程也只是一种可能方式,在此不在赘述。在一种可能的实施方式中,上述根据上述状态参数目标值得到上述网格单元的目标状态,具体包括:
[0179]
步骤a,构建第三数据转化量子线路oracle o
convert3
,oracle o
convert3
用于实现:|i》|0》|u
n 1

→un 1
|i》。
[0180]
需要说明的是,oracle o
convert3
用于实现数字编码态到模拟编码态的转变,但是所转变的量子态并不是唯一的,示例性的:oracle o
convert3
用于实现:|i》|1》|u
n 1

→un 1
|i》|1》,此时对应实现oracle o
convert3
的量子线路将需要多一位的辅助量子比特编码|1》态,不满
足量子线路设置时需要尽量简化的需求。
[0181]
步骤b,利用上述第三数据转化量子线路orracle o
convert3
将上述状态参数目标值转换为由量子态振幅编码的u
n 1
,获得各上述网格单元的目标状态。
[0182]
线性系统anδun=bn能够通过量子算法来解。然而,输出结果是相关的态,而不是真实解的向量形式。不同于向量量子态|δu》已经被归一化:
[0183][0184]
对于不同的a和b,有不同的归一化常数;通常第n次迭代的常数cn不同于第n 1次迭代的常数c
n 1
,等于也就是说执行像的操作是必须的。还需要实现|δui》加上|δuj》。假设存在充分大的常数l,构建一个新的态|δu

》:
[0185][0186]
其中,
[0187]
进而得到方程的一个新集合:
[0188][0189]
当δt充分小时,线性化方程(19)中的第二个方程,用δu

in-1
δu

in
提换δu

i2
。从而得到一个新的线性系统其中,
[0190][0191]
对于态|δu

》,归一化常数总是1。然后,就能够自由地完成数学操作(用|δu

》的前n部分)。当n充分大时,a

也是一个稀疏矩阵,因此能成功构建它。
[0192]
可选的,本技术实施例基于量子算法的计算流体动力学模拟方法可以应用到su2中,通过量子子程序替换某些模块,在执行过程中寻求量子加速。在su2中替换的模块为cfluiditeration(计算流体迭代)类里面使用到的数据结构和方法。在数据结构中,它们被量子存储器或量子状态的集合所取代,这些量子状态包括关于网格设置和线性方程中涉及的所有向量的信息。对于时间积分,线性解算器被量子解算器所取代。在预处理和后处理阶段,它们完全被量子算法模块所取代,形成量子线性求解器所必需的oracle。此外,并没有改变问题模型、网格设置和有限体积法,包括时间积分的迭代过程。
[0193]
量子算法的时间复杂度与logn成正比,其中n表示网格中的单元数或网格数。量子比特的数量也与logn成比例。此外,网格数量、复杂性和量子比特的数量都受到精度∈的影
响;条件数κ和稀疏性s也会影响时间复杂性,可选的,因为精度∈、条件数κ及稀疏性s的变化不大,所以在计算中可以认为他们是不变的。
[0194]
su2是一个开源的流体动力学解决方案,本技术实施例中利用量子子过程代替经典求解器中的一些模块,形成一个量子-经典混合模型,最后演示量子加速,其中,经典模型例如图12a所示,量子-经典混合模型例如图12b所示。
[0195]
针对su2_cfd模块,程序从读取配置文件的主函数(main)开始。然后通过计算流体驱动器(cfluiddriver)实例来控制整个计算过程,即执行计算流体迭代。时间积分在一个由cfluiditeration控制的for循环中执行。在每个迭代步骤中,调用multigrid_cycle(多重网格循环)方法和预处理方法。multigrid_cycle包含计算fvm问题的multigrid(多重网格)算法。预处理连接上一个迭代的结果和下一个迭代的输入。在multigrid_cycle中,预处理子进程读取网格的数据并生成jacobi(雅克比)矩阵,然后将其发送到ceulersolver(流体控制方程处理器)并通过经典线性求解器求解线性方程。
[0196]
cmultigridintegration(多重网格积分)的预处理模块包括预处理生成的线性问题。这部分被一个对应的量子算法所替代,并调用包含网格信息数据的oracle。与经典过程相似,最终目标是生成下一步所需的量子数据:量子线性求解器。
[0197]
模块multigrid_cycle调用cmultigridintegration中的timeintegration(时间积分)模块,取而代之的是量子线性求解器,它执行任务的速度要比经典解算器快得多。
[0198]
cfluiditeration中的预处理处理multigrid_cycle之后的结果,然后为下一次迭代生成数据,并显示结果。这个模块被一个量子后处理所取代,其目的是向向量中添加变化并准备下一次迭代。
[0199]
量子计算过程可以如图13所示,其中,图12a中标识101的部分被替换为quantum preprocessing(量子预处理),标识102的部分被替换为quantum linear solver(量子线性求解器),标识103的部分被替换为quantum postprocessinig(量子后处理)。每个迭代步骤中的量子过程都会执行一步时间积分δt,输入输出有如下关系:
[0200][0201][0202]
由此可以得到量子线性解算器所需的量子oracles。这里在第i 1次迭代中,a
i 1
表示系数矩阵,b
i 1
表示残差量,表示网格单元的坐标信息的量子oracle。然后用量子计算机求解如下方程:
[0203][0204]
然后,通过在最后一步中增加变化量,这个迭代步骤就结束了:
[0205][0206]
其具体实现过程可以参见上述实施例中的相关内容。在模型中qram是演示量子加速的必要条件,在三个过程中使用qram:一是存储关于网格单元的信息,二是存储求解器的区间结果,三是帮助从执行非酉转换的概率错误中恢复。该算法整个过程中量子比特、查询和量子逻辑门的复杂度。所需的量子比特数是:
[0207][0208]
网格单元数量与量子比特数的关系如图14所示,qram和oracle查询的复杂性为:
[0209][0210]
量子逻辑门的复杂度为:
[0211][0212]
将su2和量子编程框架相结合,编写了求解cfd问题的量子-经典混合求解程序,可以使用qpanda量子编程框架,qpanda及其originir(量子中间表示)支持任何量子qracle的定义和模拟。
[0213]
通过编程实现本技术的量子线性求解器部分,该部分采用生成的线性方程,以su2为输入,并输出量子线路编码方程式。该程序结合了su2模块和量子编程框架qpanda。使用量子oracles进行处理,qpanda支持定义和模拟量子oracles。量子oracle是一个黑盒表示某种量子态的转变。量子oracles的一个典型例子是量子函数:o|x》|0》=|x》|f(x)》,此处计算f(x)用第一个量子寄存器作为输入,第二个量子寄存器作为输出。另外一个例子就是qram可以被视为一种oracle。很多量子算法用到oracle,许多量子算法都使用oracle,但他们不关心oracle的实现-它可以分解成量子门,也可以实现qram。在qpanda中,可以使用“oracle”函数来定义。oracle被认为是具有用户提供的名称。
[0214]
网格生成模块除了可以加速时间积分过程外,还可以集成在量子计算机中。在上述算法中,将网格信息视为oracle。一种直接的方法是预先生成网格文件,将经典数据编码到量子计算机中,也可以用量子算法代替网格生成程序,而不是读取预先生成的网格文件。求解器需要一个有效的矩阵a和常数的量子表示。在这个问题中,偏微分方程组需要被线性化,以得到a和的表达式。
[0215]
为了提升本技术实施例中的加速效果,量子计算机需要满足以下要求:容错,本技术实施例的方法加快了每个迭代步骤的计算速度,然而,随着网格数量的增加,迭代的次数会大大增加。过程中不执行量子测量来提取每一步的结果。而在整个计算过程中保留量子特征(纠缠、叠加)。该方法的这一特点意味着量子态的存储不受退相干和噪声的影响,具有容错能力的量子计算机能够增加计算结果的准确性。
[0216]
量子-经典混合算法面临着经典与量子之间的数据转换问题。问题是在∑|addr》|data》和经典内存之间执行这种转换的时间复杂度是多少。从量子到经典的一个简单方法是重复测量,或者是经常提到的“quantum tomography”。一般情况下从经典到量子的方式是通过一组受控的旋转操作在量子线路中对状态准备阶段进行编码。这些方法很简单,但是会消耗o(2n)时间。如果不能有效地实现量子经典转换,许多量子算法将永远无法实现次线性时间复杂度,因为输入和输出至少会消耗线性时间。为了解决这个问题,需要使用量子随机存取存储器。qram是一种可以有效地存储和加载量子信息的结构,qram在叠加中操作地址。它使数字形式的量子数据能够与时间复杂度o(logn)并行加载和存储。qram是经典随机存取存储器的量子模拟。当地址处于叠加状态时,qram使用户能够有效地获取qram中的数据。
[0217]
qram用于实现:∑i|i》|0》=∑i|i》|ui》。
[0218]
其中,ui表示第i个网格单元的量子态编码的经典数据。
[0219]
qram模型可以使用一组光学设备实现,需要o(logn)操作(n表示内存的长度)。qram模型也通过分解量子线路来实现。
[0220]
在申请实施例中,构建了混合量子-经典方法的量子模块替换su2 cfd解算器中的某些模块,能够是实现通过计算流体动力学模拟流体运动。原始的经典求解器使用fvm以及迭代时间积分来获得流体方程的解。通过多重网格方法,经典求解器在每个迭代步骤之间具有o(n)复杂度;这里的n表示网格数。本技术实施例中使用量子线性求解器来加速线性方程组的求解,替换cfluiditeration过程中的核心过程。一个是multigrid_cycle,包括预处理和方程求解,已被量子过程完全取代。另一个是预处理,它在两个迭代步骤之间链接数据,并且也被量子过程所取代。经典数据自然地被量子数据取代。输入的网格信息应放入预处理器中经常使用的qram中。不再需要计算过程中的大多数内部数据,因为它们被保存在量子寄存器中。整个问题的配置数据被视为常数,用于直接生成量子程序。本技术实施例的方案中时间复杂度o(log(n)),n为网格数,计算速度比经典对数快得多。
[0221]
在申请实施例中,在不更改问题模型的情况下,实现了该问题的指数量子加速。其次,充分展示了su2程序,找到必须做的适当替换,然后借助qpanda量子编程框架实现我们的算法,最终获得了数值结果。并且不忽略用于数据转换的量子-经典接口问题。
[0222]
以下对本技术实施例中的量子线路构造中使用的量子线路模块进行介绍。
[0223]
1.首先对qdac(quantum digital-to-analog converter,量子数模转换器)及qadc(quantum analog-to-digital converter,量子模数转换器)这两个量子线路模块进行介绍。
[0224]
qdac的目的是改变由0到1之间的数字编码的量子态到量子态对应的振幅上。因此,qdac操作由定义:
[0225]
qdac算法的主要思想是通过旋转辅助位来在每个基态前面转换系数,以下从三个方面进行解释。
[0226]
首先,解释成功的可能性。qdac算法只有一定的成功概率和一定的操作失败概率。如果失败,请从头开始运行算法。经过计算,一次成功的概率为
[0227]
其次,qdac算法的量子线路如图15所示。在测量时如果是|0》态,则继续;如果是|1》态,则从头开始做一遍。n表示编码数据所需的量子比特数,m表示所需精度的位数,其中只需要计算高位。ud门表示为:ud({dj})|j》|0》=|j》|dj》。u
ac
门代表arccos函数,受控ry门表示一个比特的受控旋转。如果不考虑n个h门,则一共需要o(m)个门。
[0228]
然后,解释归一化问题。最终系数需要归一化。经过计算,归一化系数c是
[0229]
qadc算法包括绝对值qadc,实部qadc和虚部qadc,这些算法的主要思想涉及hadamard测试和相位估计。本技术中主要运用实部qadc。一个m比特实部qadc操作被定义
为:
[0230]
其中,表示m比特串使得最接近于ck的实部。实部qadc算法的量子线路如图16a所示。相位估计的量子线路如图16b虚线框中所示。实部qadc的量子线路q部分如图16c虚线框中所示。m和n分别代表所需精度的位数和编码数据所需的位数。一个模拟编码酉变换ua({cj})被定义为:这里是经典数据,并且满足归一化条件
[0231]
门g被下式给出:其中,q是图16c中显示的门,s0=i-2(|0》《0|)
data,b
是一个有条件的相位翻转门,zb是仅作用在量子比特b上的泡利z门。pe表示相位估计,iqft是指逆量子傅里叶变换。
[0232]
在相位估计后,q的相位θk可以被编码到register0量子比特上,然后使用量子算术运算u
f(θ)
去计算xk=f(θk)=2sin2πθ
k-1。最后,未计算的数据,b,register0量子比特,数字编码状态被得到。在实部qadc量子线路中,需要2(m n) 1个量子比特。由于门s0可被分解为个单门和双门。因此,单和双量子位门的数量是o(1/∈)个受控ua门被使用。
[0233]
2.通过操作线性组合实现矩阵逆。
[0234]
任何简单的函数都可以线性近似为其他函数的线性组合,可以通过chebyshev多项式近似矩阵的逆函数。具体如下:
[0235][0236][0237]
还有
[0238]
本技术中需要求逆矩阵函数f(x)=1/x,它满足o(‖a-1-f‖)=∈。线性组合为:
[0239][0240]
此处g(x)是2∈,
[0241]
在d
κ
:=(-1,-1/κ)∪(1/κ,1)。是第一类chebyshev多项式。
[0242]
量子游走:为了实现chebyshev多项式,需要在量子行走框架中进行。
[0243]
因为量子游走被执行在空间中的一些态上,定义一个映射从从到
[0244][0245]
和行走算子:
[0246][0247]
算子s执行中的乘积态的翻转操作。于是有:
[0248][0249]
是第一类chebyshev多项式。
[0250]
量子线路实施:用两个oracles来提取矩阵a的信息:o
l
和oa,写作:
[0251][0252]
第一个目标是去编码态可以准备o(j0)长度的量子线路。
[0253]
接下来,构建t算子,算子t可以如下合成。对于向量|j》,整个线路需要个量子比特,同样,表示其乘积状态和一堆辅助量子位用作控制旋转。
[0254][0255][0256][0257]
把a
jl
看作一系列控制比特,定义一个控制旋转算子:
[0258][0259][0260]
算子m被一个oracle o
amp
合成为:
[0261]
目的是准备一个对目标态的逼近。
[0262][0263]
关键的贡献是作为控制旋转算子的m。
[0264]
|α》|0〉:=|α》(sin(θ)|0》 cos(θ)|1》)
[0265]
再次运用oh把|h
jl
》变回|0》。
[0266]
下面,例如图17a-17c所示,说明w的量子线路。因为s可以由一群交换操作构造出来,剩下来的就是
[0267][0268]
所以算子t在量子线路中是酉算子,它把|j》|0》变为|ψj》。它不同于维数为4n2×
2n的t:=∑
j∈n
|ψj》《j|。为了区别,用t
qc
来定义该量子线路:
[0269][0270]
在量子线路中,h表示h门,oh、m表示不同功能的oracle,表示转置共轭,t表示h门及oracle组合的整体功能模块t,t模块的功能即为将|j》变换为|ψj》。并且,获得的输入该t模块的矩阵为n阶矩阵,上方|j》处中的n表示矩阵行数,下方中的n表示矩阵列数,其余表示同上。构建的t模块在量子线路中可等效于量子逻辑门,其矩阵形式为:其中,为量子态左矢。
[0271]
具体的,利用h门,构建叠加态:其中,j为目标取值,表示矩阵的第j行;表示张量积或张乘;d为第j行的非0元素总数;l为非0元素在第j行所有非0中元素的序号,表示第l个非0元素,|l》对应的量子比特位即为第一比特位。
[0272]
oh实现变换:其中,h
jl

为矩阵第j行第l

列的非0元素数值,|h
jl

》对应的量子比特位即为第二比特位。需要说明的是,如果h
jl

为复数,可以将实部和虚部编码到第二比特位上,即|h
jl

》=|real》|imag》,real表示实部,image表示虚部;如果h
jl

写成欧拉形式re

,则可将r和θ的信息编码到第二比特位,即|h
jl

》=|r》|θ》。
[0273]
m实现变换:最后,再调用一次oh进行转置共轭操作,将编码h
jl

的量子比特回收,进而输出|ψj》。其中,h
jl

*
为矩阵h第j行第l

列的非0元素数值的共轭,h
max
为矩阵h中绝对值最大的元素数值。
[0274]
本技术实施例还提供了一种基于量子算法的计算流体动力学模拟装置,参见图18,该装置包括:
[0275]
网格量子线路构建模块201,用于在利用有限体积法解析计算流体动力学的过程中,针对流体运动的离散化数值网格中各网格单元,构建表示上述网格单元坐标信息的第一量子线路、表示上述网格单元的状态参数的第二量子线路,其中,上述网格单元的状态参数存储在量子随机存取存储器中,上述量子随机存取存储器可操作处于量子叠加态的地址和数据;
[0276]
参数量子线路构建模块202,用于基于上述第一量子线路、上述第二量子线路、上述量子随机存取存储器构建表示上述网格单元流体状态变化的线性系统方程的参数的第三量子线路;
[0277]
目标状态获取模块203,用于针对所有的网格单元,基于上述第三量子线路求解上述网格单元的线性系统方程,当上述网格单元的流体状态趋于稳定时,获得上述网格单元线性系统方程的状态参数表示的流体状态作为上述网格单元的目标状态。
[0278]
在一种可能的实施方式中,所述第一量子线路包括第一oracle及第二oracle;所述第一oracle用于提取指定网格单元的相邻网格数,所述第二oracle用于提取网格单元的坐标信息。
[0279]
在一种可能的实施方式中,所述第二量子线路,包括:通过量子态的振幅提取所述网格单元的状态参数的第二模拟态量子线路,和通过量子态的本征态提取所述网格单元的状态参数的第二数字态量子线路。
[0280]
在一种可能的实施方式中,所述量子随机存取存储器内存储有的地址和数据的预设映射关系,所述地址用第一叠加态编码,所述第一叠加态中的每个本征态对应一个地址信息,所述数据用第二叠加态编码,所述第二叠加态中的每个本征态对应一个数据信息。
[0281]
在一种可能的实施方式中,所述线性系统方程为:anδun=bn;其中:δun=u
n 1-un;其中:n表示记录流体状态的第n个时刻;un表示第n个时刻网格单元的流体状态,un={ui},i=0,1,2,

,n-1,ui表示网格单元i的流体状态;an表示第n个时刻的系数矩阵,且表示an为与相关的函数,bn表示第n个时刻的残差量,且表示bn为与相关的函数,n为网格单元的总数量,为所述网格单元的坐标信息;
[0282]
所述线性系统方程的参数包括当前时刻的系数矩阵an和当前时刻的残差量bn;所述第三量子线路包括对应所述系数矩阵an的oracle oa,和对应所述残差量bn的oracle ob;所述oracle oa用于提取当前n时刻系数矩阵an的元素ai′j′
,an={ai′j′
},i

=4i i1,j

=4j j1,i,j=0,1,2,

,n-1;i1,j1是0到3的整数,对网格单元i的第j个相邻网格单元,所述oracle oa的作用为oa|i》|j》=|i》|j》|ai′j′
》;所述oracle ob用于提取当前n时刻的残差量bn的元素bi,其中,bi表示网格单元i的残差量,bn={bi},i=0,1,2,

,n-1;对网格单元i,所述oracle ob的作用为ob|0》=∑
ibi
|i》。
[0283]
在一种可能的实施方式中,所述参数量子线路构建模块202,具体用于:
[0284]
针对bn包括的对应于网格单元i的残差量bi,获取网格单元i的相关网格单元;
[0285]
基于所述第二oracle获取所述相关网格单元的坐标信息作为第一相关坐标信息x
related

[0286]
基于所述第二量子线路和所述量子随机存取存储器,获取相关网格单元对应的状态参数信息作为第一相关状态参数u
related

[0287]
构建用于同时编码所述第一相关坐标信息和所述第一相关状态参数的第一子量子线路oracle o
b1
,oracle o
b1
用于实现:
[0288]
|i》|0》|0》

|i》|u
related
》|x
related
》;
[0289]
根据u
related
和x
related
获得bi(x
related
,u
related
);
[0290]
构建编码bi(x
related
,u
related
)的第二子量子线路oracle o
b2
,oracle o
b2
用于实现|
i》|u
related
》|x
related
》|0》

|i》|u
related
》|x
related
》|bi》;
[0291]
构建第三子量子线路oracle o
b3
,其中:所述第三子量子线路oracle o
b3
是所述第一子量子线路oracle o
b1
的转置共轭量子线路,oracle o
b3
用于实现|i》|u
related
》|x
related
》|bi》

|i》|0》|0》|bi》;
[0292]
构建用于量子态转化的第四子量子线路oracle o
b4
,oracle o
b4
用于实现|i》|0》|0》|bi》

bi|i》;
[0293]
基于所述第一子量子线路oracle o
b1
、所述第二子量子线路oracle o
b2
、所述第三子量子线路oracle o
b3
和所述第四子量子线路oracle o
b4
构建
[0294]
oracle ob。
[0295]
在一种可能的实施方式中,所述参数量子线路构建模块202,具体用于:
[0296]
针对an包括的系数矩阵ai′j′
,基于所述第一oracle获取网格单元i的第j个相邻网格单元的网格数g(i,j),其中:g(i,j)为网格单元的状态参数和坐标信息的函数;
[0297]
基于网格单元i的第j个相邻网格单元的网格数g(i,j)构建ai′j′
的第i行第j个非零元素的列数f(i,j);其中,其中:f(i,j)为网格单元的状态参数和坐标信息的函数,%表示取余运算;表示向下取整符号;
[0298]
根据f(i,j)获得ai′j′
,其中:
[0299][0300]
i0、j0分别表示网格单元i、j的编号,每个网格单元有4个状态参数,i1、j1范围是0~3,分别表示网格单元i0、j0的4种状态参数;表示网格单元i0中的状态参数,,u
j0
表示网格单元j0中的状态参数;表示网格单元i0相关的位置坐标,x
j0
表示网格单元j0相关的位置坐标;
[0301]
针对i0和j0,利用所述量子随机存取存储器提取其对应的状态参数和u
j0
;并利用上述第二oracle提取其对应的坐标信息和x
j0

[0302]
构建用于同时编码所述坐标信息和x
j0
和所述状态参数和u
j0
的第一子量子线路oracle o
a1
,oracle o
a1
用于实现:
[0303][0304]
构建编码的第二子量子线路oracle o
a2
,oracle o
a2
用于实现:
[0305][0306]
构建第三子量子线路oracle o
a3
,其中:所述第三子量子线路oracle o
a3
是所述第一子量子线路oracle o
a3
的转置共轭量子线路,oracle o
a3
用于实现:
[0307]
基于所述第一子量子线路oracle o
a1
、所述第二子量子线路oracle o
a2
和所述第三子量子线路oracle o
a3
构建oracle oa。
[0308]
在一种可能的实施方式中,所述目标状态获取模块203,包括:
[0309]
迭代计算子模块,用于针对所有的网格单元,基于所述第三量子线路表示的所述线性系统方程,从所述网格单元的状态参数的初始值开始,对所述线性系统方程进行迭代直至bn趋近于0时,获取此时的δun;
[0310]
目标状态计算子模块,用于根据获取的δun对所述量子随机存取存储器中存储的un进行更新,得到u
n 1
作为所述网格单元的目标状态。
[0311]
在一种可能的实施方式中,所述δun为信息编码在量子态振幅上的模拟编码态数据;所述目标状态计算子模块,包括:
[0312]
第一构建单元,用于构建第一数据转化量子线路oracle o
convert1
,oracle o
convert1
用于实现:
[0313]
δun|i》|0》

|i》|δun》;
[0314]
状态提取单元,用于从所述量子随机存取存储器中提取un;
[0315]
第二构建单元,用于构建量子加法器线路oracle o
add
,oracle o
add
用于实现:
[0316]
|i》|un》|δu》

|i》|un》|u
n 1
》;
[0317]
第三构建单元,用于构建第二数据转化量子线路oracle o
convert2
,oracle o
convert2
用于实现:|i》|un》|u
n 1


|i》|0》|u
n 1
》;
[0318]
目标值确定单元,用于获得由依次设置的所述第一数据转化量子线路oracle o
convert1
、所述量子随机存取存储器、所述量子加法器线路oracle o
add
和所述第二数据转化量子线路oracle o
convert2
的量子线路编码的由量子态本征态编码的|i》|0》|u
n 1
》作为所述线性系统方程所包含的状态参数目标值;
[0319]
目标状态确定单元,用于根据所述状态参数目标值得到所述网格单元的目标状态。
[0320]
在一种可能的实施方式中,所述目标状态确定单元,具体用于:构建第三数据转化量子线路oracle o
convert3
,oracle o
convert3
用于实现:|i》|0》|u
n 1

→un 1
|i》;利用所述第三数据转化量子线路oracle o
convert3
将所述状态参数目标值转换为由量子态振幅编码的u
n 1
,获得各所述网格单元的目标状态。
[0321]
本技术实施例还提供了一种量子计算机设备,包括:量子线路、量子效应器及量子随机存取存储器,该量子计算机设备在运行时实现上述任一所述的基于量子算法的计算流体动力学模拟方法。
[0322]
本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现上述任一所述的基于量子算法的计算流体动力学模拟方法。
[0323]
需要说明的是,在本文中,各个可选方案中的技术特征只要不矛盾均可组合来形成方案,这些方案均在本技术公开的范围内。诸如第一和第二等之类的关系术语仅仅用来
将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0324]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、量子计算机设备及存储介质的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0325]
以上所述仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本技术的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献