一种基于众核处理器的多重积分计算方法技术

技术编号:8131068 阅读:300 留言:0更新日期:2012-12-27 03:15
本发明专利技术提供一种利用GPU等众核处理器来加速计算科学中经常需要处理且耗时较多的数值多重积分的计算求解。本发明专利技术简单、实用,可以方便而有效的加速数值多重积分的求解过程,对于大幅缩短科学计算程序的时间具有实际的应用意义。该方法充分考虑了GPU所拥有的超强的浮点计算能力和较大的内存带宽等众核处理器的特点,并充分利用蒙特卡洛(MonteCarlo)方法中各打靶点间无数据相干性的特点,将数量巨大的打靶点函数值的计算交由GPU来处理,将计算精度控制及收敛性判断等需要分支预测的部分交由CPU来完成,从而可以大幅的加速多重积分的求解。

【技术实现步骤摘要】

本专利技术涉及高性能计算领域在基础数值计算方面的应用,具体涉及一种使用蒙特卡洛(Monte Carlo)方法,具体地说是利用GPU等众核处理器来加速多重乃至高重数值积分求解的方法。
技术介绍
随着人类社会的不断进步,计算机技术也得到了长足的发展,人们认识和探索自然界的手段也不再仅仅局限在实验和理论研究这两个方面,而是越来越多的使用计算机来模拟,使得计算已成为当今科学研究的第三种有效手段。此外,在工程
,人们也越来越多的使用大规模模拟和计算来加速工程的进度。但无论是从事科学研究还是工程技术、无论使用的是何种超级计算机,所有的问题归根结底都是数值计算问题,即线性和非 线性方程组求解、向量和矩阵运算、插值、数值积分等等。对于很多科学问题,计算频繁和耗时最多的往往是数值积分,特别是多重的数值积分,如二维体系下的两体相互作用(四重积分),自由电子气或晶格中的库仑积分(六重积分),等等。长久以来,对于单重积分人们逐步发展了很多种数值积分的计算方法,如辛卜生求积法、龙贝格求积法、闻斯求积法等等,这些方法的效率都比较闻,特别是闻斯求积法。但对于多重积分,一直以来没有特别好的求解方法,用的较多的有高斯多重积分求积法,但是对于被积函数非常复杂的情况(如隐函数等)或高重积分,使用高斯求解的效率很低,对于一些需要计算数以万计的多重积分的应用领域,如计算凝聚态物理,消耗的时间往往是无法忍受的。鉴于上述困难,人们在数值计算高重积分的时候往往选择使用蒙特卡洛方法。蒙特卡洛方法原理简单,也容易实现,但使用蒙特卡洛方法需要足够多的靶点才能使积分的结果达到一定的精度,这在善长串行计算的CPU上运行时,所消耗的时间也往往是无法忍受的。GPU作为一种常用的众核处理器,其数以百计的浮点运算核心、高显存带宽,决定了 GPU非常适合用来加速一些线程间通信量较小的大规模并行程序,而蒙特卡洛方法恰恰具有这样的特性。首先,蒙特卡洛方法所必需的随机数的生成是线程无干性的;其次,多重被积函数值的求解也是线程无干的,此外这些处理过程都是计算密集型的,因此我们可以充分利用GPU来加速多重数值积分的计算。
技术实现思路
本专利技术的目的是提供。本专利技术的目的是按以下方式实现的,利用随机数生成以及蒙特卡洛方法中各打靶点间数据无关性的特点,将随机数的生成部分和打靶点函数值计算这两部分计算密集的块交由GPU来完成,将对积分精度以及收敛性判断的操作交由CPU来完成,从而有效的加速多重数值积分的求解,程序架构和组织流程为I)设置多重积分的计算精度、第一次计算所需要计算的被积函数值个数η及精度所需新增被积函数值个数5 η ; 2)调用GPU设备端函数生成Ν*Μ个随机数,m为多重积分的维度,将结果存放在设备端显存的线性数组Array中; 3)划分和生成GPU线程空间; 4)调用设备端函数(kernel函数)计算多重被积函数值并归约。为避免访存冲突,计算第η个被积函数值时的第m个祀点从线性数组Array [M*N+n]中选取; 5)将计算完成的多重积分值拷回主内存,并在CPU端判断结果是否已达到所要求精度,以决定是否需要进一步计算; 6)完成计算。存储在显存中的随机数,先将其扩展到函数的变量空间,然后在GPU的各核上分别计算被积函数的值,并对每个block内的线程归约。积分精度以及收敛性判断是将计算完成的积分结果返回CPU端,并由CPU判断是否满足所要求的计算精度以决定是否生成新的靶点以进一步计算。本专利技术的有益效果是本专利技术充分剖析了使用蒙特卡洛方法的特点,并充分利用了计算机中的各种计算资源,大幅加速了多重积分的计算速度,使得一些需要很长时间才能完成的科学计算时间大大缩短,并且可以轻松的移植到个人桌面超算平台上,极大的方便了从事大规模计算模拟的科研技术人员。附图说明图I是问题空间与GPU线程对应关系;图2是本专利技术的算法流程图。具体实施例方式参照说明书附图对本专利技术的方法作以下详细地说明。为了使本专利技术的目的、技术方案和优势表述清晰、明了,我们结合附图,对本专利技术中的关键步骤进行详细说明。如附图I所示,给出了本专利技术所涉及的问题空间与GPU中计算线程的对应关系。一般来讲,使用蒙特卡洛方法需要抽样足够多的靶点才能使计算的结果满足一定的精度,因此需要生成的靶点和需要计算的被积函数值数目巨大。由于各独立的被积函数值之间是无数据相关性的,因此我们把这些独立的函数值所构成的空间称之为问题空间。按现行的CUDA架构,把GPU的线程空间划分为grid, block和thread三重结构,简单起见,我们设定线程空间的grid和block均为二维结构,S卩block(q, p)和thread (η,m)。对于现行的GPU架构,每一个SM (Stream Multiprocessor)中要有6个warp以上才能充分隐藏延迟,故block (最好是GPU中SM的整数倍)和thread (每个SM中SP [StreamProcessor]的整数倍)结构应尽量的大。我们只需简单的将每个被积函数值的计算交给一个线程即可,这时各block及thread之间无需数据通信,因此附图I所示的问题空间到线程的简单映射可行且高效。附图2为本专利技术算法的具体流程图。基本的程序架构和组织流程为 I.设置多重积分的计算精度、第一次计算所需要计算的被积函数值个数(η)及精度所需新增被积函数值个数(δ η); 2调用GPU设备端函数生成N XMCm为多重积分的维度)个随机数,并将结果存放在设备端显存的线性数组Array中; 3.划分和生成GPU线程空间; 4.调用设备端函数(kernel函数)计算多重被积函数值并归约。为避免访存冲突,计算第η个被积函数值时的第m个祀点从线性数组Array[m X N + η]中选取; 5.将计算完成的多重积分值拷回主内存,并在CPU端判断结果是否已达到所要求精度,以决定是否需要进一步计算; 6.完成计算。 本专利技术所采用的算法可以极大的加速多重数值积分的求解速度,且算法简单,t匕较易于实现和扩展,可以极大的利用有限的计算资源加速计算科学、计算模拟方面的研究,并且还比较节能。设计一种利用GPU等众核处理器来加速多重数值积分求解的方法,从而充分发挥GPU众核结构的多计算处理单元、高带宽优势,以及CPU的逻辑处理和分支预测判断能力优势,来大幅缩短计算科学中多重积分的运算时间。本专利技术针对蒙特卡洛方法计算的特点,将计算过程分为随机数生成、靶点的被积函数值计算、精度和收敛性判断三个主要步骤。对于前两部分由于需要生成和计算的靶点数目众多,数百万乃致千万以上,要求较多的计算资源和较高的存储器带宽,因此我们可以将这部分计算移植到GPU上来完成。对于最后一部分,即精度和收敛性判断,是对是否完成计算并达到所要求精度的判断,它需要一些判断和分支操作,因此我们将其交给CPU来完成。具体来说,大体可分为如下几个步骤 1.计算精度等参数输入; 2.随机数生成(GPU上完成); 3.靶点被积函数值计算,归约(GPU上完成); 4.返回计算结果; 5.精度判断; 6.完成计算。除说明书所述的技术特征外,均为本专业技术人员的已知技术。本文档来自技高网
...

