论文部分内容阅读
现代GPU计算能力的快速增长,使得它越来越适合于大规模问题的计算。CUDA(Compute Unified Device Architecture,统一计算设备架构)技术是一种将GPU作为数据并行计算设备的软硬件体系,编程人员可以使用类C语言对其进行开发。利用CUDA能够充分的开发GPU的高计算能力,目前,它已经被广泛应用于石油勘探、天文计算、图像处理等各个领域,并且取得了很好的加速效果。
本文使用CUDA编程模型对现有的分子动力学计算软件MDynamix进行加速,为对模拟算法进行改写,我们首先将整个程序由FORTRAN改为C程序,再将其中占用模拟时间最长的长程静电力部分的计算放在GPU上进行。通过对不同数目的水分子进行实验,我们发现GPU上的算法可以达到较高的计算效率。若采用原始的FORTRAN程序对5000个水分子2纳秒时长的演变进行模拟,共需要约三个月左右的时间,其中长程静电力的计算就需将近两个月的时间。而加速后的算法长程静电力部分的计算时间可以加快约100倍,整个模拟时间也加快了4到6倍。
第二章研究了CUDA编程模型、编程接口以及CUDA存储器组织。CUDA编程模型部分包含了CPU与GPU各自的分工、内核函数的调用以及CUDA中的线程结构;CUDA编程接口这一节介绍了CUDA程序的编译过程、编译工具以及CUDA程序的基本模式;CUDA存储器模型主要介绍了几种常用的存储器和它们各自的用途,这些存储器包括寄存器、局部存储器、共享存储器、全局存储器、常数存储器以及纹理存储器。
第三章研究了分子动力学的基本原理和模拟方法。在计算模拟中,通常把原子看作经典粒子,在分子立场模型的作用下,可以计算出某一时刻这些原子所受的力,再根据牛顿力学原理,通过解分子运动方程就可以确定这些原子的运动情况,从而确定整个系统的结构和变化。然而在分子动力学模拟过程中,只有粒子个数在无限多时,才能真实地再现物质的宏观行为,粒子数目越多,模拟所需时间也就越长,而我们刚好可以利用GPU多线程的优势,在模拟时将每个线程看作一个粒子,多个线程同时运算,从而加快计算速度。
第四章详细说明了分子动力学计算软件MDynamix在GPU上的实现过程。第一节介绍了GPU上算法的模拟步骤;第二节说明了怎样处理分子间的作用力,包括相邻成键原子、键角、扭转作用以及“非键”相互作用;第三节说明了怎样使用CUDA对程序中耗时最长的部分,长程静电力的计算进行加速;最后一节对加速效果进行说明,我们对不同数目的水分子的演变进行模拟,通过使用GPU计算占用模拟过程总时长70%左右的长程静电力,使得这部分计算的速度提高了20-170倍,总的模拟时间也加快了2-6倍。