CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)



CP2K 4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP)

(psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)




                                                                                                                                                     制作者:甄江苏(湘潭大学材料科学与工程学院) 

                                                                                                                                                     更新时间:2017.10.13

                                                                                                                                                     测试版本:Development  r18020

 



 

 教程最底下有每次更新的条目信息

cp2k最新5.x-development版本包含了很多新功能的加入以及对之前版本大量的优化(比如速度优化)和错误修正(比如ADMM加速部分的ADMM_PURIFICATION_METHOD选项的bug修复等等),建议大家安装最新版cp2k

 

目前cp2k 4.1-release版本我只能编译并正确执行单线程多进程版本,用多线程版本时,线程数只能为1,不然程序会崩溃。5.x-development版本没有这种错误。当然此教程编译出的4.1单线程版本相比以前教程编译出来的4.1版本也会有加速效果,至少在我这里是如此。

依据你的集群特性来编译最合适版本:

如果你的集群节点之间用的是普通的交换机(比如千兆以太网交换机),那么你会发现你的程序跨节点计算比单节点计算慢很多。节点间用普通的交换机时建议编译多线程多进程(host.psmp)版本;如果节点间通信用的是高速互联网络,如 InfiniBand 网络,那么你会发现跨节点计算会很快(一般商用超算都是用的高速互联网络,或者一些土豪课题组也会使用),此时建议编译单线程多进程版本(host.popt)。需要注意的是,cp2k 4.1-release版本应该编译单线程多进程版本,而 5.x-development版本可以依据上面的集群特性来选择。

 

据我在28核的至强[email protected](单机120G DDR4内存)上测试,采用142线程跑AIMD(第一性原理分子动力学)时此教程的综合优化加速(相比用以前的教程和intel2015编译器套件编译去年的5.x-dev版本cp2k得到的程序的计算结果,下同)超过12%!!!跑杂化泛函HSE06单点能计算时(12*12*12 A^3 for 135 atoms),单电子步迭代由以前的8000多秒每步变为现在的4000多秒每步,加速非常大!!!

下面的测试说明都是用AIMD测试的,没测试其他计算,此外测试都是基于单节点计算的。

测试发现用2个线程时,对于28核的机器来说用14个核心(不能超过14个核心哇,因为14*2=28)加速效果最佳,当使用7个核心(7*2=14,理论应该跟14核单线程时差不多)时,计算速度比14核单线程要慢不少。当我在24核的至强[email protected](单机64G DDR4内存)上测试时,发现不管用多少核心,当线程数大于1时,计算速度都没有相同核数下线程数为1时快(不知道其他计算会如何)。所以多线程有没有加速效果,跟机器配置有关的,具体请自行测试。但是相比以前的教程,采用单线程还是比以前的教程编译出来的程序快的。

最新developmentcp2kk点计算会比去年的development版以及4.1-release版计算的慢了约13%,我猜可能是对之前的k点计算进行了修复,加了很多修正。

还需要注意的是,程序在运行过程中,有部分计算可能是用的多线程,而有部分计算可能只用了单线程,比如我使用PBEsol+D3C9校正方式来进行CELL_OPT计算时,在SCF迭代时程序是用多线程加速的,但是每次迭代完成后到下次迭代之前的部分我测试的结果是程序此时用的是单线程跑的(这里是D3C9校正花了很多时间,且这里程序用的是单线程跑的D3C9校正),也就是如果我开了142线程的的话,中间部分只用了CPU一半的资源,计算速度变慢。当然如果这部分时间消耗本来就非常少,那倒是对整体加速影响不大(如果是只开D3校正的话,这部分时间用的比D3C9要小不少),但是时间消耗比较大的话,那应该没有全程使用单线程效果好。

总的来说,多线程的加速效果跟计算机配置、计算体系大小、计算的性质以及计算方法都有关系,如果你不知道多线程会不会有加速效果,建议直接使用单线程(比如直接将线程数设置为1,或者直接编译出单线程多进程版本,教程后面会讲到)进行计算,综合效果应该不错!!



