CN115409187A - 基于OpenMP并行模型下的量子机器学习模拟方法及系统 - Google Patents
基于OpenMP并行模型下的量子机器学习模拟方法及系统 Download PDFInfo
- Publication number
- CN115409187A CN115409187A CN202210927534.3A CN202210927534A CN115409187A CN 115409187 A CN115409187 A CN 115409187A CN 202210927534 A CN202210927534 A CN 202210927534A CN 115409187 A CN115409187 A CN 115409187A
- Authority
- CN
- China
- Prior art keywords
- quantum
- machine learning
- parallel
- coefficient matrix
- openmp
- 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.)
- Pending
Links
Images
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
- G06N10/20—Models of quantum computing, e.g. quantum circuits or universal quantum computers
-
- 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
- G06N10/60—Quantum algorithms, e.g. based on quantum optimisation, quantum Fourier or Hadamard transforms
-
- 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
- G06N10/80—Quantum 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于量子计算模拟技术领域,特别涉及一种基于OpenMP并行模型下的量子机器学习模拟方法及系统,首先,针对系数矩阵的线性方程组,通过将输入向量和输出向量映射为两个量子态,通过将线性方程组求解转换为系数矩阵特征值的求解来构建量子模拟器;然后,将量子模拟器部署到经典多核计算机上,并基于OpenMP模型并利用量子机器学习算法,通过分析算法代码中的热点,寻找并选定待并行代码模块,对选定的待并行代码模块进行并行运算处理。本发明在经典多核计算机上利用高级编程语言实现对HHL的算法模拟,能够实现4×4、8×8和16×16矩阵的线性方程求解,适用性强,能够达到较为理想的量子计算效率,便于实际场景应用。
Description
技术领域
本发明属于量子计算模拟技术领域,特别涉及一种基于OpenMP并行模型下的量子机器学习模拟方法及系统。
背景技术
线性系统是很多科学和工程领域的核心,当今很多领域对于线性方程问题的求解有很大的依赖,2009年,有人提出利用量子算法解决线性系统的方程问题,该算法常被研究人员称为HHL算法,它常被应用于机器学习算法中,因为机器学习中的问题最终都与最优化问题的求解相关,而最优化问题常涉及线性方程组的求解。由于HHL算法在特定条件下相较于经典算法有很好的指数加速效果,其已经被广泛应用在数据处理、数值计算、最优化问题等领域。
随着量子科技的快速发展,根据量子特有的叠加性和纠缠性设计的量子计算机得到人们的重视,其强大的并行能力带来了远超经典计算机的强大的算力,然后由于量子计算总体上还处于起步阶段,基于这一背景,想要在真实的量子计算机上进行算法的研究还不能完全实现,所以目前有效的HHL实际应用和实验实现在文献中仍然较少。对于HHL算法的模拟大多是在IBM、本源等公司提供的量子云平台上进行模拟,平台提供的免费可用的量子比特数目较少不足以支持大规模的实验模拟,因此已有的关于HHL算法实验规模都是较小的,基本集中在2×2矩阵和4×4矩阵,所需要的量子比特数也不超过10比特。
发明内容
为此,本发明提供一种基于OpenMP并行模型下的量子机器学习模拟方法及系统,在经典多核计算机上利用高级编程语言实现对HHL的算法模拟,能够实现4×4、8×8和16×16矩阵的线性方程求解,能够达到较为理想的量子计算效率,适用性强,便于实际场景应用。
按照本发明所提供的设计方案,提供一种基于OpenMP并行模型下的量子机器学习模拟方法,包含如下内容:
针对系数矩阵的线性方程组,通过将输入向量和输出向量映射为两个量子态,通过将线性方程组求解转换为系数矩阵特征值的求解来构建量子模拟器,其中,量子模拟器中量子表达式表示为:A|x>=|b>,其中,A为系数矩阵,b为输入向量,x为输出向量;
将量子模拟器部署到经典多核计算机上,并基于OpenMP模型并利用量子机器学习算法,通过分析算法代码中的热点,寻找并选定待并行代码模块,对选定的待并行代码模块进行并行运算处理。
作为本发明中基于OpenMP并行模型下的量子机器学习模拟方法,进一步地,构建量子模拟器中,首先,将系数矩阵转换为Hermitian矩阵,并构建系数矩阵的谱分解数据;然后,将输入向量b在系数矩阵A的特征向量上展开并获取输出向量x。
作为本发明中基于OpenMP并行模型下的量子机器学习模拟方法,进一步,系数矩阵的谱分解表示为:A=∑jλj|μj><μj|,其中,|μj>是系数矩阵A的特征向量,λj是特征向量对应的特征值。
作为本发明基于OpenMP并行模型下的量子机器学习模拟方法,进一步地,量子机器学习模拟求解运算中,首先,初始化输入向量b的量子态,利用相位估计将初始比特量子态分解为系数矩阵的特征向量组合叠加;然后,利用辅助量子位,通过受控旋转操作将特征向量特征值的倒数按比例提取到对应基态的概率福;最后,利用逆量子相位估计来抵消特征寄存器中存储的特征值,通过对量子位进行测量来获取线性方程组解。
作为本发明基于OpenMP并行模型下的量子机器学习模拟方法,进一步地,相位估计中,初始化输入向量b的量子态,将系数矩阵通过哈密顿模拟制备成酉算子,使用酉算子将量子相位估计作用到输入向量b的量子态,将该量子态分解为系数矩阵的特征向量线性组合叠加。
作为本发明基于OpenMP并行模型下的量子机器学习模拟方法,进一步地,利用逆量子相位估计来抵消特征寄存器中存储的特征值的过程表示为:其中,|μj>是系数矩阵A的特征向量,λj是特征向量对应的特征值,βj表示特征基态系数,c表示归一化常数,归一化过程可表示为:c/λj<1。
作为本发明基于OpenMP并行模型下的量子机器学习模拟方法,进一步地,针对量子机器学习算法中量子相位估计,首先,利用线程池ThreadPool函数构建量子相位估计中的受控相位门操作,并将构建受控相位门的任务通过循环逐一添加到线程池中,并采用加锁操作保存构建后的相位门线路。
作为本发明基于OpenMP并行模型下的量子机器学习模拟方法,进一步地,针对量子机器学习算法中,首先,根据控制比特数量构建线程池添加任务的循环代码模块,并对待并行代码模块进行标识;然后,利用多线程来使线程池中任务执行构建受控相位门操作;最后,利用for循环来执行逆量子傅里叶并行操作,将H门和相位门添加到线路上,并通过任务调度将内层循环代码中的各并行块迭代分配到各线程中。
进一步地,本发明还提供一种基于OpenMP并行模型下的量子机器学习模拟系统,包含:模拟器构建模块和并行求解模块,其中,
模拟器构建模块,用于针对系数矩阵的线性方程组,通过将输入向量和输出向量映射为两个量子态,通过将线性方程组求解转换为系数矩阵特征值的求解来构建量子模拟器,其中,量子模拟器中量子表达式表示为:A|x>=|b>,其中,A为系数矩阵,b为输入向量,x为输出向量;
并行求解模块,用于将量子模拟器部署到经典多核计算机上,并基于OpenMP模型并利用量子机器学习算法,通过分析算法代码中的热点,寻找并选定待并行代码模块,对选定的待并行代码模块进行并行运算处理。
本发明的有益效果:
本发明基于经典计算机平台,通过高级编程语言C++对HHL算法进行模拟,并采用OpenMP并行编程模型对算法进行并行加速,可以实现HHL算法模拟解决4×4、8×8、16×16矩阵的线性方程组求解问题;并进一步利用经典计算机下正常运行以及并行加速后的时间对比数据表明,本案方案并行加速效果好,为更大规模的矩阵模拟求解提供参考。
附图说明:
图1为实施例中基于OpenMP并行模型下的量子机器学习模拟流程示意;
图2为实施例中HHL算法线路图示意;
图3为实施例中Fork-join执行模型示意;
图4为实施例中任务调度流程示意;
图5为实施例中不同规模矩阵在不同核数下的加速比示意。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
量子计算由于其天然的叠加性和纠缠性使其具有经典计算技术难以比拟的并行计算能力,基于量子计算强大的并行能力,某些已知的量子算法处理问题的速度要快于经典算法。然而现阶段由于量子计算机的研制还处于发展阶段,想要在量子计算机上进行算法实验的需求还不能被满足,因此可以在经典计算机上对量子算法进行经典模拟。HHL(Hetero-Homogeneous Learning量子机器学习)算法常用来解决线性系统的方程问题,其广泛应用在数据处理、数值计算、最优化问题等领域。本发明实施例,参见图1所示,提供一种基于OpenMP并行模型下的量子机器学习模拟方法,包含:
S101、针对系数矩阵的线性方程组,通过将输入向量和输出向量映射为两个量子态,通过将线性方程组求解转换为系数矩阵特征值的求解来构建量子模拟器,其中,量子模拟器中量子表达式表示为:A|x>=|b>,其中,A为系数矩阵,b为输入向量,x为输出向量;
S102、将量子模拟器部署到经典多核计算机上,并基于OpenMP模型并利用量子机器学习算法,通过分析算法代码中的热点,寻找并选定待并行代码模块,对选定的待并行代码模块进行并行运算处理。
在经典计算机上,任何量子逻辑操作都可以分解成一系列单量子位的逻辑操作和双量子位受控非门的组合序列,而这些单量子位门或双量子门,又可以利用高级编程语言通过矩阵来表示。目前常用的工具有libquantum、Qpanda2.0等已经封装好的包,这些工具把量子计算中需要的门通过代码封装起来,方便使用。而本案实施例中,基于经典计算机平台,通过高级编程语言C++对HHL算法进行模拟,并采用OpenMP并行编程模型对算法进行并行加速,可以实现HHL算法模拟解决4×4、8×8、16×16矩阵的线性方程组求解问题,便于实际场景中的应用。
作为优选实施例,进一步地,构建量子模拟器中,首先,将系数矩阵转换为Hermitian矩阵,并构建系数矩阵的谱分解数据;然后,将输入向量b在系数矩阵A的特征向量上展开并获取输出向量x。
如果矩阵A每行或每列最多具有s个非零元,则将线性方程组可称为s-稀疏线性方程组。用经典算法(共轭梯度法)来解决N维的s-稀疏线性方程组,需要的时间复杂度为这里κ表示系统的条件数,∈表示近似的精度。当A是Hermitian矩阵时,用HHL算法解线性方程组的时间复杂度为经典的求解线性方程的问题为输入一个N×N矩阵A和一个N维向量b,输出N维向量x。可以假设b和x是标准化的,将他们映射为量子态|b>和|x>,其量子表达式如下:
A|x>=|b>
该算法是有一定的限制条件:N×N的矩阵A必须是一个Hermitian矩阵,如果不是,A就需要以某种方式转换成Hermitian矩阵,假设|μj>是A的特征向量,λj是其对应的特征值,由谱分解定理,可知每个Hermitian矩阵都有一个特征向量的标准正交基,所以矩阵A的谱分解可以表示为A=∑jλj|μj><μj|。
对于输入向量|b>,在矩阵A的特征向量上展开,可以得到|b>=∑jβj|μj>。理想的最终状态就是获得由该式可以看出最后要求输出的向量|x>,就是在输入向量|b>之前添加上矩阵A的特征值倒数作为系数。所以,需要进一步的进行公式转换,A|μj>=λj|μj>可得表达式由该式与|b>的表达式可以得到:
因此,可以看出求解线性方程组的问题就转化为了求解矩阵A的特征值信息。HHL算法的的3个子过程是:相位估计,受控旋转,逆相位估计,一般步骤为:
1、第一步是对初始比特应用相位估计,这是在特定基础上分解量子态的一般步骤。初始化量子态|b>,将系数矩阵A通过哈密顿模拟制备制备成酉算子eiAt,通过量子相位估计算法应用受控操作U=eiAt作用到|b>上,将|b>分解为A的特征向量线性组合的叠加。当相位估计算法作用之后|b>状态为∑jβj|μj>,此时整个系统的状态为∑jβj|μj>。
受控旋转操作实现有效量子信息从寄存器到量子态振幅的转移,通过附加量子比特实现了将特征值的倒数按比例提取到了对应基态的概率辐上。
3、利用逆量子相位估计方法抵消寄存器中存储的特征值得到:
在第一量子位上的测量,当测量为|1>时就可以得到
由于HHL算法计算的是与解相关的算子的期望值,而不是解本身,HHL算法相对于经典算法有着指数级的加速,但经典算法可以返回精确解,而HHL算法只能返回近似解。而本案方案中所得到的表达式结果和所求的线性方程组的解成正比,此时只需要测量附加比特为|1>的结果就可以了,其线路图如图2所示。
作为优选实施例,进一步地,针对量子机器学习算法中量子相位估计,首先,利用线程池ThreadPool函数构建量子相位估计中的受控相位门操作,并将构建受控相位门的任务通过循环逐一添加到线程池中,并采用加锁操作保存构建后的相位门线路。针对量子机器学习算法中,首先,根据控制比特数量构建线程池添加任务的循环代码模块,并对待并行代码模块进行标识;然后,利用多线程来使线程池中任务执行构建受控相位门操作;最后,利用for循环来执行逆量子傅里叶并行操作,将H门和相位门添加到线路上,并通过任务调度将内层循环代码中的各并行块迭代分配到各线程中。
目前流行的并行编程模型有OpenMP和MPI,这两种模型最大的不同在于OpenMP是一种适用于共享内存多处理器体系结构的可移植并行编程模型,它只能在单台主机上工作,可以充分利用多核CPU通过多线程将并行负载分配到计算核心来达到加速的目的,而MPI是多主机联网协作进行并行计算的工具,适用于分布式内存系统,它能够协调多台主机之间的并行计算,在并行规模上的可伸缩性很强。
共享式内存并行的基本思路就是使用多线程。OpenMP可采用fork-join执行模型,以线程为基础,通过编译指导语句显示的指导并行化,即主线程在并行区派生很多子线程,并且在并行区结束之后由主线程继续执行。其执行模型如图3所示。当确定适合并行化的代码块后,选择合适的OpenMP编译指导指令和运行库函数创建并行程序。OPenMP的应用程序接口包含编译指导、运行函数库和环境变量三部分,可使用应用编程接口实现线程之间的任务分配和数据共享,而编译器通过对串行程序中蕴含并行性的分析与发掘,自动生成适合并行体系结构运行的并行程序。当编译器选择忽略预处理指令时,或者编译器不支持OpenMP时,程序又退化串行程序,此时代码依然可以正常运作。
OpenMP程序刚开始主线程一直串行地执行,直到遇见第一个并行域才开始并行执行,并行域表示该部分程序计算量大,需要多个处理器共同处理以提高效率和运行速度。
首先对算法代码进行分析,确定适合并行的模块,而OpenMP最主要的并行来源是循环结构,当定位到适合并行的模块之后,需要合理管理算法中的私有数据和公有数据,因为多线程是异步运行的,当多个线程对同一个数据进行操作时,那么该数据就会在多个线程的作用下出现差异从而造成结果的不可知性,所以应该注意避免线程数据之间的竞争从而导致计算出现错误,在启用多线程时做好对数据源的同步。最后,如果确定的代码部分是独立的且不会因为线程竞争造成计算错误,可以尝试选定该代码块作为并行处理的部分进行并行实验,通过实验结果对比该部分的并行效果。
在OpenMP中,通过在串行代码中插入编译制导指令来实现并行,其通用格式为#pragma omp指令。OpenMP常用的指令如表1所示:
表1 OpenMP参数说明
OpenMP常用的库函数如表2所示:
表2 OpenMP库函数说明
本案方案的目标是在经典多核计算机上进行HHL算法的模拟并进行多线程并行处理,因此,可采用QPanda2.0量子软件开发工具包通过C++高级编程语言来模拟算法的具体实现,并通过OpenMP对算法改进,实现并行加速,缩短HHL算法的模拟时间,提高模拟效率,确定量子算法在经典计算机上模拟的可行性。
首先对4×4线性方程组进行模拟实验。对于4×4线性方程组,选取系数矩阵A为:
b向量为:
(0.5 0.5 0.5 0.5)T
Qpanda2.0量子编程框架支持量子计算中绝大多数的量子逻辑门操作、量子线路构建操作等。将在此基础上进行HHL算法的模拟并对算法进行热点分析,寻找可以并行的代码块,实现算法的并行操作。HHL算法伪代码设计可如下内容所示:
1.Input:A,b
2.Output:result
3.auto machine=initQuantumMachine(CPU);
4.auto prog=QProg();
5.QCircuit circuit=CreateEmptyCircuit();
6.QCircuit<<QPE();
7.QCircuit<<build_CR();
8.QCircuit<<QPE_Inverse();
9.QCircuit hhl_circuit=HHL_circuit(A,b,machine);
10.result=x;
11.Return result;
通过代码构建HHL算法的三个模块,分别为量子相位估计、控制旋转、逆量子相位估计。在构建好HHL算法电路后,对该算法的3个模块进行了分析,确定了其中可以进行加速的部分。
其中相位估计部分下:
1.QCircuit QPE(Qubit*control,Qubit*target)
2.{
3.QCircuit qpe_cir;
4.qpe_cir<<apply_QGate(control,H)<<
5.control_unitary(Qubit*Control)<<
6.QFT_Inverse();
7.}
该部分主要由Hadamard变换、受控相位变换和量子傅里叶逆变换三部分组成,经过分析发现其中耗费时间较多的为受控相位变换和量子傅里叶逆变换两个阶段,于是尝试对这两个阶段的代码进行改进。
首先针对量子相位估计中受控相位部分进行操作,代码中构建受控相位门的操作采用了线程池ThreadPool函数,该操作的目的是为了后续实现多线程并发,线程池通过几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间从而提高效率。将构造相位门的任务通过循环逐一添加到线程池中,当线程池里的每个线程任务执行完毕后,在保存构建好的线路时采用加锁操作,构造的相位门线路就可以在之后的操作中按照顺序将每个部分的相位门添加到线路中。测得结果如下:
(-0.0542 0.3801 0.5974 0.7051)T
由理论值和测得的测量值计算得到其保真度为96.73%,整个程序运行是在经典8核计算机上,时间消耗为928.16ms,因为该过程模拟的是4×4矩阵,矩阵的规模不大,在量子云台中采用7个量子比特就可以构建,所以时间的消耗不算太大。
针对算法的代码块进行修改,经过分析,对线程池添加任务部分进行改进,因为当线程池中的任务执行结束前,进行保存线路操作时采用加锁的方法来保证构造的相位门线路正确保存,这也就意味着,即使通过并行操作使所有的任务通过多线程添加到线程池中运行也不会造成线路构建顺序的紊乱。
可根据控制比特的数量构建针对线程池添加任务的for循环,用pragma ompparallel for来标识并行程序块,通过多线程使线程池中的任务进行构建受控相位门操作,并且也不对代码添加额外的同步操作。之后测试代码,发现与串行代码执行相比,任务进入线程池的顺序改变了,执行顺序也变得无序,但是由于每个任务在进入线程池时,都给该任务传递了按照控制比特位置制定的索引参数,并对保存线路操作进行了加锁,最后对所有保存的线路进行排序,使得这些构造还能够按照正确顺序进行线路组建。因此结果还是与之前得到的近似解一样,时间为263.34ms。
之后对逆量子傅里叶设计并行操作,逆量子傅里叶由Hadamard变换和相位变换两部分组成,通过两层for循环,分别把H门和相位门添加到线路上,当循环执行完毕后线路构建也完成了。在构建线路时,首先对两层for循环同时设计并行操作,并且不针对并行过程中添加同步操作,在这种情况获得的结果为:
(2.962 3.492 6.195 8.097)T
每次结果都不一样且都与所期望的结果有着很大的出入,经过分析之后发现代码中内层循环的条件值依赖于外层循环条件值,于是经过并行后使内层循环的发生错误,使得受控相位门的构建产生问题,这就导致计算结果发生错误。于是接下来改进代码,因为内层循环执行的任务量大,所以可对内层循环进行并行操作,在内层循环中通过pragma ompparallel for schedule任务调度,其工作原理如图4所示。动态地将迭代分配到各个线程,最后得到正确的近似解。经过并行后的时间为236.57ms,结果证明并行操作是有效且正确的。
进一步地,基于上述的方法,本发明实施例还提供一种基于OpenMP并行模型下的量子机器学习模拟系统,包含:模拟器构建模块和并行求解模块,其中,
模拟器构建模块,用于针对系数矩阵的线性方程组,通过将输入向量和输出向量映射为两个量子态,通过将线性方程组求解转换为系数矩阵特征值的求解来构建量子模拟器,其中,量子模拟器中量子表达式表示为:A|x>=|b>,其中,A为系数矩阵,b为输入向量,x为输出向量;
并行求解模块,用于将量子模拟器部署到经典多核计算机上,并基于OpenMP模型并利用量子机器学习算法,通过分析算法代码中的热点,寻找并选定待并行代码模块,对选定的待并行代码模块进行并行运算处理。
为验证本案方案有效性,下面结合试验数据做进一步解释说明:
首次在8核上测得的串行程序运行的时间为928.16ms,加速后的时间为236.57ms,接下来分别测试了在2核、4核、6核上经过并行操作后的时间,结果如表3所示:
表3 4×4矩阵运行时间
经过多次测试后,可发现构建了OpenMP框架的程序在6核下执行和在8核下执行,程序的时间对比相差不大,这是因为程序在6核操作下已经可以满足执行所有分配的线程了。
对4×4矩阵在经典计算机上进行了模拟,测得了程序通过OpenMP实现多线程的实验结果,实现在经典计算机上对量子算法进行正确的模拟和并行加速。相对于量子云平台上实现的4×4矩阵,在经典计算机上构建HHL算法的线路深度较大,基于4×4矩阵的线路在经典计算机上模拟需要976个门构成,而在量子云平台上实现4×4矩阵的线路的深度为353,是经典计算上线路模拟的1/3,可见在经典计算机上进行线路模拟,在内存方面消耗是较大的。接下来,按照以上的方法进行8×8矩阵和16×16矩阵的实验,8×8其正常运行的结果为1781.39ms,并行操作后的结果如表4所示:
表4 8×8矩阵运行时间
同时记录了该8×8矩阵分解所需要消耗的门为7250。对于16×16矩阵模拟的结果为3232.84ms,并行操作后的结果如表5所示:
表5 16×16矩阵运行时间
经过测试,可发现对于16×16的矩阵,在开启多线程之后,随着核数的增加,加速效果并不是很明显了,经过分析得出结论,对于单台8核计算机已经无法负载起该矩阵分解的任务了,因为对于16×16矩阵的分解,搭建线路所需要分解矩阵形成的门个数达到了35039,而且对于构建受控相位门的任务也达到了12个,当线程数大于计算机核数时,因为同时运行的线程数只能等于核数,此时其它的线程变为并发运行,这样在线程切换上会浪费更多的时间。对比了所做的三组矩阵模拟,得到的运行时间比如图4所示。发现随着矩阵模拟规模的增大,其加速效果将会逐渐降低,这是因为在经典计算机上进行量子计算模拟时,所需要的时间和空间的开销随模拟比特位数的增长呈指数级增长,随着模拟的矩阵规模越来越大,模拟的量子比特位数也越来越大,所要处理的任务量越来越大,单台计算机的内存和处理器也将无法满足模拟。因此,基于更大规模的量子算法经典模拟,可以通过计算机集群来处理,例如采用MPI、加速线程库在超级计算机上对量子傅里叶变换进行了大规模模拟,充分利用多核CPU和分布式架构的潜力,实现46位量子比特量子傅里叶算法的模拟和优化;可使用CPU-GPU异构集群技术实现多比特位的量子计算模拟,并且通过经典模拟QFT算法证明了模拟系统有效性和可扩展性。通过进一步采用集群分布式存储分摊指数级存储开销和计算需求,可解决量子计算模拟的内存和时间瓶颈问题,由此可见,通过搭建分布式计算机体系能够实现更大规模的算法模拟。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的各实例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已按照功能一般性地描述了各示例的组成及步骤。这些功能是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不认为超出本发明的范围。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如:只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种基于OpenMP并行模型下的量子机器学习模拟方法,其特征在于,包含如下内容:
针对系数矩阵的线性方程组,通过将输入向量和输出向量映射为两个量子态,通过将线性方程组求解转换为系数矩阵特征值的求解来构建量子模拟器,其中,量子模拟器中量子表达式表示为:A|x>=|b>,其中,A为系数矩阵,b为输入向量,x为输出向量;
将量子模拟器部署到经典多核计算机上,并基于OpenMP模型并利用量子机器学习算法,通过分析算法代码中的热点,寻找并选定待并行代码模块,对选定的待并行代码模块进行并行运算处理。
2.根据权利要求1所述的基于OpenMP并行模型下的量子机器学习模拟方法,其特征在于,构建量子模拟器中,首先,将系数矩阵转换为Hermitian矩阵,并构建系数矩阵的谱分解数据;
然后,将输入向量b在系数矩阵A的特征向量上展开并获取输出向量x。
3.根据权利要求2所述的基于OpenMP并行模型下的量子机器学习模拟方法,其特征在于,系数矩阵的谱分解表示为:A=∑jλj|μj><μj|,其中,|μj>是系数矩阵A的特征向量,λj是特征向量对应的特征值。
5.根据权利要求1所述的基于OpenMP并行模型下的量子机器学习模拟方法,其特征在于,量子机器学习模拟求解运算中,首先,初始化输入向量b的量子态,利用相位估计将初始比特量子态分解为系数矩阵的特征向量组合叠加;然后,利用辅助量子位,通过受控旋转操作将特征向量特征值的倒数按比例提取到对应基态的概率福;最后,利用逆量子相位估计来抵消特征寄存器中存储的特征值,通过对量子位进行测量来获取线性方程组解。
6.根据权利要求5所述的基于OpenMP并行模型下的量子机器学习模拟方法,其特征在于,相位估计中,初始化输入向量b的量子态,将系数矩阵通过哈密顿模拟制备成酉算子,使用酉算子将量子相位估计作用到输入向量b的量子态,将该量子态分解为系数矩阵的特征向量线性组合叠加。
8.根据权利要求1所述的基于OpenMP并行模型下的量子机器学习模拟方法,其特征在于,针对量子机器学习算法中量子相位估计,首先,利用线程池ThreadPool函数构建量子相位估计中的受控相位门操作,并将构建受控相位门的任务通过循环逐一添加到线程池中,并采用加锁操作保存构建后的相位门线路。
9.根据权利要求1或8所述的基于OpenMP并行模型下的量子机器学习模拟方法,其特征在于,针对量子机器学习算法中,首先,根据控制比特数量构建线程池添加任务的循环代码模块,并对待并行代码模块进行标识;然后,利用多线程来使线程池中任务执行构建受控相位门操作;最后,利用for循环来执行逆量子傅里叶并行操作,将H门和相位门添加到线路上,并通过任务调度将内层循环代码中的各并行块迭代分配到各线程中。
10.一种基于OpenMP并行模型下的量子机器学习模拟系统,其特征在于,包含:模拟器构建模块和并行求解模块,其中,
模拟器构建模块,用于针对系数矩阵的线性方程组,通过将输入向量和输出向量映射为两个量子态,通过将线性方程组求解转换为系数矩阵特征值的求解来构建量子模拟器,其中,量子模拟器中量子表达式表示为:A|x>=|b>,其中,A为系数矩阵,b为输入向量,x为输出向量;
并行求解模块,用于将量子模拟器部署到经典多核计算机上,并基于OpenMP模型并利用量子机器学习算法,通过分析算法代码中的热点,寻找并选定待并行代码模块,对选定的待并行代码模块进行并行运算处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210927534.3A CN115409187A (zh) | 2022-08-03 | 2022-08-03 | 基于OpenMP并行模型下的量子机器学习模拟方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210927534.3A CN115409187A (zh) | 2022-08-03 | 2022-08-03 | 基于OpenMP并行模型下的量子机器学习模拟方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115409187A true CN115409187A (zh) | 2022-11-29 |
Family
ID=84158654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210927534.3A Pending CN115409187A (zh) | 2022-08-03 | 2022-08-03 | 基于OpenMP并行模型下的量子机器学习模拟方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115409187A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117291273A (zh) * | 2023-11-24 | 2023-12-26 | 合肥微观纪元数字科技有限公司 | 量子计算区块链系统 |
-
2022
- 2022-08-03 CN CN202210927534.3A patent/CN115409187A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117291273A (zh) * | 2023-11-24 | 2023-12-26 | 合肥微观纪元数字科技有限公司 | 量子计算区块链系统 |
CN117291273B (zh) * | 2023-11-24 | 2024-02-13 | 合肥微观纪元数字科技有限公司 | 量子计算区块链系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gschwend | Zynqnet: An fpga-accelerated embedded convolutional neural network | |
US20180157471A1 (en) | Systems and methods for generating code for parallel processing units | |
Germaschewski et al. | Toward exascale whole-device modeling of fusion devices: Porting the GENE gyrokinetic microturbulence code to GPU | |
Metcalf | The seven ages of fortran | |
Bosilca et al. | The Template Task Graph (TTG)-an emerging practical dataflow programming paradigm for scientific simulation at extreme scale | |
CN115409187A (zh) | 基于OpenMP并行模型下的量子机器学习模拟方法及系统 | |
Tian et al. | Compiler transformation of nested loops for general purpose GPUs | |
Katel et al. | High performance gpu code generation for matrix-matrix multiplication using mlir: some early results | |
Gosmann et al. | Automatic optimization of the computation graph in the Nengo neural network simulator | |
Marker et al. | Code generation and optimization of distributed-memory dense linear algebra kernels | |
Rocki et al. | The future of accelerator programming: abstraction, performance or can we have both? | |
Wang et al. | Raptor-T: A Fused and Memory-Efficient Sparse Transformer for Long and Variable-Length Sequences | |
Zhang et al. | Accelerating lattice QCD on sunway many-core processor | |
Gratien | An abstract object oriented runtime system for heterogeneous parallel architecture | |
Lotrič et al. | Parallel implementations of recurrent neural network learning | |
Cunningham | High performance algorithms for quantum gravity and cosmology | |
Mondal et al. | Accelerating the BPMax algorithm for RNA-RNA interaction | |
Chandraiah et al. | Designer-controlled generation of parallel and flexible heterogeneous MPSoC specification | |
Bourgeois et al. | Isosurface Visualization Miniapplication | |
Bhattacharjee | Evaluation of GPU-specific device directives and multi-dimensional data structures in OpenMP | |
Kolpakov et al. | Software for heterogeneous computer systems and structures of data processing systems with increased performance | |
Roy et al. | Polyhedral Compilation Support for C++ Features: A Case Study with CPPTRAJ | |
Khan et al. | SBIR Phase I Final Report, TACO: Distributed and Heterogeneous Sparse Compiler | |
Blum et al. | Code Specialisation of Auto-Generated GPU Kernels | |
Mihajlenko et al. | A method for decompilation of AMD GCN kernels to OpenCL |
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 |