LAMMPS
简介
Large-scale Atomic/Molecular Massively Parallel Simulator (大规模原子/分子并行模拟器,LAMMPS)是一款美国Sandia国家实验室开发的经典分子动力学模拟软件。LAMMPS的设计专注于材料模拟,并且可以高效的运行在并行计算机上。LAMMPS在GNU Public Licence (GPL)许可下免费发布。详见官网:lammps.sandia.gov
编译方法
DTK中提供的LAMMPS是稳定版本29 OCT 2020。
LAMMSP依赖于hipcub和fftw,需要首先安装(以使用yum安装为例):
yum install rocm-dev -y
yum install hipcub -y
yum install fftw-devel -y
为了在编译后进行单元测试,需要安装yaml库(可选,以使用conda安装为例),此外需要CMake版本3.12(方便起见也使用conda安装):
conda create -n lammps
conda activate lammps
conda install -c https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge cmake=3.12 yaml -y
安装脚本如下:
#使用hpcx-2.4.1
module load mpi/hpcx/2.4.1/gcc-7.3.1
export INSTALL_DIR=安装路径
#以下配置满足大部分用户,CMake 3.12版本有效,其他CMake版本可能无效
mkdir build && cd build
cmake \
-C ../cmake/presets/most.cmake \
-C ../cmake/presets/nolib.cmake \
../cmake \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DLAMMPS_MACHINE=mpi \
-DBUILD_SHARED_LIBS=yes \
-DBUILD_MPI=yes \
-DBUILD_TOOLS=yes \
-DFFT=FFTW3 \
-DPKG_GPU=yes -DGPU_API=hip -DHIP_ARCH=gfx906 \
-DCMAKE_CXX_COMPILER=hipcc \
-DCMAKE_C_COMPILER=mpicc \
-DENABLE_TESTING=on \
#most.cmake中有lammps大部分功能,nolib.cmake会去掉依赖额外库的功能
#编译lammps动态库,可以用于其他程序,编译mpi版本
#编译GPU包,针对gfx906架构的GPU使用hip接口
#开启单元测试(可选)
#编译
make -j 线程数
#单元测试
ctest
#安装
make install
使用方法
DTK中提供的LAMMPS是稳定版本29 OCT 2020。
包含不需要额外依赖库的大部分功能,以及GPU加速包,尚未包含KOKKOS版本。
运行脚本示例如下:
#!/bin/bash
#SBATCH -J lammps
#SBATCH -N 1
#SBATCH -B 4:8
#SBATCH -p #可用队列
#SBATCH --gres=dcu:4
#节点列表
#对于GPU版,每节点使用4进程
#对于CPU版,每节点使用32进程
hostfile=hostfile.${SLURM_JOB_ID}
#hostfile_cpu=hostfile_cpu.${SLURM_JOB_ID}
for i in $(scontrol show hostnames $SLURM_NODELIST)
do
echo "$i slots=4" >> $hostfile
#echo "$i slots=32" >> ${hostfile_cpu}
done
#使用environment module加载LAMMPS路径
module load #Lammps module file
#或手动加载
#LAMMPS=/path/to/lammps
#export PATH=$LAMMPS/bin:$PATH
#export LD_LIBRARY_PATH=$LAMMPS/lib64:$LD_LIBRARY_PATH
#GPU版
mpirun -np 4 --hostfile $hostfile --map-by socket:PE=8 --bind-to core --report-bindings \
lmp_mpi -sf gpu -pk gpu 4 tpa 8 -in #输入文件名
#CPU版(使用OPT包)
mpirun -np 32 --hostfile $hostfile --map-by socket:PE=1 --bind-to core --report-bindings \
lmp_mpi -sf opt -in #输入文件名
输入文件示例请参考LAMMPS路径下的examples和bench目录中的各种例子。