***************************************************************************************************************************************

***************************************************************************************************************************************

注意,此版本安装教程用的是intel2017 update4编译器套件,用intel2017 update1~ update3套件会有问题(貌似是MKL问题),会导致编译出来的cp2k计算时能量是错误的。

之前由于编译器问题,导致使用intel2015~2016的所有update版本编译器套件都不能编译出最新5.x-development版cp2k,但是前几天开发者在cp2k的Google Groups上告诉我说只要删除两个源文件,就都能正确编译了,删除的两个文件为cp2k解压目录下的:

src/dbcsr_tensor/dbcsr_tensor_test.F

src/dbcsr_tensor/dbcsr_tensor_unittest.F

删除后使用intel2015或2016编译器套件就能编译了。如果使用intel2017update4套件,则不需要删除就能编译成功。

********************************************************************************************************************************

********************************************************************************************************************************



Intel编译器完整套件包括了mpi并行库和MKL等数学库,建议gcc编译器支持c++11标准(即gcc版本要等于或高于4.8.1),否则安装过程可能会出错,不过没有完整测试过,也可以用非c++11标准的gcc试试,毕竟安装过程中基本都是用的intel编译器。

我这里安装是用root权限安装的,非root用户当然也可以安装,但只能安装到本用户主目录下的目录中,并且一些涉及root权限的操作不能执行,比如添加环境变量,只能添加到本用户的环境变量中(~/.bashrc文件)

这里安装的host.popt(单线程多进程)以及host.psmp(多线程多进程)版本的脚本配置文件都是在Linux-x86-64-intel-mic.psmp这个文件中。安装过程主要参考cp2k官网安装教程和cp2k安装包中的Linux-x86-64-intel-mic.psmp这个文件里的相关提示。

此外,下面安装的额外的软件包可以从cp2k提供的专门的下载地址下载(cp2k官网推荐版本,但一般不是最新版本):

https://www.cp2k.org/static/downloads/

此外,此文档的最后有每个软件的单独下载地址(我测试的各个最新可用版本)

建议将所有软件安装在非/root/目录下,如果是用root权限安装的话,也不要安装在/home/目录下的任何目录,一般都安装在/opt/目录下(root用户就安装在本用户的主目录下吧)。如果是多节点的集群,应该安装在节点间共享的目录下,一般都设置/opt/目录为共享软件安装目录。

 

 

 

 

教程内容:

1. 下载并安装intel2017 update4编译器免费版(所需的功能全都有,如果没必要,就不建议升级了)

2. 安装libint (用于HF计算,没有它,就不能进行涉及HF的计算,比如杂化泛函计算等)

3. 安装libxsmm (intel的矩阵加速计算库)

4. 安装libxc (支持几百种LDA, GGA, meta-GGA,杂化,双杂化等计算)

5. 安装elpa (用于矩阵对角化加速的,能量最小化用对角化方法时,会加速非常多,用OT方法时也会有加速)

6. 下载并安装cp2k

7. cp2k离线文档生成并制作成chm格式(非常便携!)

8. 上面2-5插件的最新可用版下载地址

 

 

 

1.  安装Intel编译器(里面的安装方法适用于所有intel编译器套件)

1.1  到intel官网下载最新intel2017 update4编译器套件(没有需求的话,可以不用安装最新版,请跳过1.1):

https://software.intel.com/zh-cn/qualify-for-free-software/student

 CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


全选,然后accept:

 CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)



下面必须填写学校或者研究机构的邮箱才行,然后下面两个方框都选中,然后submit:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)



然后就能得到官网分配的***。注意,这个***在第一次联网安装(必须要联网)后就不能用于其他机器了,只能用于那一台机器,因为它会识别机器的硬件地址(所以下面的***你们已经不能用啦!!)。此外,据说这种***只能正常使用三个月或半年,然后就会显示过期,之后的话,额,试试把intel编译器套件卸载并重新用这个***安装(卸载后要重启机器才能重新安装,要卸载干净。重新安装同一个版本的编译器,只要安装位置不变,那么其他所有依赖于intel编译器的软件都不需要重新安装了)试试,或者看能不能再申请一次。接着选择update4或之后的版本,并选择最下面的那个蓝色框下载:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

 


