本发明属于多体智能、分子动力学模拟和高性能计算领域,特别是涉及一种基于gpu实现粒子间长程相互作用的快速计算方法。
背景技术:
1、多智能体系统是一种由多个相互作用的智能体组成的计算体系,例如以分子动力学(molecular dynamics,md)为代表的多智能体系统,是微纳尺度计算机模拟的经典方法,为研究生物大分子等微观结构演化和宏观性质提供了重要工具,在生命科学、能源、材料、医药等学科和领域被广泛应用。
2、尽管分子动力学算法和软件开发已经取得了巨大进步,但目前主流分子动力学模拟被限制在100万原子的体系,远不足以刻画真实的系统。其中,库仑相互作用的计算是最主要的瓶颈,它的长程性导致收敛非常困难,需要计算机内核之间密集的通讯,大大降低了使用超级计算集群时的并行效率。当前主流的分子模拟软件通常使用基于快速傅里叶变换(fft)的网格插值方法,包括在lammps软件里采用的pppm,在gromacs软件里采用的pme,以及在amber里采用的spme等,整体计算复杂度为o(nlogn),n表示输入数据的量,例如粒子数。另一类被广泛认可的算法是基于多级展开的快速多极算法(fmm),提供了数学上渐进最优的o(n)复杂度。然而,随着高性能计算领域的飞速发展,fft和fmm都遇到了可扩展性上的瓶颈,限制了更大规模的分子动力学模拟,成为了业内亟待解决的巨大难题。
技术实现思路
1、为了解决背景技术中存在的问题,本发明提供一种基于gpu实现粒子间长程相互作用力的快速计算方法,该算法通过引入随机思想,同时利用gpu的多线程能力,将粒子信息分布到gpu线程上,并行的计算粒子长程相互作用,提高长程相互作用力的计算效率。
2、为了达到上述技术目的,本发明提供如下技术方案,一种基于gpu实现粒子间长程相互作用的快速计算方法,包括:
3、s1:利用vtk-m封装技术将cpu和gpu进行适配;
4、s2:通过cpu利用metropolis-hasting算法从傅里叶空间中随机抽取部分傅里叶项;
5、s3:根据从所述傅里叶空间中随机抽取的部分傅里叶项、所述傅里叶空间的电荷分布、以及粒子的带电量得到粒子在傅里叶空间的库仑长程力表达式;
6、s4:构建操作符map和操作符reduce;其中,操作符map用于通过gpu具备的多线程能力,并行的处理多个粒子信息;reduce操作符用于通过gpu计算大规模粒子信息求和;
7、s5:根据粒子在傅里叶空间的库仑长程力表达式利用操作符map和操作符reduce计算粒子的库仑长程力。
8、优选地,所述利用metropolis-hasting算法从傅里叶空间中随机抽取部分傅里叶项包括:
9、s21:在傅里叶空间从离散的高斯分布中分别在x,y,z三个方向采取三个独立的样本(xx,y*,z*),组成
10、
11、其中,l为模拟系统的边长,π表示圆周率,α为分裂参数;m表示离散高斯分布函数的自变量;
12、s22:初始化迭代次数l=1;
13、s23:类似于步骤s21从离散的高斯分布p(m)中采取样本点组成round表示四舍五入函数,然后计算在x,y,z三个方向对的接受概率:
14、
15、
16、其中,a∈{x,y,z},表示在x,y,zx,y,z三个方向对的接受概率;
17、s24:随机产生0-1之间的随机数u,若则令否则接着令并重复执行步骤s23~s24,直至为止,得到p个进而得到个p个采样点
18、优选地,所述粒子在傅里叶空间的库仑长程力表达式包括:
19、
20、q=h3-1
21、其中,fj表示粒子j的库仑长程力;p表示从傅里叶空间中抽取的傅里叶项的数量;qj表示粒子j的电荷量;kl表示从傅里叶空间中抽取的第l个傅里叶项;im表示取虚部;v表示模拟系统的体积;rj表示粒子间的距离;i表示虚数单位;ρ(kl)表示粒子的结构因子信息;n表示模拟系统中粒子的总数量;qn表示粒子n的电荷量;rn表示粒子间的距离。
22、优选地,所述计算粒子的库仑长程力包括:
23、s51:将模拟系统中的所有粒子均匀的分配到gpu的每个线程上;
24、s52:遍历抽取的傅里叶项,调用操作符map在gpu的每个线程上并行的计算粒子在傅里叶项的中间信息;
25、s53:根据gpu每个线程上粒子在傅里叶项的中间信息调用操作符reduce进行求和得到粒子在傅里叶项的结构因子信息;
26、s54:根据粒子在所有傅里叶项的结构因子信息计算粒子的库伦长程力。
27、优选地,所述粒子在傅里叶项的中间信息包括:
28、
29、其中,表示粒子n在傅里叶项kl的中间信息。
30、优选地,所述粒子在傅里叶项的结构因子信息包括:
31、
32、其中,ρ(kl)表示粒子在傅里叶项kl的结构因子信息。
33、本发明的另一方面提供一种基于gpu实现粒子间长程相互作用的快速计算系统,包括:采样模块和库仑长程力计算模块;
34、所述采样模块,用于从傅里叶空间中随机抽取部分傅里叶项;
35、所述库仑长程力计算模块包括:结构因子计算单元、库伦长程力计算单元、以及多个粒子中间信息计算单元;
36、所述多个粒子中间信息计算单元用于并行的计算粒子在傅里叶项的中间信息;
37、所述结构因子计算单元用于根据粒子在傅里叶项的中间信息计算粒子在傅里叶项的结构因子信息;
38、所述库伦长程力计算单元用于根据粒子在所有傅里叶项的结构因子信息计算粒子的库伦长程力。
39、优选地,所述采样模块基于cpu进行实现;所述库仑长程力计算模块基于gpu进行实现;所述cpu和gpu通过vtk-m封装技术进行适配。
40、本发明的在再一方面提供一种基于gpu实现粒子间长程相互作用力的快速计算装置,包括存储器、cpu、gpu以及存储在所述存储器中并能够在所述cpu和gpu上运行的计算机程序,其特征在于,所述cpu和gpu被配置为能够在执行所述计算机程序时实现所述的一种基于gpu实现粒子间长程相互作用力的快速计算方法。
41、本发明的又一方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时能够实现所述的一种基于gpu实现粒子间长程相互作用力的快速计算方法。
42、本发明至少具有以下有益效果
43、(1)使得库仑长程力计算误差的期望为零,在提升效率的同时还保持了动力学的性质。
44、(2)每次需要计算的傅里叶项的数量变为一个常数,与空间中的粒子数无关,减小了数据通信量,从而大大降低了通信方面的消耗,使得算法具有极高的并行效率,并保持o(n)的最优线性复杂度。
45、(3)本发明通过利用gpu的多线程能力,将粒子信息分布到gpu线程上,并行的计算粒子长程相互作用,提高长程相互作用力的计算效率。
1.一种基于gpu实现粒子间长程相互作用力的快速计算方法,其特征在于,包括:
2.根据权利要求1所述的一种基于gpu实现粒子间长程相互作用力的快速计算方法,其特征在于,所述利用metropolis-hasting算法从傅里叶空间中随机抽取部分傅里叶项包括:
3.根据权利要求2所述的一种基于gpu实现粒子间长程相互作用力的快速计算方法,其特征在于,所述粒子在傅里叶空间的库仑长程力表达式包括:
4.根据权利要求3所述的一种基于gpu实现粒子间长程相互作用力的快速计算方法,其特征在于,所述计算粒子的库仑长程力包括:
5.根据权利要求4所述的一种基于gpu实现粒子间长程相互作用的快速计算方法,其特征在于,所述粒子在傅里叶项的中间信息包括:
6.根据权利要求5所述的一种基于gpu实现粒子间长程相互作用力的快速计算方法,其特征在于,所述粒子在傅里叶项的结构因子信息包括:
7.一种基于gpu实现粒子间长程相互作用力的快速计算系统,其特征在于,包括:采样模块和库仑长程力计算模块;
8.根据权利要求7所述的一种基于gpu实现粒子间长程相互作用力的快速计算系统,其特征在于,所述采样模块基于cpu进行实现;所述库仑长程力计算模块基于gpu进行实现;所述cpu和gpu通过vtk-m封装技术进行适配。
9.一种基于gpu实现粒子间长程相互作用力的快速计算装置,包括存储器、cpu、gpu以及存储在所述存储器中并能够在所述cpu和gpu上运行的计算机程序,其特征在于,所述cpu和gpu被配置为能够在执行所述计算机程序时实现权利要求1-6中任一项所述的一种基于gpu实现粒子间长程相互作用力的快速计算方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时能够实现根据权利要求1-6中任一项所述的一种基于gpu实现粒子间长程相互作用力的快速计算方法。
