个人笔记,如有转载,请注明出处。

--by realasking

这几年来,lammps的程序变得规范了许多,自从其github上发布的版本支持cmake之后,编译也变得简单了不少。去年8月曾经尝试在自己笔记本的win10下的WSL环境用cmake编译过一个简单的版本,并将方法发布在百度lammps吧:win10下安装lammps不完全教程,现在发现它已经更加完善,于是就在实验室服务器上用此方法重新编译了一个更新版本。

系统环境

我们实验室的服务器有P100显卡,安装有intel编译器和mkl数学库,之前已经安装了virtualenv,vtk,voro++,jpeg,png等库及开发包。

系统环境变量采用env-modules来管理。

安装mpi4py

pip3 install mpi4py

安装cmake 3.1

要支持GPU组件和识别MKL数学库,必须使用cmake3.1。

yum install cmake3*

获取lammps

git clone https://github.com/lammps/lammps.git

编译Cuda版

[user@cmake]$mkdir build; cd build
[user@build]$cmake3 .. -DCMAKE_INSTALL_PREFIX=~/lammps -DCMAKE_BUILD_TYPE=Release -DPKG_CORESHELL=ON -DPKG_DIPOLE=ON -DPKG_GRANULAR=ON -DPKG_MOLECULE=ON -DPKG_PERI=ON -DPKG_MC=ON  -DPKG_MISC=ON -DPKG_USER-MEAMC=ON -DPKG_USER-REAXC=ON -DPKG_REPLICA=ON -DPKG_KSPACE=ON -DPKG_PYTHON=ON -DPKG_POEMS=ON -DPKG_MANYBODY=ON -DPKG_USER-ATC=ON -DPKG_USER-AWPMD=ON -DPKG_USER-DIFFRACTION=ON -DPKG_USER-FEP=ON -DPKG_USER-MEAMC=ON -DPKG_USER-MOLFILE=ON -DPKG_USER-PHONON=ON -DPKG_USER-REAXC=OFF -DPKG_USER-VTK=ON -DPKG_VORONOI=ON -DDOWNLOAD_VORO=OFF -DPKG_USER-FEP=ON -DPKG_USER-MEAMC=ON -DPKG_USER-MOLFILE=ON -DPKG_USER-PHONON=ON -DPKG_USER-VTK=ON -DBUILD_OMP=ON -DPKG_OPT=ON -DPKG_USER-OMP=ON -DPKG_KOKKOS=OFF -DPKG_KIM=OFF -DPKG_LATTE=OFF -DDOWNLOAD_KIM=OFF -DBUILD_OMP=ON -DPKG_OPT=ON -DPKG_USER-OMP=ON -DBUILD_LIB=ON -DBUILD_EXE=ON -DBUILD_SHARED_LIBS=ON -DPKG_GPU=ON -DPKG_PYTHON=ON -DGPU_API=cuda -DGPU_ARCH=sm_60 -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpif90 -DFFT=MKL -DMKL_INCLUDE_DIRS=-I/opt/intel2015/composer_xe_2015.2.164/mkl/include -DMKL_LIBRARIES=-L/opt/intel2015/composer_xe_2015.2.164/mkl/lib/intel64
[user@build]$make -j20
[user@build]$make install

编译纯CPU版

[user@cmake]$mkdir build2; cd build2
[user@build2]$cmake3 .. -DCMAKE_INSTALL_PREFIX=~/lammps_nocuda -DCMAKE_BUILD_TYPE=Release -DPKG_CORESHELL=ON -DPKG_DIPOLE=ON -DPKG_GRANULAR=ON -DPKG_MOLECULE=ON -DPKG_PERI=ON -DPKG_MC=ON  -DPKG_MISC=ON -DPKG_USER-MEAMC=ON -DPKG_USER-REAXC=ON -DPKG_REPLICA=ON -DPKG_KSPACE=ON -DPKG_PYTHON=ON -DPKG_POEMS=ON -DPKG_MANYBODY=ON -DPKG_USER-ATC=ON -DPKG_USER-AWPMD=ON -DPKG_USER-DIFFRACTION=ON -DPKG_USER-FEP=ON -DPKG_USER-MEAMC=ON -DPKG_USER-MOLFILE=ON -DPKG_USER-PHONON=ON -DPKG_USER-REAXC=OFF -DPKG_USER-VTK=ON -DPKG_VORONOI=ON -DDOWNLOAD_VORO=OFF -DPKG_USER-FEP=ON -DPKG_USER-MEAMC=ON -DPKG_USER-MOLFILE=ON -DPKG_USER-PHONON=ON -DPKG_USER-VTK=ON -DBUILD_OMP=ON -DPKG_OPT=ON -DPKG_USER-OMP=ON -DPKG_KOKKOS=OFF -DPKG_KIM=OFF -DPKG_LATTE=OFF -DDOWNLOAD_KIM=OFF -DBUILD_OMP=ON -DPKG_OPT=ON -DPKG_USER-OMP=ON -DBUILD_LIB=ON -DBUILD_EXE=ON -DBUILD_SHARED_LIBS=ON -DPKG_PYTHON=ON -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpif90 -DFFT=MKL -DMKL_INCLUDE_DIRS=-I/opt/intel2015/composer_xe_2015.2.164/mkl/include -DMKL_LIBRARIES=-L/opt/intel2015/composer_xe_2015.2.164/mkl/lib/intel64
[user@build2]$make -j20
[user@build2]$make install

然后将两个版本分别加入到module文件中,使用时动态切换就可以了。