LAMMPS编译安装教程

2020-05-14

lammps.png

简介

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

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

编译环境

需要的编译环境为:

  • c/c++的编译器,如gcc/icc等

  • mpi编译器,如mpich等

  • fftw数学库

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

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

bash
1
2
3
4
5
# 设置编译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,先进行解压缩:

bash
1
2
3
tar lammps-30Jul16.tar.gz
cd lammps-30Jul16
cd src

修改Makefile

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

bash
1
vim MAKE/Makefile.mpi

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

bash
1
2
3
4
5
# 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库的文章会介绍道的。

编译

编译命令为:

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

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

测试lammps

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

准备输入文件

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

bash
1
cd lammps/bench

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

编写提交脚本

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

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

参数说明如下:

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

提交任务

使用yhbatch命令提交作业:

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

查看结果

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

文章作者: mrzhenggang
文章链接: https://blog.mrzhenggang.com/lammps-install/


阅读510
分享