一、环境配置
module load intel/oneapi2023.2_noimpi
module load mpi/mpich/4.1.2-icc-oneapi2023.2-ch4
二、源码安装lammps-31March2017
2.1. 获取源码
wget https://download.lammps.org/tars/lammps-31Mar2017.tar.gz
tar zxvf lammps-31Mar2017.tar.gz
cd lammps-31Mar17
2.2. 安装
cd src
make yes-ASPHERE yes-CLASS2 yes-KSPACE yes-MPIIO yes-USER-OMP yes-USER-SPH
cat <<EOF > MAKE/Makefile.mpi
# mpi = MPI with its default compiler
SHELL = /bin/sh
# ---------------------------------------------------------------------
# compiler/linker settings
# specify flags and libraries needed for your compiler
CC = mpicxx
CCFLAGS = -g -O3 -qopenmp -DLAMMPS_MEMALIGN=64 -qno-offload \
-xHost -fno-alias -ansi-alias -restrict -qoverride-limits
SHFLAGS = -fPIC
DEPFLAGS = -M
LINK = mpicxx
LINKFLAGS = -g -O3 -qopenmp -xHost
LIB =
SIZE = size
ARCHIVE = ar
ARFLAGS = -rc
SHLIBFLAGS = -shared
# ---------------------------------------------------------------------
# LAMMPS-specific settings, all OPTIONAL
# specify settings for LAMMPS features you will use
# if you change any -D setting, do full re-compile after "make clean"
# LAMMPS ifdef settings
# see possible settings in Section 2.2 (step 4) of manual
LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG
# MPI library
# see discussion in Section 2.2 (step 5) of manual
# MPI wrapper compiler/linker can provide this info
# can point to dummy MPI library in src/STUBS as in Makefile.serial
# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts
# INC = path for mpi.h, MPI compiler settings
# PATH = path for MPI library
# LIB = name of MPI library
MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -I/APP/u22/x86/mpi/mpich-4.1.2-icc-oneapi2023.2-ch4/include
MPI_PATH = -L/APP/u22/x86/mpi/mpich-4.1.2-icc-oneapi2023.2-ch4/lib
MPI_LIB = -lmpich -lmpl -lopa -lfmpich -lmpichcxx
# FFT library
# see discussion in Section 2.2 (step 6) of manual
# can be left blank to use provided KISS FFT library
# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings
# PATH = path for FFT library
# LIB = name of FFT library
MKL_ROOT=/APP/u22/x86/intel/oneapi2023.2/mkl/2023.2.0
FFT_INC = -DFFT_MKL -DFFT_SINGLE -I${MKL_ROOT}/include/fftw
FFT_PATH =
FFT_LIB = -L${MKL_ROOT}/lib/intel64 -lmkl_intel_ilp64 \
-lmkl_intel_thread -lmkl_core
# JPEG and/or PNG library
# see discussion in Section 2.2 (step 7) of manual
# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC
# INC = path(s) for jpeglib.h and/or png.h
# PATH = path(s) for JPEG library and/or PNG library
# LIB = name(s) of JPEG library and/or PNG library
JPG_INC =
JPG_PATH =
JPG_LIB = -ljpeg
# ---------------------------------------------------------------------
# build rules and dependencies
# do not edit this section
include Makefile.package.settings
include Makefile.package
EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC)
EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH)
EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB)
EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS)
EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS)
# Path to src files
vpath %.cpp ..
vpath %.h ..
# Link target
$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS)
$(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE)
$(SIZE) $(EXE)
# Library targets
lib: $(OBJ) $(EXTRA_LINK_DEPENDS)
$(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ)
shlib: $(OBJ) $(EXTRA_LINK_DEPENDS)
$(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \
$(OBJ) $(EXTRA_LIB) $(LIB)
# Compilation rules
%.o:%.cpp
$(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $<
# Individual dependencies
depend : fastdep.exe $(SRC)
@./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1
fastdep.exe: ../DEPEND/fastdep.c
cc -O -o $@ $<
sinclude .depend
EOF
make mpi
2.3. 相关库安装
官网提示,进入src文件夹时候就可以make
,但每添加一个lib库就需要加一个make
,因此从tools开始make
cd tools
cp ../../lammps-17Nov16/tools/data2xmovie.c ./
cp ../../lammps-17Nov16/tools/xmovie/ -r ./
#修改tools中的makefile
#统一mpicc
sed -i "s/g++/icpc/g" Makefile
sed -i "s/gcc/icc/g" Makefile
make
之后开始make
一部分
cd ../src
make yes-ASPHERE yes-BODY yes-CLASS2 yes-COLLOID yes-COMPRESS yes-CORESHELL yes-DIPOLE yes-GRANULAR yes-KSPACE yes-MANYBODY yes-MC yes-MISC yes-MOLECULE yes-MPIIO yes-OPT yes-PERI yes-QEQ yes-REPLICA yes-RIGID yes-SHOCK yes-SNAP yes-SPIN yes-SRD yes-USER-OMP yes-USER-SPH
#make poem
cd ../lib/poems
rm *.o
make -f Makefile.g++// make -f Makefile.icc
cd ../../src
make yes-poems
#make meam
cd ../lib/mean
rm *.o
make -f Makefile.gfortran
cp Makefile.lammps.gfortran Makefile.lammps
cd ../../src
make yes-meam
#make reax
cd ../lib/reax
rm *.o
make -f Makefile.gfortran
cp Makefile.lammps.gfortran Makefile.lammps
cd ../../src
make yes-reax
#make 其它
make yes-USER-BOCS yes-USER-CGDNA yes-USER-CGSDK yes-USER-DIFFRACTION yes-USER-DPD yes-USER-DRUDE yes-USER-EFF yes-USER-FEP yes-USER-INTEL yes-USER-LB yes-USER-MANIFOLD yes-USER-MEAMC yes-USER-MESO yes-USER-MGPT yes-USER-MISC yes-USER-MOFFF yes-USER-MOLFILE yes-USER-OMP yes-USER-PHONON yes-USER-PTM yes-USER-QTB yes-USER-REAXC yes-USER-SMTBQ yes-USER-SDPD yes-USER-SPH yes-USER-TALLY yes-USER-UEF
#非GPU环境不要make yes-all,会安装很多GPU库,然后报错
make mpi
报错没有QUIP
../../lib/quip/Makefile.lammps:8: *** Environment variable QUIP_ROOT must be set.. Stop
../../lib/quip/Makefile.lammps:12: *** Environment variable QUIP_ARCH must be set.. Stop
找到src/quip
文件夹,里面没有源码,于是按照README安装库
cd ../src/quip
#一定要recursive才能获得所有层层叠叠的包,尤其是GAP
#测试发现,其实不用recursive,反正在make config的时候编译不了这么多,最后make config的时候全默认,然后才通过
git clone --recursive https://github.com/libAtoms/QUIP.git
#export QUIP_ARCH=linux_x86_64_ifort_icc_mpi#一直报错,更换mpi
export QUIP_ARCH=linux_x86_64_ifort_icc
export QUIP_ROOT=/GLOBALFS/nscc-gz_qmo2/lammps/lammps-31Mar17/lib/quip/QUIP
cd QUIP
make config
make libquip
cd ../../../src
make yes-user-quip
报错mpif90
无法识别
lib/quip/QUIP/src/GAP/gapversion: No such file or directory
*** fortran compiler >>mpif90 << not recognised. Edit lib/quip/Makefile.lammps to specify the fortran library your linker should link to. Stop
quip make config
的时候,一直选默认参数,不添加GAP
kim报错,重新下载
../../lib/kim/Makefile.lammps:21: *** kim-api-build-config utility is not available. Something is wrong with your KIM API package setup. Stop.
cd ../../lib/kim
wget https://s3.openkim.org/kim-api/kim-api-2.3.0.txz
tar Jxvf kim-api-2.3.0.txz
cd kim-api-2.3.0
mkdir build
cd build
cmake -DLAMMPS_MACHINE=mpi -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_INSTALL_PREFIX=~/lammps/lammps-31Mar17/lib/kim -DCMAKE_Fortran_COMPILER=mpif90 ..
make
make install
mv Makefile.lammps Makefile.lammps.bak
cat <<EOF > Makefile.lammps
ifeq ($(strip $(shell pkg-config --version)),)
$(error 'pkg-config' not found, but is required to configure the KIM API)
endif
kim_PREFIX := $(shell cat ../../lib/kim/kim-prefix.txt 2> /dev/null)
kim_PREFIX := $(if $(kim_PREFIX),$(kim_PREFIX)/lib/pkgconfig,)
kim_PREFIX := $(if $(shell printf -- "$${PKG_CONFIG_PATH}"),$(kim_PREFIX):$(shell printf -- "$${PKG_CONFIG_PATH}"),$(kim_PREFIX))
# there is no usable libcurl installation
ifeq ($(shell curl-config --version 2> /dev/null),)
kim_SYSINC := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --cflags libkim-api 2> /dev/null)
kim_SYSLIB := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --libs libkim-api 2> /dev/null)
else
kim_SYSINC := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --cflags libkim-api 2> /dev/null) $(shell curl-config --cflags) -DLMP_KIM_CURL
kim_SYSLIB := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --libs libkim-api 2> /dev/null) $(shell curl-config --libs)
endif
ifeq ($(strip $(kim_SYSINC)),)
$(error 'pkg-config' could not find an installed KIM API library.)
endif
EOF
kokkos报错,重新下载
非GPU环境直接make no-kokkos
,GPU环境报错,重装如下
wget https://github.com/kokkos/kokkos/archive/refs/tags/4.3.01.tar.gz
tar zxvf 4.3.01.tar.gz
cd kokkos-4.3.01
mkdir build
cd build
../generate_makefile.bash --prefix=~/lammps/lammps-31Mar17/lib/kokkos/kokkos-4.3.01/build --with-hwloc=/GLOBALFS/nscc-gz_qmo2/lammps/lammps-31Mar17/lib/hwloc/hwloc-2.2.0
#cmake -DLAMMPS_MACHINE=mpi -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_INSTALL_PREFIX=~/lammps/lammps-31Mar17/lib/kokkos -DCMAKE_Fortran_COMPILER=mpif90 ..
cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_INSTALL_PREFIX=~/lammps/lammps-31Mar17/lib/kokkos -DCMAKE_Fortran_COMPILER=ifort ..
make
cd ../..
mv kokkos-4.3.01/ ../
cd ..
rm kokkos -rf
mv kokkos-4.3.01/ kokkos
cd ../../src
make mpi
gpu报错,重新下载
make no-gpu
colvars报错
Makefile.package.settings:13: ../../lib/colvars/Makefile.lammps: No such file or directory
cd ../lib/colvars
make -f Makefile.g++#默认g++编译器,未找到Makefile.ifort之类的
cd ../../src
make yes-USER-COLVARS
make mpi
h5md报错
Makefile.package.settings:13: ../../lib/h5md/Makefile.lammps: No such file or directory
module load hdf5/1.14.3-icc-oneapi2023.2-mpich-4.1.2-ch4
cd ../lib/h5md
vi h5md # CC从h5cc替换成h5pcc
make
cd ../../src
make yes-user-h5md
qmmm报错
Makefile.package.settings:11: ../../lib/qmmm/Makefile.lammps: No such file or directory
cd ../lib/qmmm
make -f Makefile.ifort
cd ../../src
make yes-USER-QMMM
三、源码安装lammps-24Dec2020
wget https://download.lammps.org/tars/lammps-24Dec2020.tar.gz
tar zxvf lammps-24Dec2020.tar.gz
cd lammps-24Dec20
mkdir build_mpi exec_mpi
cd build_mpi
make -C /GLOBALFS/nscc-gz_qmo2/lammps/lammps-24Dec20/src purge
make -C /GLOBALFS/nscc-gz_qmo2/lammps/lammps-24Dec20/src no-all purge
cmake -DLAMMPS_MACHINE=mpi -DBUILD_MPI=yes -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_C_COMPILER=mpicc -DCMAKE_INSTALL_PREFIX=~/lammps/lammps-24Dec20/exec_mpi -DCMAKE_Fortran_COMPILER=mpif90 ../cmake -DPKG_ASPHERE=yes -DPKG_CLASS2=yes -DPKG_KSPACE=yes -DPKG_OPENMP=yes -DPKG_MPIIO=yes -DPKG_USER-OMP=yes -DPKG_USER-SPH=yes
make
make install
四、源码安装lammps-31May2019
wget https://github.com/lammps/lammps/archive/refs/tags/patch_31May2019.tar.gz
tar zxvf lammps-patch_31May2019.tar.gz
cd lammps-patch_31May2019
方法1: cmake安装
lmp_mpi
mkdir build_mpi exec_mpi
cd build_mpi
make -C /GLOBALFS/nscc-gz_qmo2/lammps/lammps-patch_31May2019/src purge
make -C /GLOBALFS/nscc-gz_qmo2/lammps/lammps-patch_31May2019/src no-all purge
cmake -DLAMMPS_MACHINE=mpi -DBUILD_MPI=yes -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_INSTALL_PREFIX=~/lammps/lammps-patch_31May2019/exec_mpi -DCMAKE_Fortran_COMPILER=mpif90 ../cmake -DPKG_ASPHERE=yes -DPKG_CLASS2=yes -DPKG_KSPACE=yes -DPKG_OPENMP=yes -DPKG_MPIIO=yes -DPKG_USER-OMP=yes -DPKG_USER-SPH=yes
make
make install
lmp_serial
mkdir build_serial exec_serial
cd build_serial
make -C /GLOBALFS/nscc-gz_qmo2/lammps/lammps-patch_31May2019/src purge
make -C /GLOBALFS/nscc-gz_qmo2/lammps/lammps-patch_31May2019/src no-all purge
cmake -DCMAKE_C_COMPILER=icc -DCMAKE_INSTALL_PREFIX=~/lammps/lammps-patch_31May2019/exec_serial -DCMAKE_Fortran_COMPILER=ifort ../cmake -DPKG_ASPHERE=yes -DPKG_CLASS2=yes -DPKG_KSPACE=yes -DPKG_USER-SPH=yes
make
make install
方法2: make安装
cd src
make yes-ASPHERE yes-CLASS2 yes-KSPACE yes-MPIIO yes-USER-OMP yes-USER-SPH
cat <<EOF > MAKE/Makefile.mpi
# mpi = MPI with its default compiler
SHELL = /bin/sh
# ---------------------------------------------------------------------
# compiler/linker settings
# specify flags and libraries needed for your compiler
CC = mpicxx
CCFLAGS = -g -O3 -qopenmp -DLAMMPS_MEMALIGN=64 -qno-offload \
-xHost -fno-alias -ansi-alias -restrict -qoverride-limits
SHFLAGS = -fPIC
DEPFLAGS = -M
LINK = mpicxx
LINKFLAGS = -g -O3 -qopenmp -xHost
LIB =
SIZE = size
ARCHIVE = ar
ARFLAGS = -rc
SHLIBFLAGS = -shared
# ---------------------------------------------------------------------
# LAMMPS-specific settings, all OPTIONAL
# specify settings for LAMMPS features you will use
# if you change any -D setting, do full re-compile after "make clean"
# LAMMPS ifdef settings
# see possible settings in Section 2.2 (step 4) of manual
LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG
# MPI library
# see discussion in Section 2.2 (step 5) of manual
# MPI wrapper compiler/linker can provide this info
# can point to dummy MPI library in src/STUBS as in Makefile.serial
# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts
# INC = path for mpi.h, MPI compiler settings
# PATH = path for MPI library
# LIB = name of MPI library
MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -I/APP/u22/x86/mpi/mpich-4.1.2-icc-oneapi2023.2-ch4/include
MPI_PATH = -L/APP/u22/x86/mpi/mpich-4.1.2-icc-oneapi2023.2-ch4/lib
MPI_LIB = -lmpich -lmpl -lopa -lfmpich -lmpichcxx
# FFT library
# see discussion in Section 2.2 (step 6) of manual
# can be left blank to use provided KISS FFT library
# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings
# PATH = path for FFT library
# LIB = name of FFT library
MKL_ROOT=/APP/u22/x86/intel/oneapi2023.2/mkl/2023.2.0
FFT_INC = -DFFT_MKL -DFFT_SINGLE -I${MKL_ROOT}/include/fftw
FFT_PATH =
FFT_LIB = -L${MKL_ROOT}/lib/intel64 -lmkl_intel_ilp64 \
-lmkl_intel_thread -lmkl_core
# JPEG and/or PNG library
# see discussion in Section 2.2 (step 7) of manual
# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC
# INC = path(s) for jpeglib.h and/or png.h
# PATH = path(s) for JPEG library and/or PNG library
# LIB = name(s) of JPEG library and/or PNG library
JPG_INC =
JPG_PATH =
JPG_LIB = -ljpeg
# ---------------------------------------------------------------------
# build rules and dependencies
# do not edit this section
include Makefile.package.settings
include Makefile.package
EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC)
EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH)
EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB)
EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS)
EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS)
# Path to src files
vpath %.cpp ..
vpath %.h ..
# Link target
$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS)
$(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE)
$(SIZE) $(EXE)
# Library targets
lib: $(OBJ) $(EXTRA_LINK_DEPENDS)
$(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ)
shlib: $(OBJ) $(EXTRA_LINK_DEPENDS)
$(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \
$(OBJ) $(EXTRA_LIB) $(LIB)
# Compilation rules
%.o:%.cpp
$(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $<
# Individual dependencies
depend : fastdep.exe $(SRC)
@./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1
fastdep.exe: ../DEPEND/fastdep.c
cc -O -o $@ $<
sinclude .depend
EOF
make mpi