CN102841881A - 一种基于众核处理器的多重积分计算方法 - Google Patents
一种基于众核处理器的多重积分计算方法 Download PDFInfo
- Publication number
- CN102841881A CN102841881A CN2012102982053A CN201210298205A CN102841881A CN 102841881 A CN102841881 A CN 102841881A CN 2012102982053 A CN2012102982053 A CN 2012102982053A CN 201210298205 A CN201210298205 A CN 201210298205A CN 102841881 A CN102841881 A CN 102841881A
- Authority
- CN
- China
- Prior art keywords
- gpu
- integral
- calculating
- value
- multiple integral
- 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
Landscapes
- Complex Calculations (AREA)
Abstract
本发明提供一种利用GPU等众核处理器来加速计算科学中经常需要处理且耗时较多的数值多重积分的计算求解。本发明简单、实用,可以方便而有效的加速数值多重积分的求解过程,对于大幅缩短科学计算程序的时间具有实际的应用意义。该方法充分考虑了GPU所拥有的超强的浮点计算能力和较大的内存带宽等众核处理器的特点,并充分利用蒙特卡洛(MonteCarlo)方法中各打靶点间无数据相干性的特点,将数量巨大的打靶点函数值的计算交由GPU来处理,将计算精度控制及收敛性判断等需要分支预测的部分交由CPU来完成,从而可以大幅的加速多重积分的求解。
Description
技术领域
本发明涉及高性能计算领域在基础数值计算方面的应用,具体涉及一种使用蒙特卡洛(Monte Carlo)方法,具体地说是利用GPU等众核处理器来加速多重乃至高重数值积分求解的方法。
背景技术
随着人类社会的不断进步,计算机技术也得到了长足的发展,人们认识和探索自然界的手段也不再仅仅局限在实验和理论研究这两个方面,而是越来越多的使用计算机来模拟,使得计算已成为当今科学研究的第三种有效手段。此外,在工程技术领域,人们也越来越多的使用大规模模拟和计算来加速工程的进度。但无论是从事科学研究还是工程技术、无论使用的是何种超级计算机,所有的问题归根结底都是数值计算问题,即:线性和非线性方程组求解、向量和矩阵运算、插值、数值积分等等。对于很多科学问题,计算频繁和耗时最多的往往是数值积分,特别是多重的数值积分,如:二维体系下的两体相互作用(四重积分),自由电子气或晶格中的库仑积分(六重积分),等等。
长久以来,对于单重积分人们逐步发展了很多种数值积分的计算方法,如:辛卜生求积法、龙贝格求积法、高斯求积法等等,这些方法的效率都比较高,特别是高斯求积法。但对于多重积分,一直以来没有特别好的求解方法,用的较多的有高斯多重积分求积法,但是对于被积函数非常复杂的情况(如隐函数等)或高重积分,使用高斯求解的效率很低,对于一些需要计算数以万计的多重积分的应用领域,如:计算凝聚态物理,消耗的时间往往是无法忍受的。鉴于上述困难,人们在数值计算高重积分的时候往往选择使用蒙特卡洛方法。蒙特卡洛方法原理简单,也容易实现,但使用蒙特卡洛方法需要足够多的靶点才能使积分的结果达到一定的精度,这在善长串行计算的CPU上运行时,所消耗的时间也往往是无法忍受的。
GPU作为一种常用的众核处理器,其数以百计的浮点运算核心、高显存带宽,决定了GPU非常适合用来加速一些线程间通信量较小的大规模并行程序,而蒙特卡洛方法恰恰具有这样的特性。首先,蒙特卡洛方法所必需的随机数的生成是线程无干性的;其次,多重被积函数值的求解也是线程无干的,此外这些处理过程都是计算密集型的,因此我们可以充分利用GPU来加速多重数值积分的计算。
发明内容
本发明的目的是提供一种基于众核处理器的多重积分计算方法。
本发明的目的是按以下方式实现的,利用随机数生成以及蒙特卡洛方法中各打靶点间数据无关性的特点,将随机数的生成部分和打靶点函数值计算这两部分计算密集的块交由GPU来完成,将对积分精度以及收敛性判断的操作交由CPU来完成,从而有效的加速多重数值积分的求解,程序架构和组织流程为:
1)设置多重积分的计算精度、第一次计算所需要计算的被积函数值个数n及精度所需新增被积函数值个数δn;
2)调用GPU设备端函数生成N*M个随机数, m为多重积分的维度,将结果存放在设备端显存的线性数组Array中;
3)划分和生成GPU线程空间;
4)调用设备端函数(kernel函数)计算多重被积函数值并归约。为避免访存冲突,计算第n个被积函数值时的第m个靶点从线性数组Array[M*N+n]中选取;
5)将计算完成的多重积分值拷回主内存,并在CPU端判断结果是否已达到所要求精度,以决定是否需要进一步计算;
6)完成计算。
存储在显存中的随机数,先将其扩展到函数的变量空间,然后在GPU的各核上分别计算被积函数的值,并对每个block内的线程归约。
积分精度以及收敛性判断是将计算完成的积分结果返回CPU端,并由CPU判断是否满足所要求的计算精度以决定是否生成新的靶点以进一步计算。
本发明的有益效果是:本发明充分剖析了使用蒙特卡洛方法的特点,并充分利用了计算机中的各种计算资源,大幅加速了多重积分的计算速度,使得一些需要很长时间才能完成的科学计算时间大大缩短,并且可以轻松的移植到个人桌面超算平台上,极大的方便了从事大规模计算模拟的科研技术人员。
附图说明
图1是问题空间与GPU线程对应关系;
图2是本发明的算法流程图。
具体实施方式
参照说明书附图对本发明的方法作以下详细地说明。
为了使本发明的目的、技术方案和优势表述清晰、明了,我们结合附图,对本发明中的关键步骤进行详细说明。
如附图1所示,给出了本发明所涉及的问题空间与GPU中计算线程的对应关系。一般来讲,使用蒙特卡洛方法需要抽样足够多的靶点才能使计算的结果满足一定的精度,因此需要生成的靶点和需要计算的被积函数值数目巨大。由于各独立的被积函数值之间是无数据相关性的,因此我们把这些独立的函数值所构成的空间称之为问题空间。
按现行的CUDA架构,把GPU的线程空间划分为grid,block和thread三重结构,简单起见,我们设定线程空间的grid和block均为二维结构,即:block(q, p)和thread(n, m)。对于现行的GPU架构,每一个SM(Stream Multiprocessor)中要有6个warp以上才能充分隐藏延迟,故block(最好是GPU中SM的整数倍)和thread(每个SM中SP[Stream Processor]的整数倍)结构应尽量的大。我们只需简单的将每个被积函数值的计算交给一个线程即可,这时各block及thread之间无需数据通信,因此附图1所示的问题空间到线程的简单映射可行且高效。
附图2为本发明算法的具体流程图。基本的程序架构和组织流程为:
1. 设置多重积分的计算精度、第一次计算所需要计算的被积函数值个数(n)及精度所需新增被积函数值个数(δn);
3. 划分和生成GPU线程空间;
5. 将计算完成的多重积分值拷回主内存,并在CPU端判断结果是否已达到所要求精度,以决定是否需要进一步计算;
6. 完成计算。
本发明所采用的算法可以极大的加速多重数值积分的求解速度,且算法简单,比较易于实现和扩展,可以极大的利用有限的计算资源加速计算科学、计算模拟方面的研究,并且还比较节能。
设计一种利用GPU等众核处理器来加速多重数值积分求解的方法,从而充分发挥GPU众核结构的多计算处理单元、高带宽优势,以及CPU的逻辑处理和分支预测判断能力优势,来大幅缩短计算科学中多重积分的运算时间。
本发明针对蒙特卡洛方法计算的特点,将计算过程分为:随机数生成、靶点的被积函数值计算、精度和收敛性判断三个主要步骤。对于前两部分由于需要生成和计算的靶点数目众多,数百万乃致千万以上,要求较多的计算资源和较高的存储器带宽,因此我们可以将这部分计算移植到GPU上来完成。对于最后一部分,即精度和收敛性判断,是对是否完成计算并达到所要求精度的判断,它需要一些判断和分支操作,因此我们将其交给CPU来完成。
具体来说,大体可分为如下几个步骤:
1. 计算精度等参数输入;
2. 随机数生成(GPU上完成);
3. 靶点被积函数值计算,归约(GPU上完成);
4. 返回计算结果;
5. 精度判断;
6. 完成计算。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (3)
1.一种基于众核处理器的多重积分计算方法, 其特征在于利用随机数生成以及蒙特卡洛方法中各打靶点间数据无关性的特点,将随机数的生成部分和打靶点函数值计算这两部分计算密集的块交由GPU来完成,将对积分精度以及收敛性判断的操作交由CPU来完成,从而有效的加速多重数值积分的求解,程序架构和组织流程为:
1)设置多重积分的计算精度、第一次计算所需要计算的被积函数值个数n及精度所需新增被积函数值个数δn;
2)调用GPU设备端函数生成N*M个随机数, m为多重积分的维度,将结果存放在设备端显存的线性数组Array中;
3)划分和生成GPU线程空间;
4)调用设备端函数(kernel函数)计算多重被积函数值并归约,为避免访存冲突,计算第n个被积函数值时的第m个靶点从线性数组Array[M*N+n]中选取;
5)将计算完成的多重积分值拷回主内存,并在CPU端判断结果是否已达到所要求精度,以决定是否需要进一步计算;
6)完成计算。
2.根据权利要求1所述的方法,其特征在于,存储在显存中的随机数,先将其扩展到函数的变量空间,然后在GPU的各核上分别计算被积函数的值,并对每个block内的线程归约。
3.根据权利要求2所述的方法,其特征在于积分精度以及收敛性判断是将计算完成的积分结果返回CPU端,并由CPU判断是否满足所要求的计算精度以决定是否生成新的靶点以进一步计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102982053A CN102841881A (zh) | 2012-08-21 | 2012-08-21 | 一种基于众核处理器的多重积分计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102982053A CN102841881A (zh) | 2012-08-21 | 2012-08-21 | 一种基于众核处理器的多重积分计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102841881A true CN102841881A (zh) | 2012-12-26 |
Family
ID=47369256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102982053A Pending CN102841881A (zh) | 2012-08-21 | 2012-08-21 | 一种基于众核处理器的多重积分计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102841881A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375971A (zh) * | 2014-11-24 | 2015-02-25 | 浪潮电子信息产业股份有限公司 | 一种便携的可移动积分计算器设备实现方法 |
EP3203400A1 (en) * | 2016-02-03 | 2017-08-09 | Universitat Rovira I Virgili | A computer implemented method of generation of statistically uncorrelated molecule's conformations and computer programs |
CN109783761A (zh) * | 2019-01-25 | 2019-05-21 | 武汉轻工大学 | 三重积分计算方法、装置、终端设备及可读存储介质 |
CN109829130A (zh) * | 2019-01-29 | 2019-05-31 | 武汉轻工大学 | 二重积分计算方法、装置、终端设备及可读存储介质 |
CN109947398A (zh) * | 2019-03-25 | 2019-06-28 | 武汉轻工大学 | 三重积分求解方法、装置、终端设备及可读存储介质 |
CN116541642A (zh) * | 2023-04-13 | 2023-08-04 | 北京应用物理与计算数学研究所 | 计算温稠密物质状态方程的路径积分蒙特卡洛方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1627251A (zh) * | 2003-12-09 | 2005-06-15 | 微软公司 | 使用图形处理单元加速并优化机器学习技术的处理 |
US20050238223A1 (en) * | 2004-04-21 | 2005-10-27 | Jens Guhring | Flexible generation of digitally reconstructed radiographs |
CN102201036A (zh) * | 2011-05-16 | 2011-09-28 | 四川大学 | Gpu加速剂量计算中微分卷积积分算法的实现 |
-
2012
- 2012-08-21 CN CN2012102982053A patent/CN102841881A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1627251A (zh) * | 2003-12-09 | 2005-06-15 | 微软公司 | 使用图形处理单元加速并优化机器学习技术的处理 |
US20050238223A1 (en) * | 2004-04-21 | 2005-10-27 | Jens Guhring | Flexible generation of digitally reconstructed radiographs |
CN102201036A (zh) * | 2011-05-16 | 2011-09-28 | 四川大学 | Gpu加速剂量计算中微分卷积积分算法的实现 |
Non-Patent Citations (2)
Title |
---|
ARORA MANISH等: "Redefining the role of the CPU in the era of CPU-GPU integration", 《MICRO,IEEE》 * |
J. KANZAKI: "Monte Carlo integration on GPU", 《THE EUROPEAN PHYSICAL JOURNAL C》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375971A (zh) * | 2014-11-24 | 2015-02-25 | 浪潮电子信息产业股份有限公司 | 一种便携的可移动积分计算器设备实现方法 |
EP3203400A1 (en) * | 2016-02-03 | 2017-08-09 | Universitat Rovira I Virgili | A computer implemented method of generation of statistically uncorrelated molecule's conformations and computer programs |
WO2017134512A1 (en) * | 2016-02-03 | 2017-08-10 | Universitat Rovira I Virgili | A computer implemented method of generation of statistically uncorrelated molecule's conformations and computer programs |
CN109783761A (zh) * | 2019-01-25 | 2019-05-21 | 武汉轻工大学 | 三重积分计算方法、装置、终端设备及可读存储介质 |
CN109783761B (zh) * | 2019-01-25 | 2023-08-01 | 武汉轻工大学 | 三重积分计算方法、装置、终端设备及可读存储介质 |
CN109829130A (zh) * | 2019-01-29 | 2019-05-31 | 武汉轻工大学 | 二重积分计算方法、装置、终端设备及可读存储介质 |
CN109947398A (zh) * | 2019-03-25 | 2019-06-28 | 武汉轻工大学 | 三重积分求解方法、装置、终端设备及可读存储介质 |
CN109947398B (zh) * | 2019-03-25 | 2020-12-25 | 武汉轻工大学 | 三重积分求解方法、装置、终端设备及可读存储介质 |
CN116541642A (zh) * | 2023-04-13 | 2023-08-04 | 北京应用物理与计算数学研究所 | 计算温稠密物质状态方程的路径积分蒙特卡洛方法 |
CN116541642B (zh) * | 2023-04-13 | 2024-04-02 | 北京应用物理与计算数学研究所 | 计算温稠密物质状态方程的路径积分蒙特卡洛方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | GPU-accelerated sparse LU factorization for circuit simulation with performance modeling | |
Bastrakov et al. | Particle-in-cell plasma simulation on heterogeneous cluster systems | |
Chen et al. | An efficient mixed-precision, hybrid CPU–GPU implementation of a nonlinearly implicit one-dimensional particle-in-cell algorithm | |
CN102841881A (zh) | 一种基于众核处理器的多重积分计算方法 | |
Yudanov et al. | GPU-based simulation of spiking neural networks with real-time performance & high accuracy | |
Delaney et al. | Polymer field-theory simulations on graphics processing units | |
Lastovetsky et al. | Model-based optimization of EULAG kernel on Intel Xeon Phi through load imbalancing | |
Wang et al. | Optimizing linpack benchmark on gpu-accelerated petascale supercomputer | |
Karatarakis et al. | GPU-acceleration of stiffness matrix calculation and efficient initialization of EFG meshless methods | |
Brandvik et al. | SBLOCK: A framework for efficient stencil-based PDE solvers on multi-core platforms | |
Suchoski et al. | Adapting sparse triangular solution to GPUs | |
CN102253919A (zh) | 基于gpu和cpu协同运算的并行数值模拟方法和系统 | |
Mattes et al. | Overcoming the GPU memory limitation on FDTD through the use of overlapping subgrids | |
Song et al. | Implementation of the CPU/GPU hybrid parallel method of characteristics neutron transport calculation using the heterogeneous cluster with dynamic workload assignment | |
CN102662638B (zh) | 一种支持帮助线程预取距离参数的阈值边界选取方法 | |
Liang et al. | Overlapping communication and computation of GPU/CPU heterogeneous parallel spatial domain decomposition MOC method | |
Wu et al. | Exploiting hierarchy parallelism for molecular dynamics on a petascale heterogeneous system | |
CN102722472A (zh) | 一种复数矩阵的优化方法 | |
Takada et al. | High-speed FDTD simulation algorithm for GPU with compute unified device architecture | |
Chaudhury et al. | Hybrid parallelization of particle in cell Monte Carlo collision (PIC-MCC) algorithm for simulation of low temperature plasmas | |
Rojek et al. | Parallelization of 3D MPDATA algorithm using many graphics processors | |
CN104793922A (zh) | 一种大整数乘法Comba算法基于OpenMP的并行实现方法 | |
Brown et al. | Performance of a second order electrostatic particle-in-cell algorithm on modern many-core architectures | |
Nie et al. | Adaptive sparse matrix-vector multiplication on CPU-GPU heterogeneous architecture | |
Zhang et al. | Cpu-gpu hybrid parallel binomial american option pricing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121226 |