首发于 模拟小窝
iSimuL团队推出:基于GPU并行的高性能材料计算MD软件

iSimuL团队推出:基于GPU并行的高性能材料计算MD软件

首先,什么是 GPUMD?GPUMD 是 Graphics Processing Units Molecular Dynamics
的首字母缩写。Graphics Processing Units (GPU) 的中文意思是图形处理器,与中央处理器(Central
Processing Units,CPU)的概念相对。Molecular Dynamics (MD) 就是分子动力学的意思。合起来,GPUMD
指的是一个在图形处理器中编程实现的分子动力学模拟程序。在 GPU 中编程的标准语言是 CUDA,但 OpenCL 也很流行。GPUMD 是用
CUDA 编程实现的。以后我应该也不会考虑用 OpenCL。


读者会问:已经有很多 MD 程序了,为什么还要再写一个?我写 GPUMD 程序的初衷很简单:我学习 CUDA 编程之后,想写一个 MD
程序作为一个练习。我本人的研究领域之一是材料的热传导性质,其中用到的经验势主要是多体势函数,比如 Tersoff 势函数或者
Stilinger-Weber (SW)势函数。在编程过程中,我发现:现有的 MD 程序(例如非常有名的
LAMMPS)中关于多体势函数的公式体系存在问题。通过仔细的推导,我得到了一套非常优美的关于相互作用力、位力(virial)、以及热流(heat

current)的公式体系。其中,新的力的公式和以往的力的公式是等价的(必须的),但新的位力和热流的公式与以往的公式是不等价的。我的文章【1】指出以往的公式是错误的。不仅如此,新的公式体系非常适合利用
CUDA 编程实现。更重要的是,这些结果对所有多体势都适用。基于多体势的重要性,我觉得有必要写一个新的基于 GPU 的 MD
程序,并将它逐步发展为一个优秀的、开源的、免费的 MD 程序。


GPUMD 程序的 1.0 版本于 2017 年 7 月在 github 发布,到目前为止的最新版是 1.2 版本。每个版本都可以在 github 下载,地址为: github.com/brucefan1983 。以后如果有新的版本,都会在 github 更新。我也在筹划建立官方网站。


相对于其它软件,例如 LAMMPS,GPUMD 到底有什么优势呢?目前,GPUMD 的优势体现在如下几个方面:

1)更高效。用同样的 GPU,GPUMD 大概是 LAMMPS 的十倍快。具体数据见文章【2】。

2)使用了正确的热流公式。注意:LAMMPS 中的热流公式不适用于多体势【1】。

3)有不少专门研究热传导的功能,包括一个谱分解方法【3】。

4)输入脚本中的命令相对简单。(这也是个弱点,因为这代表功能不多、不灵活)


GPUMD 还处于初级阶段,其功能还非常有限。例如:

1)只实现了少数几种势函数:包括 Tersoff 势、SW 势、EAM 势(适用于金属的)等。更多的势函数会在以后慢慢加上。

2)只有少数几种功能,大部分都是和热传导有关的。因为我暂时没有研究其它问题的动机,所以很多功能,比如拉伸、切削等,都还没有考虑。以后应该会慢慢把这些常用的功能加上。

3)该程序的运行要求必须有 GPU 和 CUDA 开发环境,而且目前只支持单个 GPU 计算,没有多 GPU 并行。以后,我会考虑多 GPU 并行,但不会考虑开发纯 CPU 版本。这个程序的名字 GPUMD 就说明它是一个利用 GPU 的程序。


GPUMD 的编译非常简单。只要进入 src 文件夹,然后敲一下 make 即可。在 make 之前,读者可能需要稍微修改一下
makefile,使得编译选项更加符合自己的需要和所用的计算硬件。更多的细节可在程序的手册(doc 文件夹中的 pdf
文件)找到。说到手册,我要强调的是:一定要认真读手册。目前,GPUMD 的手册只有 60 页。虽然不长,但写这 60
页的手册大概花了我半年的时间。读者在使用 GPUMD 之前不需要将手册全部读完,但需要仔细阅读最后两章的内容。


有一点要提醒的是,我假设使用 GPUMD
的读者具有一定的编程能力,能熟练运用至少一门编程语言,自己建立模型(也就是模拟系统的初始坐标、原子类型、分组、盒子周期性与大小等)。我不会做任何与建模有关的功能。在我看来,会熟练运用一门编程语言是做任何与计算(模拟)有关的研究工作的基础。

发布于 2017-10-27 10:49

文章被以下专栏收录