一、简介
LAMMPS ("Large-scale Atomic/Molecular Massively Parallel Simulator",大尺度原子/分子并行模拟工具)是一个经典的分子动力学模拟程序,由桑迪亚国家实验室开发。
LAMMPS 提供了元素周期表中对应原子的经验势函数,能够开展与实际体系相符的分子动力学模拟。例如,可以计算金属铝的晶格常数或水的密度,并获得与实验结果一致的数值。此外,LAMMPS 还提供了多种模型势函数,适用于粗粒化模拟,例如基于粒子-弹簧模型研究高分子链的性质。
LAMMPS当前使用C++编写,早期版本使用Fortran77以及Fortran90。分子模拟方法主要有分子学方法(MM),蒙特卡洛方法(MC)及分子动力学方法(MD)。
二、直接安装
基础版本
sudo apt update && sudo apt upgrade
sudo apt-get install lammps
sudo apt-get install openkim-models
三、cmake编译安装
可选择安装其它包
1、安装编译环境
GPU加速需要CUDA环境,nvcc -V
查看是否安装及版本。
sudo apt-get update
sudo apt-get install gcc g++ gfortran cmake make build-essential ffmpeg libopenmpi-dev -y
2、下载最新稳定版的LAMMPS
wget https://download.lammps.org/tars/lammps-stable.tar.gz
3、编译安装
tar -xzvf lammps-stable.tar.gz
cd lammps-29Aug2024
mkdir -p build
cd build
cmake ../cmake -DPKG_REAXFF=yes -DPKG_AMOEBA=yes -DPKG_GPU=yes -DPKG_AMOEBA=yes -DPKG_ASPHERE=yes -DPKG_BOCS=yes -DPKG_BODY=yes -DPKG_BPM=yes -DPKG_BROWNIAN=yes -DPKG_KSPACE=yes -DPKG_MANYBODY=yes -DPKG_MOFFF=yes -DPKG_MOLECULE=yes
make
sudo make install
可以通过 -DPKG_REAXFF= 安装其它包,可用的软件包
4、配置环境变量
vim ~/.bashrc
export PATH=/work/lammps/lammps-29Aug2024/build:$PATH
source ~/.bashrc
5、测试
cd ../example/melt/
mpirun -np 6 lmp -in in.melt
# 测试Reaxff
cd ../reaxff/CHO/
mpirun -np 6 lmp -in in.CHO
# 使用GPU
cd ../examples/shear
mpirun -np 6 lmp_mpi -sf gpu -pk gpu 1 -in in.friction
6、安装KOKKOS
KOKKOS覆盖了GPU包,因此安装KOKKOS就不能安装GPU包了
cd ../../src
make yes-manybody
make yes-meam
make yes-kokkos
make package-update # 更新安装的包,可能包之间依赖关系
make package-installed # 查看安装的包
- 修改
Makefile.kokkos_cuda_mpi
文件
vim MAKE/OPTIONS/Makefile.kokkos_cuda_mpi
- 修改内容如下:
KOKKOS_ARCH = ADA89
KOKKOS_CUDA_OPTOPNS = "enable_lambda"
- KOKKOS_ARCH = ADA89,通过3.1.7. Packages with extra build options — LAMMPS documentation查看显卡的架构,进行对应修改
- 编译与添加到环境变量
make kokkos_cuda_mpi -j16
echo 'PATH=/lammps/src/:$PATH' >> ~/.bashrc
source ~/.bashrc
7、安装并行GPU版本
重新解决LAMMPS安装包,可以放在其它位置
然后修改Lammps的GUP库(lib/gpu/Makerfile.linux)的Makerfile.linux文件;修改cuda位置,已经gpu的算力。
- /usr/local/cuda替换成你的cuda-toolkit位置
- arch=sm_75数字替换成你的显卡的算力值(89=8.9*10)
- 算力查询地址
make -f Makefile.linux
若需要重新编译时,需要先执行 make -f Makefile.linux clean
- 到 LAMMPS-29Aug2024\src\MAKE中修改Makefile.mpi,在LIB = 的位置加上
-L/usr/local/cuda/lib64
然后切换到lammps-29Aug2024\src 执行编译
make yes-gpu
make yes-manybody
make mpi -j$(nproc)
echo 'PATH=root/lammps-29Aug2024/src/:$PATH' >> ~/.bashrc
source ~/.bashrc
四、问题
-
这个问题是提示用户不要使用root账号运行,可以使用--allow-as-root暂时运行,否则创建一个新的非root账号运行。
- 这个问题主要是没有配置lmp的环境变量;
vim ~/.bashrc
export PATH=/work/lammps/lammps-29Aug2024/build:$PATH
source ~/.bashrc
- 出现这个问题,主要是nvcc对这个目录没有权限。
make: *** [Nvidia.makefile:66: atom_cubin.h] Error 1 make: *** Waiting for unfinished jobs.... fatbinary fatal : Could not open output file './/beck.cubin' make: *** [Nvidia.makefile:66: beck_cubin.h] Error 1 fatbinary fatal : Could not open output file './/born.cubin' make: *** [Nvidia.makefile:66: born_cubin.h] Error 1 fatbinary fatal : Could not open output file './/amoeba.cubin' make: *** [Nvidia.makefile:66: amoeba_cubin.h] Error 1
- 解决方法修改当前目录的权限。
# LAMMPS 的 lib/gpu 目录
cd lammps/lib/gpu
# 确保当前用户有读写权限
sudo chown -R $USER:$USER .
chmod -R u+rw .
- 测试时若出现这样的错误:表明你的 LAMMPS 可执行文件
lmp_mpi
在运行时缺少MANYBODY
包的支持,而你的输入脚本 (in.shear
) 中使用了pair_style eam
(一种嵌入原子势,属于MANYBODY
包)
ERROR: Unrecognized pair style 'eam' is part of the MANYBODY package which is not enabled in this LAMMPS binary. (../force.cpp:275) Last command: pair_style eam
- 解决方法:
cd ../src
make yes-manybody
make mpi -j4 # 使用 4 个 CPU 核心加速编译
./lmp_mpi -h | grep MANYBODY