计算化学公社

标题: CP2K2024.1安装小结 [打印本页]

作者
Author:
DavyHou    时间: 2024-7-29 13:46
标题: CP2K2024.1安装小结
本帖最后由 DavyHou 于 2024-7-31 09:08 编辑

最近一直试图在服务器上安装CP2K2024.1。也参考了社长和论坛大神们的帖子,但是安装过程依旧曲折坎坷。所以写一些小结,以供他人参考。
cp2k的下载地址为https://github.com/cp2k/cp2k/releases
服务器已安装gcc-10.2以及oneapi-2021。正是这两个编译器给我的安装过程带来了无尽的血泪。先上干货后吐槽。
1. 安装最新版gcc14.1
gcc14.1下载地址为https://ftp.gnu.org/gnu/gcc/gcc-14.1.0/
我下载的是gcc-14.1.0.tar.xz
root下安装gcc14.1 参考该帖子https://blog.csdn.net/nie19940803/article/details/102408025,这个帖子非常详细(没注意到,现在CSDN的一些帖子需要付费查看了)。

1.1 在服务器上进行解压 tar -jxvpf gcc-14.1.0.tar.xz,进入gcc文件夹,然后进行安装gcc操作。
安装GCC需要依赖三个库:GMP, MPFR 和 MPC三个库。
如果可以在联网的情况下,我们直接运行如下命令即可以安装这三个库。运行以下命令即可:./contrib/download_prerequisites
然后分别执行以下命令(这个过程可能有点久):
mkdir objdir
cd objdir
../configure --disable-checking --enable-languages=c,c++,fortran --disable-multilib --prefix=/path/to/install/gcc-14.1 --enable-threads=posix
make -j && make install
/path/to/install/gcc-14.1这个是自己想要给gcc安装的目录,需要自己创建好。

gcc安装速度非常慢,需要一个多小时,要耐心等待

2. gcc安装结束后,解压cp2k-2024.1.tar.bz2文件 tar -xvf cp2k-2024.1.tar.bz2
之后进入./cp2k-2024.1/tools/toolchain/文件夹,运行以下命令

./install_cp2k_toolchain.sh --with-sirius=no --with-openmpi=install--with-plumed=install --with-gcc=system --with-intel=no > out.log2>&1 &