1.2  安装

下载完成后,将安装包放到集群的主节点上,最好别放在软件安装目录(比如别放在/opt/目录),然后解压,然后安装,这里选择GUI方式安装会好点(这当然要在图形界面里安装,纯命令行界面只能用非GUI方式):安装前把所有子节点的共享目录都要挂载到主节点上。

 CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


选择accept,等个几十秒就会进入下一阶段:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)



我这里之前安装过intel2015版的,貌似没卸载干净,出现了这个,选择next:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版) 



填上***(当然安装过程要联网哈!):

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)



这里选择Yes和No都行,然后next:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


下面选择安装多节点并行,nodes文件内容就是每个节点的计算机名称,每个名称一行,比如:

node01

……

node05

然后个数填写实际个数,然后next

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


下面这里可以不用定制,直接默认就行,安装位置软件会自动搜寻到你挂载好的共享目录,然后install。如果是非root用户安装的话,可能要自己指定安装目录,当然是你的用户的主目录下面的一个目录。注意,如果install时出现说什么你的目录是share directory,但是你的destination directory不是share directory,那么就需要把刚才已挂载的子节点给卸载,然后再继续安装,安装完成后,再挂载就行了。

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版) 



等安装完成后,如果是root用户,需要在所有节点的/etc/profile文件中最下面插入:

source  /opt/intel/compilers_and_libraries_2017.4.196/linux/bin/ifortvars.sh  intel64

source  /opt/intel/compilers_and_libraries_2017.4.196/linux/mkl/bin/mklvars.sh  intel64

source  /opt/intel/compilers_and_libraries_2017.4.196/linux/mpi/intel64/bin/mpivars.sh  intel64

 

注意,不同版本的intel上面的目录的数字部分一般都不一样,但其他部分应该是差不多的(假如你是安装到/opt/目录下的intel目录中的话)。

然后在终端执行:

[root]#  source  /etc/profile

 

如果是非root用户安装的,则只需要在本节点的~/.bashrc中插入上面的路径,然后在source一下就行了。

 

Intel编译器套件安装完后,在任意目录下,执行:

icc -v

将会显示版本号。

然后进入$MKLROOT/interfaces/fftw3xf文件夹,执行:

[root]#  make libintel64     

将会生成一个名为libfftw3xf_intel.a的静态库文件。

 

注意,要想使并行库能正确运行,貌似要设置一下:(root用户就无法设置了。。。)

/etc/目录中新建一个名为mpd.conf的文本文件,在里面填写上:

MPD_SECRETWORD=mr45-j9z

 

然后保存退出,给这个文件加上权限:

[root]#  chmod  600  /etc/mpd.conf






2.  安装libint (1.1.6版本)

下载安装包解压,进入执行:

[root]#  aclocal  -I  lib/autoconf              #  "-I" 是大写的i

[root]#  autoconf 

注意,上面两个如果执行后都报错的话,不用管,直接下一步。详情请见本目录下的INSTALL文档

[root]#  ./configure  --prefix=/opt/libint  --with-ar=ar  FC=ifort  F77=ifort  F90=ifort  FCFLAGS="-O3  -xHost"   \

CC=icc  CFLAGS="-O3  -xHost "  CXX=icpc  CXXFLAGS="-O3  -xHost "  --with-cc-optflags="-O3  -xHost "  \

--with-cxx-optflags="-O3  -xHost "  --with-libint-max-am=5  --with-libint-opt-am=4   --with-libderiv-max-am1=4  \

--with-libderiv-max-am2=2  --with-libr12-max-am=2  --with-libr12-opt-am=2

[root]#  make  -j  8

[root]#  make  install

[root]#  make  realclean

 

 

 

 

 

