简介

LAMMPS即Large-scale Atomic/MolecularMassivelyParallel Simulator,可以翻译为大规模原子分子并行模拟器,主要用于分子动力学相关的一些计算和模拟工作。

链接:官网地址下载最新稳定版下载指定版本

编译环境

需要的编译环境为:

  • c/c++的编译器,如gcc/icc等
  • mpi编译器,如mpich等
  • fftw数学库

下面以intel 2013 compiler 编译器 和 mpich3.0.4 版本为例,介绍 lammps 的安装。

我们需要先设置一下环境变量:

# 设置编译c/c++的环境
source /opt/intel/composer_xe_2013.0.079/bin/iccvars.sh intel64 
# 设置mpi编译环境  
export PATH=/usr/local/mpi-intel2013/bin:$PATH 
export LD_LIBRARY_PATH=/usr/local/mpi-intel2013/lib:$LD_LIBRARY_PATH

不同机器的编译器版本、安装目录不同,请依据自己的情况修改,不要直接copy。

安装lammps的说明

lammps包含了非常丰富的packages,截止到现在大约有60多个,默认开启的是:

  • KSPACE
  • MANYBODY
  • MOLECULE

其他的包,我大致分为3类:

  • 直接通过 make yes 就能安装的包,如ASPHERE、BODY、CLASS2等。
  • 需要在lammps/lib文件夹下手动编译的包,如atc、quip、reaxc等。
  • 需要在lammps/lib文件夹下,额外下载源码安装,然后再链接的包,如kim、voronoi、user-quip等。

另外特别指出,还有一些功能可以支持,部分列举如下:

  • lammps支持GPU,可以编译出GPU版本
  • 安装jpeg/png的库,并通过修改lammps的makefile来支持
  • 修改lammps的makefile的宏定义来支持ffmpeg
  • 修改lammps的makefile的宏定义来编译出不同精度的lammps

此次编译仅安装默认的包,其他的内容以后会介绍。

编译lammps

解压缩

如果我们下载到的压缩包为lammps-30Jul16.tar.gz,将其放置在某个目录下,例如用户根目录$HOME,先进行解压缩:

tar lammps-30Jul16.tar.gz
cd lammps-30Jul16
cd src

修改Makefile

我们使用文本编辑器(例如vim),打开lammps的makefile文件,修改其中的参数为我们需要的。

vim MAKE/Makefile.mpi

需要修改的参数包括如下部分:

# intel的FFTW  
MKLROOT = /opt/intel/composer_xe_2013.0.079/mkl  
FFT_INC =    -DFFT_FFTW3  -I$(MKLROOT)/include/fftw  
FFT_PATH =  
FFT_LIB =  $(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.a  

备注:MKLROOT为系统中Intel Compiler的mkl库的根目录,请依据自己的情况进行修改为实际路径。默认情况下安装的Intel Compiler的MKL库并未编译fftw的静态库,故需要手动编译。以后关于intel FFTW库的文章会介绍道的。

编译

编译命令为:

make mpi # 如果是多核的机器可以并行编译,如make -j 4 mpi 表示用4个cpu核一起编译

如果编译成功,会会生成一个名为 lmp_mpi 的可执行文件。

测试lammps

下面举例说明如何在天河超算平台下,通过slurm作业管理系统,提交lammps程序。

准备输入文件

准备一个输入文件,如用lammps自带的例子:

cd lammps/bench

里面有一个名为in.lj的文件。

编写提交脚本

编写一个名为sub.sh的脚本文件,里面写:

#!/bin/bash  
yhrun -N 2 -n 24 -p debug /path/to/lmp_th < in.lj  

参数说明如下:

参数 含义
yhrun slurm作业管理系统中,并行执行mpi程序的命令,类似mpirun
-N 任务所需的总节点数
-n 任务所需的总核数
-p 计算分区
/path/to/lmp_mpi lmp_mpi可执行程序所在位置,请替换为实际的路径
< in.lj 表示以in.lj作为输入文件

提交任务

使用yhbatch命令提交作业:

yhbatch -N 2 -n 24-p debug sub.sh  

查看结果

计算完成后会在默认的输出文件log.lammps中生成结果文件,查看是否正确。