一种在图形处理器上实现大规模耗散粒子动力学模拟的方法
【专利摘要】本发明公开了一种在图形处理器上实现大规模耗散粒子动力学模拟的方法。本发明的主要步骤如下:第一步,设定模拟初始状态;第二步,完成邻居列表的初始化;第三步,建立粒子编号从(i-1)*k-1到i*k的k个粒子的邻居列表,其中i为循环计数器,k为每次计算的粒子数;第四步,计算粒子编号从(i-1)*k-1到i*k的k个粒子的对应的非键相互作用;第五步,重复步骤三到四,直至i*k>=N;第六步,不断迭代模拟步,模拟结束后分析数据。通过方法我们可在当前的图形处理器(NVIDIA?Tesla?C2050)上,突破显存空间的限制,实现了超过一千万粒子规模的耗散粒子动力学模拟。
【专利说明】一种在图形处理器上实现大规模耗散粒子动力学模拟的方 法 发明领域
[0001] 本发明属于图形处理器上的实现大规模分子模拟领域,特别是涉及在图形处理器 上实现超过一千万粒子大规模耗散粒子动力学模拟的方法。
【背景技术】
[0002] 当前,图形处理器(GPU)已经发展成为可以用于大规模计算的强大并行处理器。 例如,NVIDIA Tesla C2050GPU的单精度浮点计算峰值能力为1.03Tflops,而Interl' s Q9500CPU只有45. 28Gflops。在科学计算中,由于GPU强大的数据并行计算能力,其计算 速度有可能比中央处理器(CPU)计算快几十倍。这为我们突破CPU计算能力的瓶颈提供了 新的可能。同时一系列的软件工具的出现,如:CUDA,Brook,Cg等,为我们将GPU应用于科 学计算提供了便利。近几年,由于GPU计算相比于基于CPU的超级计算机或集群具有更好 的性价比,发展基于GPU的科学计算软件已成为一个引人瞩目的课题。在这些工作中,针 对GPU加速分子动力学(MD)这一问题,已经有深入的研究,并得到了许多令人鼓舞的成果。 例如,Stone等人报道了长程静电相互作用和非键接力的GPU实现,并得到了相对于优化的 CPU 实现 10 ?100 的加速比(Stone JE, Phillips JC,Freddolino PL, Hardy DJ,Trabuco LG, Schulten K(2007) Journal of Computational Chemistry 28:2618-2640·)。之后, Anderson等人发展了基于单GPU的通用的MD实现,并发现其计算速度与30个CPU核 的集群相同(Anderson JA, Lorenz CD, Travesset A (2008) Journal of Computational Physics227:5342-5359.)。但是,与大量GPU加速的MD研究工作相比,人们对基于GPU设 备或者GPU加速的DH)模拟报道还不多。另一方面,由于受到显存大小的限制,GPU设备或 者GPU加速超过1000万粒子规模的DH)模拟目前还没有报道。
【发明内容】
[0003] 本发明提供了一种在图形处理器上实现大规模耗散粒子动力学模拟的方法。能够 突破显存的限制,在当前的图形处理器上实现超过一千万粒子规模的模拟。
[0004] 如图1所示。设定模拟初始状态后,为节省用于邻居列表存储的显存空间,我们建 立具有固定宽度k (k〈N,N为粒子总数)的邻居列表矩阵,而不是建立完整的宽度为N的邻 居列表矩阵。由于小矩阵仅保存k个粒子的邻居列表,我们必须首先计算这k个粒子的非 键相互作用。之后更新邻居列表用于存储下k个粒子的邻居列表,再计算这k个粒子的非 键相互作用。如此循环直至计算完体系中所有粒子N的非键力。换句话说,我们把完整的 邻居列表分成N/k份,逐份地建立邻居列表并计算其非键相互作用,以此来缩减存储邻居 列表的内存大小,从而达到增大模拟体系的作用。当N不能被k整除时,最后一个邻居列表 矩阵中会存在一些空闲空间,针对这些空间的线程会直接返回不进行任何操作。
[0005] 上述方法的实施细节如下:
[0006] (1)设定模拟初始状态;
[0007] (2)初始化大小为k*Ln的邻居列表矩阵;
[0008] (3)建立粒子编号从(i-1) *k-l到i*k的k个粒子的邻居列表,其中i循环计数 器;
[0009] (4)计算粒子编号从(i-1) *k-l到i*k的k个粒子的对应的非键相互作用;
[0010] (5)重复步骤(2)到(4)直至 i*k>=N。
[0011] (6)不断迭代模拟步,模拟结束后分析数据。
[0012] 上述方法中优选Ln=55。
[0013] 上述方法中如果将上述测试体系扩展至粒子数N>7. 5*106,优选k=l,024, 000时 可以获得最好的计算效率。
[0014] 本发明提供在图形处理器上实现大规模耗散粒子动力学模拟的方法的用途,这类 方法可以为计算软物质材料的表面张力、弯曲模量、临界浓度等性质提供参考,同时这类方 法也可以为其他分子模拟方法在图形处理器上的大规模模拟提供借鉴。
【专利附图】
【附图说明】 图1是图形处理器上实现大规模耗散粒子动力学模拟的方法示意图; 图2是实施例1计算结果实时图; 图3是实施例2计算结果实时图。
【具体实施方式】
[0015] 实施例1
[0016] 12, 288, 000个粒子形成膜的热涨落分析
[0017] (1)设定模拟初始状态,建立初始的分子构象和形态,包括345, 600个A4B4分子, 2, 073, 600个A2分子以及2, 073, 600个B2分子;
[0018] (2)初始化大小为k*Ln的邻居列表矩阵,此时k=l,024, 000, Ln=55 ;
[0019] (3)建立粒子编号从(i_l) *k-l到i*k的k个粒子的邻居列表,其中i循环计数 器,i从0开始计数;
[0020] (4)计算粒子编号从(i-1) *k-l到i*k的k个粒子的对应的非键相互作用;力的 具体计算方法参见(Bai ZQ,Guo HX(2013)Polymer54:2146-2157);
[0021] (5)重复步骤(2)到(4)直至i*k>=N,本例下需要重复到13次;
[0022] (6)不断迭代模拟步,模拟结束后计算热涨落。
[0023] 实施例2
[0024] T型分子的自组装模拟
[0025] (1)设定模拟初始状态,建立初始的分子构象和形态,包括139, 636个C3R3L5分 子;
[0026] (2)初始化大小为k*Ln的邻居列表矩阵,此时k=l,024, 000, Ln=55 ;
[0027] (3)建立粒子编号从(i-1) *k-l到i*k的k个粒子的邻居列表,其中i循环计数 器,i从0开始计数;
[0028] (4)计算粒子编号从(i-l)*k-l到i*k的k个粒子的对应的非键相互作用;力的 具体计算方法参见(Bai ZQ,Guo HX(2013)Polymer54:2146-2157);
[0029] (5)重复步骤(2)到(4)直至i*k>=N。本例子下需要重复到2次;
[0030] (6)不断迭代模拟步,模拟结束后计算热涨落。
[0031] 尽管结合优选实施例对本发明进行了说明,但本发明并不局限于上述实施例,应 当理解本发明所附权利要求概括了本发明的范围,在本发明构思的引导下,本领域的技术 人员应意识到,对本发明的各实施例方案所进行的一定的改变都将被本发明的权利要求书 的精神和范围所覆盖。
【权利要求】
1. 一种在图形处理器上实现大规模耗散粒子动力学模拟的方法,其特征包括如下步 骤:第一步,设定模拟初始状态;第二步,完成邻居列表的初始化;第三步,建立粒子编号从 (i-1) *k-l到i*k的k个粒子的邻居列表,其中i为循环计数器,k为每次计算的粒子数; 第四步,计算粒子编号从到i*k的k个粒子的对应的非键相互作用;第五步,重 复步骤三到四,直至i*k>=N ;第六步,不断迭代模拟步,模拟结束后分析数据。
2. 根据权利要求1所述的实现方法,其特征是:邻居列表矩阵的长度为Ln=55。
3. 根据权利要求1所述的实现方法,其特征是:如果体系粒子数N>7. 5*106,我们发现 当k=l,024, 000时可以获得最好的计算效率。
【文档编号】G06F19/00GK104143034SQ201310170754
【公开日】2014年11月12日 申请日期:2013年5月10日 优先权日:2013年5月10日
【发明者】杨科大, 郭洪霞 申请人:中国科学院化学研究所