跳转至

CP2K 7.1 安装教程

这里以 7.1 版本为例介绍如何安装编译 CP2K,其他版本可参照修改。

环境准备

可参考官方支持编译环境

  • 使用 GCC 5.5.0 以上
  • Intel MPI 环境

一切就绪后,加载上述环境:

module load intel/17.5.239 mpi/intel/2017.5.239
module load gcc/5.5.0

安装流程

首先,在 Release 页面 下载 CP2K 安装包,以 7.1 为例:

wget -c https://github.com/cp2k/cp2k/releases/download/v7.1.0/cp2k-7.1.tar.bz2

拷贝 cp2k-7.1.tar.bz2 到安装路径下并解压。由于需要预编译所需的库等,这里为了防止后续使用时产生额外路径依赖,推荐直接在安装路径下编译。 以/share/apps/cp2k为例:

cp cp2k-7.1.tar.bz2 /share/apps/cp2k
cd /share/apps/cp2k/
tar -jxf cp2k-7.1.tar.bz2

更改目录名为 7.1,为后续添加 module 文件作准备(本步骤可选,也可保留默认名称,后续环境配置时需要相应修改):

mv cp2k-7.1 7.1

进入到 toolchain 目录下,并修改install_mpich.sh, 将其中的check_command mpic++ "mpich"改为check_command mpicxx "mpich"

cd 7.1/tools/toolchain
sed -i 's/check_command mpic++/check_command mpicxx/g' scripts/install_mpich.sh

(可选) 若需安装 ELPA 包,需要将静态库替换为动态库,否则会报错undefined reference to ...

sed -i 's/a libmkl_core.a libmkl_sequential.a/so libmkl_sequential.so libmkl_core.so/g' scripts/install_mkl.sh
sed -i 's/libmkl_gf_lp64.a/libmkl_gf_lp64.so/g' scripts/install_mkl.sh
sed -i 's/libmkl_core.a/libmkl_sequential.so/g' scripts/install_mkl.sh
sed -i 's/libmkl_scalapack_lp64.a/libmkl_scalapack_lp64.so/g' scripts/install_mkl.sh
sed -i 's/libmkl_blacs_intelmpi_lp64.a/libmkl_blacs_intelmpi_lp64.so/g' scripts/install_mkl.sh
sed -i 's/libmkl_blacs_openmpi_lp64.a/libmkl_blacs_openmpi_lp64.so/g' scripts/install_mkl.sh
sed -i 's/libmkl_core.a/libmkl_sequential.so/g' scripts/install_mkl.sh

ref 1 ref 2

(可选) 为加速安装、防止超时报错,在中国大陆可将 Github 统一替换为镜像。但后续从 cp2k 官方网站下载的包也可能出现超时报错,可能需要借助其他平台下载相应的软件包并放到build目录下。

sed -i 's/github.com/hub.fastgit.org/g' scripts/install_*.sh

随后运行 toolchain 脚本安装依赖软件:

./install_cp2k_toolchain.sh --gpu-ver=no   --enable-cuda=no  --with-mpich=system --with-sirius=no --with-openmpi=no  --with-spfft=no --with-hdf5=no

过程中请注意输出信息和报错等,并相应地予以解决。如果一切顺利,会提示需要拷贝 arch 文件,并 source 所需的环境,按照提示操作即可。注意由于步骤不同这里的命令可能不同,仅供参考:

cp install/arch/local* /share/apps/cp2k/7.1/arch/
source /share/apps/cp2k/7.1/tools/toolchain/install/setup

之后进行编译安装:

cd /share/apps/cp2k/7.1/
make -j 8 ARCH=local VERSION="popt psmp"

如果一切顺利,可以得到编译好的二进制可执行文件,创建bin目录,并拷贝exe目录里的文件到bin

mkdir bin
cp ./exe/local/* ./bin

最后删除bintools之外的所有文件,并删除tools/toolchain里的buildinstall目录。

Module 文件生成

若集群使用 module 管理环境变量,请在 modulefile 目录下(取决于集群的设置)新建目录cp2k并创建文件.module

#%Module

# Help message
proc ModulesHelp { } {
    set nameversion [module-info name]
    regsub "/.*" $nameversion "" name
    regsub ".*/" $nameversion "" version
    puts stderr "\tLoads the $version $name environment"
}

# Set variables
set nameversion [module-info name]
regsub "/.*" $nameversion "" name
regsub ".*/" $nameversion "" version
module-whatis    "$name $version"

# set environment variables
set basedir /share/apps/$name/$version

module load intel/17.5.239 mpi/intel/2017.5.239
module load gcc/5.5.0

prepend-path    PATH            ${basedir}/bin

然后创建符号链接,提供相应版本号的环境:

ln -s .module 7.1

Q&A

  1. 如果所有标称为https://www.cp2k.org的压缩包均无法下载,且单独wget该压缩包时提示Issued certificate has expired,可以尝试更新证书服务,CentOS 7 命令如下:
yum install ca-certificates
  1. 以上欺骗手段仅适用于 Intel MPI <= 2018 的版本,对高版本 MPI 推荐直接安装更高版本的 CP2K,Toolchain 可提供完整支持。

  2. 如果make过程中频繁报错,还可能是系统没有正确配置地区设置,请使用如下命令加载环境变量:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE="en_US.UTF-8"

评论