3.  安装最新libxsmm (1.8.1master版本,其他版本也行,用于矩阵运算加速的)

解压安装包后,进入安装包,执行:

[root]#  make  CXX=icpc  CC=icc  FC=ifort  AR=ar  OPT=3  TARGET="-xHost"  ROW_MAJOR=0  \

INDICES_M="$(echo $(seq 1 24))"  INDICES_N="$(echo $(seq 1 24))"  INDICES_K="$(echo $(seq 1 24))"  \

PREFIX=/opt/libxsmm/  install

[root]#  make  clean

 

 

 

 

 

4.  安装libxc (3.0.0版本,其他版本也行)

支持的泛函列表:http://octopus-code.org/wiki/Libxc_functionals

下面编译过程中如果出现什么“libtool :   error:  ignoring unknown tag 77”,不用管,直接继续

下载安装包解压进入安装:

[root]#  ./configure  --prefix=/opt/libxc/  FC=ifort  FCFLAGS="-O3  -xHost "  CC=icc CFLAGS="-O3  -xHost "

[root]#  make  -j  8

[root]#  make  install

[root]#  make  clean

 

 

 



5.  安装elpa :

5.x-development版目前可以用次新的elpa-2016.11.001.pre版,但是4.1-release版本目前只能用elpa-2016.05.004或者比这个旧的版本,不同版本下载请看本教程最底部


5.1 openmp版本(用于多线程多进程(host.psmp)版本的链接):

[root]#  ./configure  --prefix=/opt/elpa/  FC=mpiifort  CC=mpiicc  CXX=mpiicpc  CFLAGS="-O3  -xHost "  \

CXXFLAGS="-O3  -xHost "  FCFLAGS="-O3  -xHost "  --with-avx-optimization=yes  --enable-openmp  \

SCALAPACK_LDFLAGS="-L$MKLROOT/lib/intel64  -lmkl_blas95_lp64  -lmkl_lapack95_lp64  \

-lmkl_scalapack_lp64  -Wl,--start-group  -lmkl_cdft_core  -lmkl_intel_lp64  -lmkl_intel_thread  -lmkl_core \

-lmkl_blacs_intelmpi_lp64  -Wl,--end-group  -liomp5  -lpthread  -lm  -ldl  -Wl,-rpath,$MKLROOT/lib/intel64"  \

SCALAPACK_FCFLAGS="-L$MKLROOT/lib/intel64  -lmkl_blas95_lp64  -lmkl_lapack95_lp64  \

-lmkl_scalapack_lp64  -lmkl_cdft_core  -lmkl_intel_lp64  -lmkl_intel_thread  -lmkl_core  \

-lmkl_blacs_intelmpi_lp64  -liomp5  -lpthread  -lm  -ldl  -I$MKLROOT/include/intel64/lp64"

[root]#  make

[root]#  make  install

[root]#  make  clean

 

 

5.2 单线程版本(用于单线程多进程(host.popt)版本的链接):

[root]# ./configure  --prefix=/opt/elpa/  FC=mpiifort  CC=mpiicc  CXX=mpiicpc  CFLAGS="-O3 -xHost"  \

CXXFLAGS="-O3  -xHost"  FCFLAGS="-O3  -xHost"  --with-avx-optimization=yes  \

SCALAPACK_LDFLAGS="-L$MKLROOT/lib/intel64  -lmkl_blas95_lp64  -lmkl_lapack95_lp64  \

-lmkl_scalapack_lp64  -Wl,--start-group  -lmkl_cdft_core  -lmkl_intel_lp64  -lmkl_sequential  -lmkl_core  \

-lmkl_blacs_intelmpi_lp64  -Wl,--end-group  -lpthread  -lm  -ldl  -Wl,-rpath,$MKLROOT/lib/intel64"  \

SCALAPACK_FCFLAGS="-L$MKLROOT/lib/intel64  -lmkl_blas95_lp64  -lmkl_lapack95_lp64  \

