lammps安装(CMAKE/MAKE)

一、环境配置

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值