LAMMPS编译安装教程
# 简介
LAMMPS即Large-scale Atomic/MolecularMassivelyParallel Simulator,可以翻译为大规模原子分子并行模拟器,主要用于分子动力学相关的一些计算和模拟工作。
链接:官网地址 (opens new window),下载最新稳定版 (opens new window),下载指定版本 (opens new window)
# 编译环境
需要的编译环境为:
- 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
2
3
4
5
不同机器的编译器版本、安装目录不同,请依据自己的情况修改,不要直接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
2
3
# 修改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
2
3
4
5
备注: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
2
参数说明如下:
参数 | 含义 |
---|---|
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中生成结果文件,查看是否正确。