-lmkl_scalapack_lp64  -lmkl_cdft_core  -lmkl_intel_lp64  -lmkl_sequential  -lmkl_core  \

-lmkl_blacs_intelmpi_lp64  -lpthread  -lm  -ldl  -I$MKLROOT/include/intel64/lp64"

[root]#  make

[root]#  make  install

[root]#  make  clean

 

 

 

 


6.  下载并安装cp2k

下载5.x最新版cp2k(development版本):直接在已经联网的linux终端中输入以下内容:(这种下载方式下载的是最新开发版本的cp2k,不是标准稳定发布版本,但是开发版本我感觉也很稳定,它会包含最新的错误修正以及优化和新功能的引入)

 

svn checkout https://svn.code.sf.net/p/cp2k/code/trunk


或者手动进入网页下载:https://sourceforge.net/p/cp2k/code/HEAD/tree/

进入网页后,进入trunk目录(下面两幅图用的是以前版本的,与现在安装的development的版本不同,不过没关系,位置都是差不多的):

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


然后如下图所示,点击右上角的DownloadSnapshot下载就行了:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


下载完成后,将trunk目录里面的cp2k/ 这个文件夹拷贝到/opt/目录中(你的多集群共享目录中。如果是非root用户安装,则放在你的主目录里面),然后进入/opt/cp2k/makefile目录,修改cp2k配置文件:

[root]#  vim  ../arch/Linux-x86-64-intel-mic.psmp

 

 

 

然后对照着修改(注意,这里显示的行号不一定和你的一样,但差不多就在那个上下。此外,如不是特别说明,则单线程版本和多线程版本的设置是一样的):

下图中所示的是libint, libxclibxsmm的安装目录的指定,需要与你们具体的安装位置一致。

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)



注:下面的这个libxstreamcp2k自带的,不需要下载。需要注意,单线程版本需要把大概在83行左右的“MKL:= 2”后面的2改为1才行,切记!!多线程版本就用2,不用改(2表示多线程,1表示单线程)

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

 

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

 

注意,在下图中,elpa部分的include后面部分要注意,每个版本的elpa此处数字路径是不一样的,具体路径请到elpa的安装目录自己查看。还要注意的是多线程多进程版本所用的openmpelpa单线程多进程版本所用的单线程版本elpa在这里配置是不一样的,一个是上面所说的路径(openmp版的目录elpa程序在安装时自动加了_openmp_关键字,而单线程版没加,自己可以到elpa安装目录下的include目录查看);第二个是LIBS后面的字符串的最后:openmpelpa后面是如图所示的 libelpa_openmp.a,而单线程版elpa后面是 libelpa.a;第三个是DFLAGS后面的字符串:这里是由cp2k更新版本决定的,不是由cp2k的线程版本决定的,也不是由elpa线程版本决定的。 cp2k 5.x-development版本此处所填内容是如图所示的-D__ELPA=201611,而4.1-release版本此处应该填写的是 -D__ELPA3此外,下图里最后矩形方框里的这两个参数是我加上去的优化参数,本来不在这个配置脚本中的。根据机器硬件不同,最优数值可能不一样,根据官网显示,-D__GRID_CORE的取值为1~6,我测试发现,1,3,5取值比2,4,6取值编译出的程序计算速度快,在我的机器上最优值为5。下面的参数 -D__PILAENV_BLOCKSIZE取值比较大,我测试显示当取值等于或超过32时,计算速度会加快不少。当用大体系(包含640个原子,用DFT计算)测试时,数值达到1024时有最佳加速效果,更大数值的加速效果与1024几乎一样,但是当用较小体系(包含320个原子,用DFT计算)测试时,数值为64或者128时,加速效果最佳,取值加大时,计算速度就会比128时的小,并且越大计算速度越慢。这里我选择128

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版) 



注:这下面的图是与上图中的elpa部分相关的,这里是最新的development版本官网安装说明,上图中的DFLAGS += -D__ELPA=后面的数字就是下图中的形式,代表你安装的elpa库的版本号,这里要与你上面安装的elpa版本号一致(只适用于5.x development版本cp2k)

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

 

