离线安装CP2K-2022.2(Intel编译器)

安装CP2K程序对新手来说是一件略有挑战性的事。虽然GitHub上有预编译版下载即用,但其计算效率远不如在自己机器上编译的,因此自行编译仍较有必要。网上已有不少详细教程,例如本公众号过去半年左右就推出过2篇

从零开始安装(patchedwithPLUMED)
离线安装

但上述两篇是使用GCC编译的,要求gcc版本较高,通常使用,另外还需安装OpenBLAS库。因此有必要出一篇Intel编译器编译CP2K的离线安装教程,对gcc版本几乎无要求,也无需安装OpenBLAS。笔者机子上Intel编译器是IntelParallelStudioXE2019,含IntelMKL。gcc为4.8.5,cmake为3.22.1。openmpi使用4.1.1版,采用Intel编译器编译,此版openmpi亦可用于量化软件ORCA的使用,一举两得。

0.安装openmpi

出于完整性考虑,此处展示如何使用Intel编译器编译openmpi,已安装的读者可跳过此小节。到官网


下载压缩包,笔者下载的压缩包为。解压,编译



./configure--prefix=$HOME/software/=ifortCC=iccCXX=icpc

make-j24
makeinstall

此处使用24核并行编译。完成后在~/.bashrc中写上环境变量

exportPATH=$HOME/software//bin:$PATH
exportLD_LIBRARY_PATH=$HOME/software//lib:$LD_LIBRARY_PATH
exportCPATH=$HOME/software//include:$CPATH

执行source~/.bashrc或退出重登,以使环境变量生效。

1.下载

到以下网址下载压缩包


笔者下载的压缩包名称分别为







到GitHub下载CP2K


压缩包名称为。当然也可以到这些库的官网去下载相同名称的压缩包。注意内置了这些库的版本号,如果读者下载其他版本压缩包,则编译CP2K时无法识别压缩包名称,编译工具链脚本会试图联网下载符合要求的库,那就达不到本文离线安装的目的了。原则上这些库可以逐一手动编译,这里我们就不费这功夫了,把大部分库留到最后让CP2K的工具链自行编译。若不需要plumed库,则无需下载plumed和gsl。在编译CP2K过程中,LibXC和Libint库是经常碰到报错的环节,因此我们单独编译这两个库,以便遇到报错时方便解决。

2.编译LibXC

依次运行



mkdirbuildcdbuild

cmake-DCMAKE_BUILD_TYPE=Release-DCMAKE_INSTALL_PREFIX=$HOME/software/libxc_5_2_3\
-DBUILD_SHARED_LIBS=NO-DCMAKE_C_COMPILER=icc-DCMAKE_Fortran_COMPILER=ifort\
-DCMAKE_INSTALL_LIBDIR=lib-DENABLE_FORTRAN=ON-DENABLE_PYTHON=OFF-DDISABLE_LXC=ON\
-DBUILD_TESTING=NO..

make-j24
makeinstall

成功后,在~/.bashrc文件里写上环境变量

LIBINT
exportCPATH=$HOME/software/libint_2_7_0/include:$CPATH
exportLD_LIBRARY_PATH=$HOME/software/libint_2_7_0/lib:$LD_LIBRARY_PATH

执行source~/.bashrc或退出重登,以使环境变量生效。同理可删除libint压缩包和解压文件夹,只需保留目录libint_2_7_0。

4.编译CP2K

到放置cp2k压缩包的目录,依次运行


/tools/toolchain/scripts/
rm-fget_openblas_
touchget_openblas_
chmod+xget_openblas_
cd..
mkdirbuildcdbuild

这里我们清空了get_openblas_文件内容,让它不要下载OpenBLAS。然后将下载好的5个压缩包挪到build/目录下,依次运行

cd..

./install_cp2k_=no--with-intel=system--with-cmake=system\
--with-openmpi=system--with-openblas=no--with-mkl=system--with-scalapack=system\
--with-libint=system--with-fftw=system--with-libxc=system--with-plumed\
--with-sirius=no--with-cosma=no--with-libvori=no-j24

此处亦使用24核并行编译。写=system的表示使用系统上已编译好的库。fftw在IntelMKL里有,无需自行安装。注意仔细观察屏幕上各个库的识别情况。若无报错,则接着运行

cpinstall/arch/*../../arch/
sourceinstall/setup
cd../..
make-j24ARCH=localVERSION="ssmppsmp"

此处我们将编译过程输出到文件中,万一编译报错,可查看该文件中的报错信息。成功后可在/exe/local/目录下找到一堆可执行文件,例如,等等。在~/.bashrc文件中写入环境变量

if__has_include(libint2_)

在使用IntelOneAPI编译libint时可能遇到此报错。解决方法为安装更高版本的gcc。笔者机器上系统自带gcc为4.8.5,在安装后,仍用IntelOneAPI按此文编译,便无此报错。但这样一来会引出一个问题:既然要安装高版本gcc,不如所有步骤都用gcc编译,不用Intel编译器。这就由读者自行决定了。

6.2ld:cannotfind-lz

编译CP2K时成功产生可执行程序,但未产生,且编译过程报错ld:cannotfind-lz,表示找不到动态库。解决思路:找到并导出其库路径。以笔者机器情况为例,经查找发现有两处存在,第一处在/usr/lib64/下

/usr/lib64/
/usr/lib64/

第二处在AnacondaPython3的库路径中

mkdir-p$HOME/.local/lib
cd$HOME/.local/lib
ln-s/usr/lib64/

在执行make-j24ARCH=local这一步之前,打开arch/文件,在最后一行中删掉-lz,然后在最末尾放一空格,补写上-L$(HOME)/.local/lib-lz。

exportLD_LIBRARY_PATH=/opt/anaconda3/lib:$LD_LIBRARY_PATH

执行source~/.bashrc或退出重登,以使环境变量生效。此时无需修改arch/文件。

上述任一改动完成后,回到/目录下,执行

make-j24ARCH=localVERSION="psmp"

因为可执行程序已产生,可跳过其编译步骤。过几分钟便可正常编译出。

使用Multiwfn非常便利地创建CP2K程序的输入文件


离线安装


编译MPI并行版OpenMolcas


Linux下安装高版本GCC


感谢paramecium86,钟叔,snljty的审阅和建议。

版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。

相关推荐