【技术保护点】
一种基于众核处理器的多重积分计算方法,?其特征在于利用随机数生成以及蒙特卡洛方法中各打靶点间数据无关性的特点,将随机数的生成部分和打靶点函数值计算这两部分计算密集的块交由GPU来完成,将对积分精度以及收敛性判断的操作交由CPU来完成,从而有效的加速多重数值积分的求解,程序架构和组织流程为:1)设置多重积分的计算精度、第一次计算所需要计算的被积函数值个数n及精度所需新增被积函数值个数δn;2)调用GPU设备端函数生成N*M个随机数,?m为多重积分的维度,将结果存放在设备端显存的线性数组Array中;3)划分和生成GPU线程空间;4)调用设备端函数(kernel函数)计算多重被积函数值并归约,为避免访存冲突,计算第n个被积函数值时的第m个靶点从线性数组Array[M*N+n]中选取;5)将计算完成的多重积分值拷回主内存,并在CPU端判断结果是否已达到所要求精度,以决定是否需要进一步计算;6)完成计算。

【技术特征摘要】
1.一种基于众核处理器的多重积分计算方法,其特征在于利用随机数生成以及蒙特卡洛方法中各打靶点间数据无关性的特点,将随机数的生成部分和打靶点函数值计算这两部分计算密集的块交由GPU来完成,将对积分精度以及收敛性判断的操作交由CPU来完成,从而有效的加速多重数值积分的求解,程序架构和组织流程为 1)设置多重积分的计算精度、第一次计算所需要计算的被积函数值个数η及精度所需新增被积函数值个数S η ; 2)调用GPU设备端函数生成Ν*Μ个随机数,m为多重积分的维度,将结果存放在设备端显存的线性数组Array中; 3)划分和生成GPU线程空间; 4)调用设备端函数(kernel函数...

【专利技术属性】
技术研发人员:刘羽
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1