注意,下图中显示的部分要看清楚行号了,在原文档中的后面还有一处跟这里几乎一样,这里是smp的部分,用于cp2k多线程多进程版本设置的,单线程版本请跳过这里。如果你用的不是intel2017编译器套件,则此处可以用原配置(即此处可以不用修改,当然改了肯定没事),如果是intel2017编译器,则此处不用cp2k原配置,因为原生配置会导致编译错误。此处下面会说到lib库链接顺序以及库名称选择的方法。

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)


  

下面这里看清楚行号了,跟上面不一样,是单线程部分的设置(多线程这里无需设置,直接跳过)。同样,如果用intel其他版本编译器套件的话,这里可以设置,可以不设置箭头指向及方框的内容。但是如果用的是intel2017 update4来编译的话,则一定要设置。


千万千万注意:(这是官方的bug)

不管是否设置箭头指向及方框中的内容,都一定要把如下图所示的“--start-group”上面的那一行(即这里显示的第301行,可能跟你那里显示的行数不一样,但是记住,实在单线程这里的“--start-group”上一行,即“$(MKLROOT)/lib/mic/libmkl_scalapack_lp64.a”这一行)的最后面加一个空格,然后输入一个反斜杠(注意,反斜杠后面千万不能有任何字符,包括空格);如果是使用默认设置,即不修改箭头指向及方框中的内容,则一定还要把“LIBS  +=”的下面这一行(即图所显示的315行,即“$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a”这一行)的后面加上一个空格,再加上一个反斜杠,反斜杠后面也不能有任何字符。


CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)


上面的两幅图所对应的lib的链接顺序以及链接名称是我在intel官网查询的:https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor

这里专门帮你选择MKL相关数学库的链接顺序的,非常棒!!

教你如何选择链接库顺序,包括上面的elpaconfigure部分我也是从这里查询并根据elpa的安装文档揉和而成的:

首先选择intel产品的版本:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


选择系统:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


协处理器选择NONE(至少我的机器是选择NONE):

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


编译器:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)


 

架构:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


选择静态链接:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


选择32位整型:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

选择OPENMP线程(如果是单线程,就选择Sequential啊!):

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


选择intel的openmp库(如果是单线程,这里是不能选的,也无需选择):

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


下面方框全选(如果是单线程,则第一个框是无法选择的,也不需选):

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)


选择intel的MPI库:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 


下面三个框全选:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

然后就会在下面出现链接库的顺序及名称,直接一行行复制到上面cp2k的配置文件中即可。elpa的configure部分只需要对应的掐头去尾再加一个-l(是字母L的小写)就行,照葫芦画瓢。注意,下面那个蓝色选中区域不要复制到LIBS(库文件路径)位置,要复制到IFLAGS位置,因为它属于头文件路径。

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

 

 

然后编译,

如果以前编译过的,那么在编译前最好clean一下,即在这个makefile目录下执行:

[root]#  make  distclean


然后在进行下面的编译

多线程多进程版本(下面的数字8表示用8个核心同时编译,会快很多很多,当然如果你的机器是24核心的话,可以改为24):

[root]#  make  -j  8  ARCH=Linux-x86-64-intel-host  VERSION=psmp

 

如果要编译单线程多进程版本,则是:

[root]#  make  -j 8  ARCH=Linux-x86-64-intel-host  VERSION=popt

 

编译完成后会生成一个目录(一般为cp2k/exe/Linux-x86-64-intel-host/),在这个目录下面就有可执行文件cp2k.psmp或者cp2k.popt,可以将此目录放到环境变量里,这样以后用的时候就不用输入长长的绝对路径了。

