首先我们参考一下官网的说明:
howto:compile [CP2K Open Source Molecular Dynamics ]
还有一个第三方网站
推荐的编译环境
Current Release (v7.1) This step-by-step guide uses (a) GNU Fortran (version 8.3, 8.4, 9.2, or 9.3 are recommended, 9.1 is not recommended), or (b) Intel Compiler (version 19.1 "2020"). In any case, Intel MKL (2018, 2019, 2020 recommended) and Intel MPI (2018, 2020 recommended) need to be sourced. The following components are used:
来自 <CP2K - XCONFIGURE> |
说明,从V7.1开始,libint 要2.5 + 最好用他们提供的专用版本,尽管专用版也有问题
Python 最好是3.6 +
如果系统的python是2.x 那么需要手动修改各个 tools目录下的python头,指定到python3,而且makefile 里边也可能调用python,将其变量改为python3的地址
为了免去安装scalapack的麻烦,我们选用intel composer xe 2020 (19.1) 包含mkl 和mpi 库
source /opt/intel2019/bin/compilervars.sh intel64
================================
先编译libint
注意要从 Release Libint v2.6.0 CP2K · cp2k/libint-cp2k · GitHub 下载最新版
Make install 出错导致fortran模块没安装
将fortran/Makefile 改成如下
fortran_example: fortran_example.o libint_f.o $(LTLINK) $(CXX) $(CXXFLAGS) $(LDFLAGS) $(COMPUTE_LIB) $(SYSLIBS) $(FCLIBS) -o $@ $^ |
变成
fortran_example: fortran_example.o libint_f.o $(LTLINK) $(CXX) $(CXXFLAGS) $(LDFLAGS) $(COMPUTE_LIB) $(SYSLIBS) $(FCLIBS) -o -lstdc++ -o $@ $^ |
自动配置makefile
CC=icc FC=ifort F77=ifort ./configure --prefix=/home/username/cp2k/lib/libint --enable-fortran
注意一定要编译Fortran模块!!
Make 成功
Make install 成功,在include 目录会有 mod文件
=========================================
然后编译 elpa
Please use ELPA 2017.11.001 for CP2K 6.1. For CP2K 7.1, please rely on ELPA 2019. ELPA 2018 fails or crashes in several regression tests in CP2K (certain rank-counts produce an incorrect decomposition), and hence ELPA 2018 should be avoided in production. 来自 <ELPA - XCONFIGURE> |
可以去下载最新版的elpa https://elpa.mpcdf.mpg.de/elpa-tar-archive
FC=mpiifort CC=mpiicc ../configure --prefix=/home/username/cp2k/lib/elpa SCALAPACK_LDFLAGS="-L$MKL_ROOT/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential \ -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -Wl,-rpath,$MKL_HOME/lib/intel64" \ SCALAPACK_FCFLAGS="-L$MKL_ROOT/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential \ -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -I$MKL_HOME/include/intel64/lp64" |
注意复制的时候可能复制到错误的换行,执行的时候检查一下格式,只有“\”结尾才能换行
然后 make; make install
=====================================
接下来编译libxsmm
可以去cp2k的网站下载这个库,这个库安装了就不需要libsmm了
https://www.cp2k.org/static/downloads/libxsmm-1.15.tar.gz
进入解压目录
export CC=icc FC=ifort
make PREFIX=/home/username/cp2k/lib/libxsmm install
=====================================
接下来编译libxc
https://www.cp2k.org/static/downloads/libxc-4.3.4.tar.gz
FC=ifort CC=icc F77=ifort ./configure --prefix=/home/username/cp2k/lib/libxc
然后 make ; make install
=====================================
接下来下载 dbcsr
先下载 Releases · cp2k/dbcsr · GitHub
然后解压拷贝到exts/dbcsr目录
=======================================
接下来编译cp2k
编辑 arch/Linux-x86-64-intel.popt
LIBXSMM = /home/username/cp2k/lib/libxsmm
LIBXC = /home/username/cp2k/lib/libxc
LIBINT = /home/username/cp2k/lib/libint
LIBELPA =/home/username/cp2k/lib/elpa
CC = icc
FC = mpifort
LD = mpifort
FCFLAGS += -I$(LIBELPA)/include/elpa-2019.05.001/modules -I 修改
$(LIBELPA)/include/elpa-2019.05.001/elpa/elpa 修改
FCFLAGS += -I$(LIBINT)/include 添加
LIBS += -L$(LIBINT)/lib -lint2 -lstdc++ 修改
-D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 去掉
-D__ELPA=201901 \ 修改
然后编译
make -j 4 ARCH=Linux-x86-64-intel VERSION=popt
编译完成后,elpa是动态库,需要加在环境变量里边
export LD_LIBRARY_PATH=/home/username/cp2k/lib/elpa/lib:$LD_LIBRARY_PATH