CP2K的安装
1.1 直接使用二进制版本
CP2K的安装有很多种方法。最简单的方法是直接使用预编译版本的二进制可执行文件。
用户可以选择从发行版所带的软件源安装预编译版本的CP2K:
Debian http://packages.debian.org/search?keywords=cp2k
Fedora https://apps.fedoraproject.org/packages/cp2k
Ubuntu http://packages.ubuntu.com/search?keywords=cp2k
或者直接从CP2K官方网站下载预编译可执行文件
sourceforge.net/projects/cp2k/files/precompiled/
预编译版本的CP2K运行比较可靠,缺点是由于其采用了没有优化过的blas库和lapack库,计算速度比较慢。
或者从CP2K源码(http://www.cp2k.org/download)进行编译,获得可执行文件。好处是可以使用MKL等速度更快的数学库,计算速度比预编译版本快很多。测试表明,使用Intel编译器以及MKL数学库编译的CP2K执行速度是预编译版本的3倍左右。
1.2 从源代码编译
从源码进行编译得到的CP2K可执行文件有更快的运行速度。CP2K的编译比较复杂。希望进行CP2K编译的话,可以参考
www.cp2k.org/howto:compile
下面,介绍使用Intel编译器以及GNU编译器编译CP2K的步骤。下面的编译均在Debian testing系统上完成。CPU型号为Intel(R) Core(TM) i5-4210M,内核版本为3.17-1-amd64。为了减少编译的工作量,可以从Debian软件源里安装各种数学库,如libint,elpa,fftw3,openblas, libxc等。以root权限运行:
apt-get install libxc1 libxc-dev libint-dev libint1 libelpa-dev libelpa0 libopenblas-base libopenblas-dev libfftw3-3 libfftw3-bin libfftw3-dev libfftw3-mpi3 openmpi-bin gcc gfortran g++ |
安装-dev包可以获得数学库的静态链接库,方便进行静态编译。
系统安装了4.9.1 版本的GNU编译器,包括gcc以及gfortran,openmpi版本为1.6.5。
-
使用Intel Fortran编译器以及MKL编译CP2K
首先,安装Intel Fortran编译器以及MKL。我安装的Intel Fortran编译环境是composerxe-2011.3.174。其中包含了Fortran编译器ifort以及MKL,没有Intel MPI。ifort版本是12.0.3 20110309。Intel编译器安装到了/opt/intel目录中。
要使用Intel编译器,打开终端,运行
source /opt/intel/bin/compilervars.sh intel64 |
然后,编译安装MPI运行环境。如果你安装的Intel编译环境已经包含了impi,可以跳过该步骤。我安装的MPI环境是openmpi 1.6.5,目前最新版本是1.8.3 。从http://www.open-mpi.org 上下载源码,解压缩后运行:
./configure –prefix=/opt/openmpi-1.6.5 F77=ifort FC=ifort make make install |
注意,make install时需要root权限。
从 http://sourceforge.net/projects/cp2k/files
下载CP2K 2.5.1的源码,解压缩,修改arch目录中的Linux-x86-64-intel.popt文件如下 :
CC = cc CPP = FC = /opt/openmpi-1.6.5/bin/mpif90 LD = /opt/openmpi-1.6.5/bin/mpif90 AR = ar -r INTEL_MKL = /opt/intel/mkl INTEL_INC = $(INTEL_MKL)/include INTEL_LIB = $(INTEL_MKL)/lib/intel64 MKL_LIB = $(INTEL_MKL)/lib/intel64 FFTW3_INC = /usr/include/ FFTW3_LIB = /usr/lib/x86_64-linux-gnu/ DFLAGS = -D__INTEL -D__FFTSG -D__parallel -D__BLACS -D__SCALAPACK -D__FFTW3 -D__LIBINT CPPFLAGS = -C -traditional $(DFLAGS) -I$(INTEL_INC) -I$(FFTW3_INC) FCFLAGS = $(DFLAGS) -I$(INTEL_INC) -I$(FFTW3_INC) -O2 -xHost -heap-arrays 64 -funroll-loops -fpp -free FCFLAGS2 = $(DFLAGS) -I$(INTEL_INC) -I$(FFTW3_INC) -O1 -xHost -heap-arrays 64 -fpp -free LDFLAGS = $(FCFLAGS) -I$(INTEL_LIB) -L$(FFTW3_LIB) LIBS = -L$(MKL_LIB) -lmkl_blas95_lp64 -lmkl_lapack95_lp64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_openmpi_lp64 -lfftw3 -lpthread -lderiv -lint -lstdc++ OBJECTS_ARCHITECTURE = machine_intel.o graphcon.o: graphcon.F $(FC) -c $(FCFLAGS2) $< et_coupling.o: et_coupling.F $(FC) -c $(FCFLAGS2) $< qs_vxc_atom.o: qs_vxc_atom.F $(FC) -c $(FCFLAGS2) $< hfx_screening_methods.o: hfx_screening_methods.F $(FC) -c $(FCFLAGS2) $< |
注意,如果编译使用intelmpi,blacs库就设置为-lmkl_blacs_intelmpi_lp64;如果使用openmpi,则设置为-lmkl_blacs_openmpi_lp64。在makefiles目录中运行
make –j 4 ARCH=Linux-x86-64-intel VERSION=popt |
-j 4参数可以使编译并行进行,以加快编译速度。
视CPU性能,一般15分钟左右即可在exe/Linux-x86-64-intel目录下获得编译好的cp2k.popt可执行文件。
2. 使用GNU Fortran编译器,MKL以及ELPA库编译CP2K
使用gfortran编译器,并使用MKL数学库和ELPA库编译CP2K,流程与上述类似。编辑arch目录中的Linux-x86-64-gfortran_mkl_elpa.popt文件如下:
INTEL_MKL = /opt/intel/mkl INTEL_INC = $(INTEL_MKL)/include INTEL_MKL_LIB = $(INTEL_MKL)/lib/intel64 FFTW3_INC = /usr/include/ FFTW3_LIB = /usr/lib/x86_64-linux-gnu/ ELPA_INC = /usr/include/elpa/modules CC = cc CPP = FC = /usr/bin/mpif90 LD = /usr/bin/mpif90 AR = ar -r CPPFLAGS = DFLAGS = -D__GFORTRAN -D__FFTSG -D__parallel -D__SCALAPACK -D__BLACS -D__LIBINT -D__LIBXC2 -D__FFTW3 -D__ELPA FCFLAGS = -O3 -ffast-math -funroll-loops -ftree-vectorize -march=native -ffree-form $(DFLAGS) -g -I$(FFTW3_INC) -I$(ELPA_INC) -I$(INTEL_INC) LDFLAGS = $(FCFLAGS) -L${FFTW3_LIB} -L${INTEL_MKL_LIB} LIBS = -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lderiv -lint -lfftw3 -lxc -lelpa |
在makefiles目录中运行
make -j 4 ARCH=Linux-x86-64-gfortran_mkl_elpa VERSION=popt |
在exe/Linux-x86-64-gfortran_mkl_elpa 目录中即可获得编译好的cp2k.popt可执行文件。
经过测试,使用gfortran和intel编译器编译的CP2K可执行文件运行速度相当,后者稍微快一点点。这主要是因为它们均使用了经过优化的MKL数学库。本文转载自zevan,转载目的在于知识分享,本文观点不代表V-suan云平台立场。
我们邀请了从头算分子动力学领域世界顶尖学者Hutter教授团队兰晶岗博士进行“计算化学模拟,让你的实验更“有数”!”的培训,本培训基于知名免费开源计算软件CP2K,此软件由Hutter团队开发并运维,功能与VASP比肩。
本课程重点侧重应用,弱化过于抽象的公式和理论。通过简单介绍理论并且结合计算输入文件,帮助学员快速上手使用CP2K软件来完成自己计算要求。