由于上面的这些插件都是用静态库链接到cp2k上的,所以一旦cp2k程序编译完成后,即使把上面的插件所在的安装目录全部删除(如/opt/libxsmm, /opt/libxc等),也不会影响cp2k的运行。但是建议不删除,因为后面如果要升级cp2k的话(一般插件更新不需要那么频繁),就不需要重新编译安装这些插件了,直接把以前配置好的Linux-x86-64-intel-mic.psmp文件放到新的cp2k的arch/目录下替换新的配置文件,然后在新的cp2k的makefile目录下直接执行上面的make ……就能把新的cp2k编译出来了,非常方便!!!

使用多线程版本cp2k时,需要手动设置线程数:

export  OMP_NUM_THREADS=2

表示使用两个线程,建议在环境变量里添加上:

export OMP_NUM_THREADS=1

然后每次计算想要用多线程时,手动在命令行终端执行:

export  OMP_NUM_THREADS=2

然后再执行:

mpirun  -n 14  cp2k.psmp test.inp

这样的命令,程序就会自动使用14核2线程。如果是用集群管理器提交任务的话(比如Torque中用qsub提交任务),可以把这个export  OMP_NUM_THREADS=2写入提交脚本里面,需要注意的是,核心数乘以线程数不能大于单节点上总的物理核心数,不然计算会非常慢!

此外,使用大于2的线程时,一般不能跨节点计算,跨节点计算时将线程数设为1

 





7.  cp2k离线文档生成并制作成chm格式:

当然你也可以用在线文档,不过感觉在线文档比较慢,那你就可以用离线文档(离线文档和cp2k软件可以每隔几个月更新一次,因为或许就会有新的功能加入以及速度优化和错误修正,此时那些插件就可以不需要经常更新了,只需下载更新cp2k并重新制作离线文档)

 

 

7.1 生成离线文档:

首先进入https://sourceforge.net/projects/saxon/

下载工具包,如图所示(网页慢的话,这个下载图标可能会等一会儿才出现)

下载完成后解压,将里面的名为saxon9he.jar的文件拷贝到linux下的~/bin/目录下。(就是你的这个用户的主目录(家目录)的bin/目录下,这个bin目录一般要自己创建)

 

然后进入cp2k的编译目录,进入里面的tools/manual/目录下(即我的例子中的/opt/cp2k/ tools/manual/目录),执行(单线程版是cp2k.popt啊,不要弄错了哈):

[root]#  ../../exe/Linux-x86-64-intel-host/cp2k.psmp  --xml

[root]#  ./xml2htm

 

等一会cp2k的离线网页文档就生成了,你可以把整个manual文件夹拷贝到Windows下,然后用浏览器打开名为CP2K_INPUT.html就行了,或者制作成chm文件,使用方便!

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

7.2 chm文件的生成:

将上面的整个manual目录拷贝到windows下,然后下载easyCHM程序:

https://www.xp510.com/xiazai/Application/other/25065.html

这是中文**版的,但是要安装,很难找到绿色版。

 

安装完后,打开easyCHM,选择新建工程,然后工程目录选择从linux拷贝下来的manual目录(此时请到manual目录下把toggle_folding.js这个文件删除,不然制作出来的chm有问题),然后点击确定:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)   CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)   CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

   

 

等读取完成后,就可以编译了:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 

编译完成后,就会在manual外层目录看到chm文件了,然后原manual目录就可以删除了:

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)

 




8. 软件下载地址:

8.1  libint:  https://github.com/evaleev/libint/tree/release-1-1-6

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版) 


 

8.2  libxsmm:  https://github.com/hfp/libxsmm

CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版) 


 

8.3  libxc:   http://www.tddft.org/programs/octopus/wiki/index.php/Libxc:download

 

 

8.4  elpa:   http://elpa.mpcdf.mpg.de/elpa-tar-archive

 CP2K4.1-release & 最新5.x-development 多进程多线程(MPI+OPENMP) (psmp版 & popt版)超详细编译安装教程极致优化加速版(全编译器可编译版)





更新条目:

2017.8.23:

将第6节中在线下载cp2k的链接改为了 svn checkout https://svn.code.sf.net/p/cp2k/code/trunk 。


2017.10.13:

一些错误修复以及说明的更新