发明名称 一种在GPU上利用多体作用模型进行粒子计算的方法
摘要 本发明提供一种在GPU上利用多体作用模型进行粒子计算的方法,包括:在加载有GPU的计算机上,将粒子系统中粒子的属性信息以及每个粒子的邻近粒子的标号信息保存到系统内存中;然后再传输到GPU的全局内存中,并在全局内存中为每个粒子对其邻近粒子施加的作用力开辟存储数组;为每一个粒子单独分配一个GPU中的计算线程;根据建立的粒子间多体相互作用模型记下本线程计算粒子的所有受力,同时保存其对邻近粒子的受力;把保存的每一个粒子邻近粒子的受力从全局内存中读入,并加和到相应标号的粒子身上,得到粒子所受到的完整作用力;在GPU上计算每个粒子的势能,并将结果输出到系统内存上,由CPU统计并计算单粒子平均势能。
申请公布号 CN101685530B 申请公布日期 2011.12.14
申请号 CN200810222937.8 申请日期 2008.09.23
申请人 中国科学院过程工程研究所 发明人 侯超峰;陈飞国;葛蔚;李静海
分类号 G06T1/20(2006.01)I 主分类号 G06T1/20(2006.01)I
代理机构 北京泛华伟业知识产权代理有限公司 11280 代理人 王勇
主权项 一种利用多体作用模型进行粒子计算的方法,其特征在于,该方法在加载有图形处理单元GPU的计算机上实现,所述GPU包括计算内核、全局内存、共享内存、常量内存以及纹理内存;该方法包括:步骤1)、将粒子系统中粒子的属性信息以及每个粒子的邻近粒子的标号信息保存到所述计算机的系统内存中,所述粒子的属性信息包括初始的位置、速度、加速度、势能,以及粒子标号、粒子种类;步骤2)、将所述系统内存中的粒子属性信息以及每个粒子的邻近粒子标号信息传输到所述GPU的全局内存中,并在所述全局内存中为每个粒子对其邻近粒子施加的作用力开辟存储数组;步骤3)、为所述粒子系统中的每一个粒子单独分配一个所述GPU中的计算线程;步骤4)、在为粒子所分配的线程上,根据所述的多体作用模型计算线程所对应粒子的势能,然后通过对势能求导的力计算模型获取该粒子所受到的作用力,并将粒子对其各个邻近粒子的作用力存储在所述GPU的共享内存中,待与所有邻近粒子相互作用计算完毕后,再将所述粒子对邻近粒子的作用力写回到步骤2)所得到的在全局内存中开辟的力存储数组中;步骤5)、在为粒子所分配的线程上,根据本线程计算的对应粒子标号,把步骤4)中该粒子邻近粒子所在线程计算的对本粒子的受力从所述全局内存的存储数组中读出,然后再累加到步骤4)计算得到的粒子所受到的作用力上,得到粒子所受到的完整作用力;步骤6)、根据步骤5)计算得到的粒子所受到的完整作用力确定粒子的加速度,然后由运动方程结合所述属性信息中初始的位置、速度信息,计算下一时刻的速度与位置;步骤7)、重复执行上述的粒子作用力计算、加速度计算、速度与位置计算操作,直至整个粒子系统达到稳定状态或满足用户所要求的重复计算次数。
地址 100190 北京市海淀区中关村北二条1号
您可能感兴趣的专利