|
|
24.2.3 查看安装文档
官网https://www.cp2k.org/howto:compile中介绍了编译所需要的数学库和MPI等要求。https://www.cp2k.org/dev:compiler_support列出了编译的要求。
安装必备组件的最便捷方法是使用~/tools/toolchain/的install_cp2k_toolchain.sh脚本工具。先来查看install_cp2k_toolchain.sh的帮助文件,可以查看安装参数及其说明。https://github.com/cp2k/cp2k/blo ... README_FOR_USERS.md也说明了toolchain的配置方法。
cd tools/toolchain/
./install_cp2k_toolchain.sh --help
如果机器能联网,可以使用toolchain方式自动配置。
cd tools/toolchain/
./install_cp2k_toolchain.sh
自动配置后,会在cp2k-6.1.0/tools/toolchain/install/目录下生成配置的各个软件包,如fftw,lapack、libint等。除此之外,还会生成arch文件夹,arch文件夹包含中local.pdbg、local.popt、local.psmp、local.sdbg、local.sopt、local.ssmp、local_warn.psm和-.s文件,将这些文件全部拷贝至cp2k-6.1.0/arch文件中。
cd /public/home/jinnzh/cp2k-6.1.0/arch
cp ../tools/toolchain/install/arch/* ./
然后在cp2k-6.1.0/makefiles文件夹,执行命令如下:
make -j4 ARCH=local VERSION="sopt sdbg ssmp popt pdbg psmp"
系统开始编译,编译完成,会生成相关可执行文件和库文件。
除了自动构建之外,CP2K也提供了预先构建好的arch文件,在cp2k-6.1.0/arch文件夹下面,用户可以对其修改以适应自己的编译环境。
根据官网说明,CP2K的arch文件有6个类型:
Acronym Meaning Recommended for
sdbg serial single core testing and debugging
sopt serial general single core usage
ssmp parallel (only OpenMP) optimized, single node, multi core
pdbg parallel (only MPI) multi-node testing and debugging
popt parallel (only MPI) general usage, no threads
psmp parallel (MPI + OpenMP) general usage, threading might improve scalability and memory usage
本次编译采用gcc和gfortran编译器,MPI采用OpenMPI 3.1.4,FFTW采用FFTW3,CP2K官网推荐使用ACML和MKL数学库,我们编译时数学库采用MKL,编译popt类型,即支持MPI的并行版本。MPI、MKL和FFTW3具体编译安装过程参照本书前面章节。
此外,可以选择安装libint库,libint数学库是用来计算双电子积分的,如基于Gaussian型基组的确切交换积分计算。它是cp2k的QS模块支持杂化泛函的关键。还可以安装libxsmm、libxc库。这些库都可以从官网介绍的https://www.cp2k.org/static/downloads/下载。先来编译安装libint、libxsmm、libxc库。
24.2.4 编译安装libint库
24.2.4.1 下载libint
可以访问https://www.cp2k.org/static/downloads/,下载llibint-1.1.6.tar.gz版本。
24.2.4.2 编译安装
cd libint-1.1.6
1.查看配置参数
./configure -help
2.configure配置
./configure --prefix=/public/home/jinnzh/sourcecode/libint1.1.6 CC=gcc CXX=g++ --enable-deriv
configure其他参数很多,需要的时候自行添加。
3.执行make
make
make install
编译完成。
在/public/home/jinnzh/sourcecode/libint1.1.6/lib生成一些库文件libderiv.a、libint.a和libr12.a,在/public/home/jinnzh/sourcecode/libint1.1.6/include生成头文件。
24.2.5 编译安装libxsmm库
24.2.5.1 下载libxsmm
可以访问https://www.cp2k.org/static/downloads/,下载libxsmm-1.9.0.tar.gz版本。
24.2.5.2 编译安装
cd libxsmm-1.9.0
make CXX=g++ CC=gcc FC=gfortran STATIC=0
编译完成,在/public/home/jinnzh/sourcecode/libxsmm-1.9.0/lib生成库文件,在/public/home/jinnzh/sourcecode/libxsmm-1.9.0/include生成头文件。
24.2.6 编译安装libxc库
24.2.6.1 下载libxc
可以访问https://www.cp2k.org/static/downloads/,下载libxc-4.2.3.tar.gz版本。
24.2.6.2 编译安装
cd libxc-4.2.3/
1.查看配置帮助
./configure --help
2.configure配置
./configure --prefix=/public/home/jinnzh/sourcecode/libxc4.2.3 CC=gcc FC=gfortran
3.执行make
make -j
make install
编译完成,在/public/home/jinnzh/sourcecode/libxc4.2.3/lib下生成libxc.a libxcf03.a、libxcf03.la、libxcf90.a、libxcf90.la、libxc.la等库文件,/public/home/jinnzh/sourcecode/libxc4.2.3/include下生成头文件。
24.2.7 声明OpenMPI环境变量
export PATH=/public/home/jinnzh/openmpi3.1/bin:$PATH
export INCLUDE=/public/home/jinnzh/openmpi3.1/include:$INCLUDE
export LD_LIBRARY_PATH=/public/home/jinnzh/openmpi3.1/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=/public/home/jinnzh/openmpi3.1/lib:$LIBRARY_PATH
export MANPATH=$MANPATH:/public/home/jinnzh/openmpi3.1/share/man
24.2.8 声明FFTW环境变量
export PATH=$PATH:/public/home/jinnzh/fftw3/openmpigcc-float/bin
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/public/home/jinnzh/fftw3/openmpigcc-float/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/public/home/jinnzh/fftw3/openmpigcc-float/lib
export PATH=$PATH:/public/home/jinnzh/fftw3/openmpigcc-double/bin
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/public/home/jinnzh/fftw3/openmpigcc-double/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/public/home/jinnzh/fftw3/openmpigcc-double/lib
24.3 编译安装
24.3.1 声明MKL环境变量
export PATH=/public/home/jinnzh/intel/mkl/bin:$PATH
export LD_LIBRARY_PATH=/public/home/jinnzh/intel/mkl/lib/intel64:$LD_LIBRARY_TATH
export INCLUDE=/public/home/jinnzh/intel/mkl/include:$INCLUDE
24.3.2 修改配置参数
假定机器不能连接互联网,手动完成配置参数。
cd cp2k-6.1.0/arch
选取适合的arch文件,本次选用Linux-x86-64-gfortran_mkl_elpa.popt文件,即支持MPI的并行版本。
vi Linux-x86-64-gfortran_mkl_elpa.popt
将原来代码
#
#
ELPA_LIB = /users/archive/marcella/DEV/ELPA/20131105/elpa_lib/ELPA_2013.08/build_generic/lib64
ELPA_INC = /users/archive/marcella/DEV/ELPA/20131105/elpa_lib/ELPA_2013.08/build_generic/include/elpa
#
CC = cc
CPP =
FC = mpif90
LD = mpif90
AR = ar -r
CPPFLAGS =
DFLAGS = -D__parallel -D__SCALAPACK -D__LIBINT -D__LIBXC2 -D__FFTW3 -D__ELPA=201308
FCFLAGS = -O3 -ffast-math -funroll-loops -ftree-vectorize -march=native -ffree-form $(DFLAGS) -g -I${FFTW3_PATH}/include -I${ELPA_INC}/modules -I${ELPA_INC}/elpa
LDFLAGS = $(FCFLAGS) -L$(LIBINT_PATH) -L${FFTW3_PATH}/lib64 -L$(INTEL_MKL_LIB) -L$(LIBXC_PATH)/lib64
LIBS = \
-lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core \
-lderiv -lint -lfftw3 -lxc -L$(ELPA_LIB) -lelpa
根据实际配置,修改如下几点:
1.没有安装ELPA,所以将ELPA_LIB和ELPA_INC注释掉,并将关于ELPA的设置删除。
2.添加libint的路径LIBINT_PATH,并在FCFLAGS和LDFLAGS添加libint的设置。
3.添加libxc和libxsmm的路径LIBXC_LIB、LIBXC_INC、LIBXSMM_INC、LIBXSMM_LIB,并在FCFLAGS、LDFLAGS和LIB添加libxc、libxsmm的设置。
4.添加fftw3的路径FFTW3_PATH,添加mkl的路径INTEL_MKL_LIB。
修改后的内容如下:
#
#
#ELPA_LIB = /users/archive/marcella/DEV/ELPA/20131105/elpa_lib/ELPA_2013.08/build_generic/lib64
#ELPA_INC = /users/archive/marcella/DEV/ELPA/20131105/elpa_lib/ELPA_2013.08/build_generic/include/elpa
#
CC = gcc
CPP =
FC = mpif90
LD = mpif90
AR = ar -r
LIBINT_PATH=/public/home/jinnzh/sourcecode/libint1.1.6
LIBXC_INC=/public/home/jinnzh/sourcecode/libxc4.2.3/include
LIBXC_LIB=/public/home/jinnzh/sourcecode/libxc4.2.3/lib
LIBXSMM_INC=/public/home/jinnzh/sourcecode/libxsmm-1.9.0/include
LIBXSMM_LIB=/public/home/jinnzh/sourcecode/libxsmm-1.9.0/lib
FFTW3_PATH=/public/home/jinnzh/fftw3/openmpigcc-double
INTEL_MKL_LIB=/public/home/jinnzh/intel/mkl/lib/intel64
CPPFLAGS =
DFLAGS = -D__parallel -D__SCALAPACK -D__LIBINT -D__FFTW3 -D__LIBXC -D__LIBXSMM
FCFLAGS = -O3 -ffast-math -funroll-loops -ftree-vectorize -march=native -ffree-form $(DFLAGS) -g -I${FFTW3_PATH}/include -I$(LIBINT_PATH)/include -I$(LIBXC_INC) -I$(LIBXSMM_INC)
LDFLAGS = $(FCFLAGS) -L$(LIBINT_PATH)/lib -L${FFTW3_PATH}/lib -L$(INTEL_MKL_LIB) -L$(LIBXC_LIB) -L$(LIBXSMM_LIB)
LIBS = -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lfftw3\
$(LIBINT_PATH)/lib/libderiv.a\
$(LIBINT_PATH)/lib/libint.a\
$(LIBXC_LIB)/libxcf03.a\
$(LIBXC_LIB)/libxc.a\
$(LIBXSMM_LIB)/libxsmmf.a\
$(LIBXSMM_LIB)/libxsmm.a\
-ldl
保存,退出。
24.3.3 执行make
cd /public/home/jinnzh/sourcecode/cp2k-6.1.0/makefiles
执行以下命令:
make -j 14 ARCH=Linux-x86-64-gfortran_mkl_elpa VERSION=popt
make -j 14代表用14个核编译。
编译完成,在/public/home/jinnzh/sourcecode/cp2k-6.1.0下生成exe文件夹,根据编译配置不同,exe文件夹下面生成不同的文件夹,本次编译会生成Linux-x86-64-gfortran_mkl_elpa文件夹,所有编译生成的可执行文件在其中。在/public/home/jinnzh/sourcecode/cp2k-6.1.0下生成lib/Linux-x86-64-gfortran_mkl_elpa/popt文件夹,生成的库文件在其中。
编译失败重新编译之前,执行以下命令。
若保留exe文件,执行:
make ARCH=Linux-x86-64-gfortran_mkl_elpa VERSION=popt clean
清除所有文件:
make ARCH=Linux-x86-64-gfortran_mkl_elpa VERSION=popt realclean
24.3.4 构建CP2K库文件
CP2K还可以构建为一个库文件,执行命令如下:
make -j 14 ARCH=Linux-x86-64-gfortran_mkl_elpa VERSION=popt libcp2k
编译完成后,在~cp2k-6.1.0/lib/Linux-x86-64-gfortran_mkl_elpa/popt文件夹中会生成库文件libcp2k.a。
24.4 测试
cd /public/home/jinnzh/sourcecode/cp2k-6.1.0/makefiles
执行以下命令:
make -j 14 ARCH=Linux-x86-64-gfortran_mkl_elpa VERSION=popt test
测试结束,显示:
<<< /public/home/jinnzh/sourcecode/cp2k-6.1.0/regtesting/Linux-x86-64-gfortran_mkl_elpa/popt/TEST-Lit-15 (142 of 221) done in 201.00 sec
--------------------------------------------------------------------------
--------------------------------------------------------------------------
regtesting location summary file: /public/home/jinnzh/sourcecode/cp2k-6.1.0/regtesting/Linux-x86-642-24_13-42-37/summary.txt
regtesting location error_summary file: /public/home/jinnzh/sourcecode/cp2k-6.1.0/regtesting/Linux-2019-12-24_13-42-37/error_summary
regtesting location memory_summary file: /public/home/jinnzh/sourcecode/cp2k-6.1.0/regtesting/Linux-2019-12-24_13-42-37/memory_summary
regtesting location output dir: /public/home/jinnzh/sourcecode/cp2k-6.1.0/regtesting/Linux-x86-64-g24_13-42-37
regtesting location last dir: /public/home/jinnzh/sourcecode/cp2k-6.1.0/regtesting/Linux-x86-64-gfo
--------------------------------- Summary --------------------------------
Number of FAILED tests 0
Number of WRONG tests 0
Number of CORRECT tests 3047
Number of NEW tests 19
Total number of tests 3066
GREPME 0 0 3047 19 3066 X
--------------------------------------------------------------------------
说明测试通过。
24.5 配置环境变量
将cp2k可执行文件和库文件分别添加至系统环境变量PATH和LD_LIBRARY_PATH。
vi .bashrc
添加以下语句:
export PATH=/public/home/jinnzh/sourcecode/cp2k-6.1.0/exe/Linux-x86-64-gfortran_mkl_elpa:$PATH
export LD_LIBRARY_PATH=/public/home/jinnzh/sourcecode/cp2k-6.1.0/lib/Linux-x86-64-gfortran_mkl_elpa/popt$LD_LIBRARY_PATH
export LIBRARY_PATH=/public/home/jinnzh/sourcecode/cp2k-6.1.0/lib/Linux-x86-64-gfortran_mkl_elpa/popt:$LIBRARY_PATH
保存退出,然后source .bashrc,配置完毕。 |
|