出现以下内容且无报错则为安装顺利完成。之后根据黑体提示即可编译CP2K
------------------------------------------------------------------------------------------------------------------------------------------------
Done!
Now copy:
  cp /home/xxx/software/cp2k-2024.1/tools/toolchain/install/arch/* tothe cp2k/arch/ directory
To use the installed tools and libraries and cp2k version
compiled with it you will first need to execute at the prompt:
  source/home/xxx/software/cp2k-2024.1/tools/toolchain/install/setup
To build CP2K you should change directory:
  cd cp2k/
  make -j 32 ARCH=local VERSION="ssmp sdbg psmp pdbg"

arch files for GPU enabled CUDA versions are named "local_cuda.*"
arch files for GPU enabled HIP versions are named "local_hip.*"
arch files for OpenCL (GPU) versions are named "local_opencl.*"
arch files for coverage versions are named "local_coverage.*"

Note that these pre-built arch files are for the GNU compiler, users have toadapt them for other compilers.
It is possible to use the provided CP2K arch files as guidance.
--------------------------------------------------------------------------------------------------------------------------------------------------

安装结束后可以在./cp2k-2024.1/exe/local/文件夹下看到cp2k.pdbgcp2k.poptcp2k.psmpcp2k.sdbgcp2k.soptcp2k.ssmp几个文件。对于计算主要使用cp2k.poptcp2k.psmp

另外在.bashrc中写入以下内容
source /home/xxx/software/cp2k-2024.1/tools/toolchain/install/setup
export PATH=$PATH:/home/xxx/software/cp2k-2024.1/exe/local

3. 开始吐槽,心情不好的请绕道

3.1 F**king gcc-10.2
由于之前安装PACE的时候已经安装了gcc-10.2,并且该版本gcc已经相对较新了,所以没有再考虑安装其它版本gcc。但是该版本gcc在安装libint-v2.6.0-cp2k-lmax-5.tgz时有以下错误

python c_to_f.py ../include/libint2.h.i libint2_types_f.h Libint_t
grep '^#' ../include/libint2_types.h | grep -v '#include' >fortran_incldefs.h
FC libint_f.o
../include/libint2/util/generated/libint2_params.h:29:0:

   29 | #    if __has_include(<libint2_params.h>)
      |
Error: missing '(' before "__has_include" operand
../include/libint2/util/generated/libint2_params.h:29:0: Error: operator"__has_include" requires a header-name
make[1]: *** [libint_f.o] Error 1
make[1]: Leaving directory`/home/xxx/software/t/cp2k-2024.1/tools/toolchain/build/libint-v2.6.0-cp2k-lmax-5/fortran'
make: *** [fortran] Error 1

但是更换为gcc14.1后一切都顺利了起来。所以有理由怀疑是编译器兼容问题。

3.2 F**king oneapi-2021
如果使用intel编译器来编译CP2K2024.1时,./install_cp2k_toolchain.sh可以顺利运行,无报错。但是make -j 32 ARCH=localVERSION="ssmp sdbg psmp pdbg"运行时只能编译出cp2k.soptcp2k.ssmp。之后报错,无法编译出cp2k.poptcp2k.psmpcp2k.ssmp虽然能够正常运行,但是遇到大体系结构,计算过程会有内存问题。

作者
Author:
Santz    时间: 2024-7-30 11:57
你的 Linux 发行版是多少呢?我想复现下
作者
Author:
DavyHou    时间: 2024-7-30 12:45
Santz 发表于 2024-7-30 11:57
你的 Linux 发行版是多少呢?我想复现下

CentOS Linux release 7.9.2009 (Core)
但感觉应该和Linux版本关系不大,主要是编译器原因。
作者
Author:
Santz    时间: 2024-7-30 17:26
DavyHou 发表于 2024-7-30 12:45
CentOS Linux release 7.9.2009 (Core)
但感觉应该和Linux版本关系不大,主要是编译器原因。
[root@Master ~]# date
Tue Jul 30 17:07:58 CST 2024
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@master ~]# uname -r
3.10.0-1160.118.1.el7.x86_64
[root@master ~]# inxi -C
CPU:
  Info: 32-core model: Intel Xeon Platinum 8336C bits: 64 type: MCP cache: L2: 40 MiB
  Speed (MHz): avg: 850 min/max: 800/3500 cores: 1: 1100 2: 800 3: 800 4: 800 5: 800 6: 800
    7: 800 8: 800 9: 800 10: 800 11: 800 12: 800 13: 800 14: 800 15: 800 16: 800 17: 800 18: 800
    19: 800 20: 800 21: 800 22: 800 23: 800 24: 800 25: 800 26: 800 27: 800 28: 800 29: 2100
    30: 800 31: 800 32: 800

基础环境:module load cmake/3.29.3 mkl/intel/oneapi-2022.3.1 compilers/gcc/10.2.0-patch
安装命令:./install_cp2k_toolchain.sh --with-gcc=system --with-intel=no --with-cmake=system --with-openmpi=install --with-plumed=install
虽然最终能成功编译,但过程比较坎坷,有些折腾,不建议使用 gcc-10.2.0 这一版本。
可能会碰到的问题:
    解决:这是 gcc-10.2.*的版本问题,需要安装补丁后重新编译安装gcc-10.2.0,参见173,在 gcc-10.5.0 中这一问题已不复存在
  解决:修改src/mp2_types.Fsrc/cp_eri_mme_interface.F文件,注释掉#if __GNUC__ < 9 || (__GNUC__ == 9 && __GNUC_MINOR__ < 5)部分。参见174


  2.CP2K-2024.1 + gcc-10.5.0
基础环境:module load cmake/3.29.3 mkl/intel/oneapi-2022.3.1 compilers/gcc/10.5.0
安装命令:./install_cp2k_toolchain.sh --with-gcc=system --with-intel=no --with-cmake=system --with-openmpi=install --with-plumed=install
很简单就编译测试通过了,没那么多问题。


从调试过程来看 CP2K对编译器的要求就是坨&#128169;,文档里写明的编译器版本甚至可以出现如此多问题。[attach]96105[/attach]

附上调试过程,有兴趣的参考。

作者
Author:
Santz    时间: 2024-7-30 17:36
另外你提到的安装 gcc 的方法很旧了,还需要手动编译 mpc、mpfr、gmp、isl 这些,直接在解压后的 gcc 安装目录下执行 ./contrib/download_prerequisites ,如果网络不好,就手动把gmp-6.1.0.tar.bz2 mpfr-3.1.4.tar.bz2 mpc-1.0.3.tar.gz isl-0.18.tar.bz2 这几个包放到安装目录下,再执行 ./contrib/download_prerequisites即可,最后再configure
作者
Author:
DavyHou    时间: 2024-7-30 18:55
Santz 发表于 2024-7-30 17:36
另外你提到的安装 gcc 的方法很旧了,还需要手动编译 mpc、mpfr、gmp、isl 这些,直接在解压后的 gcc 安装 ...

https://blog.csdn.net/nie19940803/article/details/102408025,这个帖子里的安装gcc的方法和你说的一样啊
作者
Author:
Santz    时间: 2024-7-30 21:15
DavyHou 发表于 2024-7-30 18:55
https://blog.csdn.net/nie19940803/article/details/102408025,这个帖子里的安装gcc的方法和你说的一样 ...

不一样。需要 vip 我没看全,但是前面的手动编译gmp 等完全没必要。
作者
Author:
DavyHou    时间: 2024-7-31 09:00
本帖最后由 DavyHou 于 2024-7-31 09:09 编辑
Santz 发表于 2024-7-30 21:15
不一样。需要 vip 我没看全,但是前面的手动编译gmp 等完全没必要。

是的,我没注意,他们现在改规则了,原来是免费看的。我再把安装过程完善一下。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3