计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1433|回复 Reply: 4
打印 Print 上一主题 Last thread 下一主题 Next thread

[CP2K] 在离线服务器centos7.9上尝试安装的cp2k各个版本

[复制链接 Copy URL]

3

帖子

0

威望

59

eV
积分
62

Level 2 能力者

本帖最后由 萌新努力学习 于 2024-7-3 16:44 编辑

第一次接触安装cp2k,感觉这个是真的难安,一开始想尝试使用版主推荐的docker安装,使用虚拟机的ubantu版本,毕竟是联网的安装,可以一步到位,但尝试了各种办法都失败了,一直卡在网速上,不管是pull还是docker toolchain都不行,期间换了docker的国内镜像,在虚拟机上联机主机使用clash都不行,没办法只好用toolchain的离线安装了(这个方面我是看sobereva和大冰释之川佬的,帖子地址http://bbs.keinsci.com/thread-21608-1-1.html
给老爷机离线安装CP2K-2022.2的笔记 - 第一性原理 (First Principle) - 计算化学公社 (keinsci.com))。



首先是cp2k的5.1版本
这个上面我尝试的最多,我想安装的是一个改动过的特殊版本,一开始是使用intel编译器安装,通过yoghurt117大佬的方法使用,前面各种库的安装都很正常,但到了最后一步显示失败,我又尝试使用gcc编译,改了一下其中的gcc_install和elpa_install好像还有其他的install时间有点长了有点记不住了,总之和之前一样都是前面的库安装成功,但最后编译显示失败,我看了一下原因,显示的是改过的c++代码有问题,像是没有引用好其他文件里的变量,我把生成的local.popt文件里的-werror=unused-variable的去掉,显示编译成功,但一测试就报错显示地址内存溢出,经过test错的也不少,没办法只能放弃这个特殊版本,但经过这么多更改后使用./install_cp2k_toolchain.sh安装正常版本的5.1已经是没有任何问题了。经过测试也是没有一点错误。




接下来是8.1版本的安装
这个版本的gcc10.2版本本身有一点问题,他的__has_include用法出错,在10.3版本上好像是修复了,但是在gcc10.2上确实还是存在,在gcc_install上面有一个patch循环(主体在scripts/files文件夹下),这个就是解决问题的小脚本add patch for GCCcore 10.2 to fix __has_include regression by boegel · Pull Request #11627 · easybuilders/easybuild-easyconfigs (github.com),但是我安装的gcc仍然存在这个问题,在安装libint-2.6-lmax时一直显示失败,我更换了各个版本的libint安装,在2.6所有版本上都不能使用,只有退回libint-1.1.6,当编译成功时,使用cp2k.popt --version发现不支持libint的库,没有检测到,用test测试会有80多个错误和20多的失败,没有办法,这个版本我是安不好了,同理的8.2版也是一样的问题




7.1和9.1版本的安装
这个就没什么大问题了,用./install_cp2k_toolchain.sh直接安装就行。



至于2022后面的版本,centos7.9就太老了,他的gcc不兼容,如果你想安的话需要更新一下ld和as,安装一下新版本的binutils,然后把新版的ld路径写到你的bashrc里面或者有root写到系统路径下面(Centos 下 ld 链接器版本更新 | 一个懒散的程序猿 (catcheroftime.github.io)),如果你的linux版本太老不建议安装太新的cp2k,各种问题,比如使用的libgfortran的库会提示你太老了,要使用libgfortran.so.5或者6,你这时候要跟新一下libgfortran.so的软连接,GLIBC之类的库也会提示你版本不对,这些麻烦的很。




最后一点小问题:1.gcc组件:gcc的gmp,mpc之类的包有的gcc压缩包里面没有,这时候你安装gcc就会提示你下载失败,你进入gcc_install把
[ -d gcc-${gcc_ver} ] && rm -rf gcc-${gcc_ver}tar -xzf gcc-${gcc_ver}.tar.gz
这两行删掉,这两段大概在40行左右,去看/tools/toolchain/build/gcc-8.3.0/contrib下的download_prerequisites文件,里面写的是你要下载的gcc组件的版本,去国内的镜像网站下载(https://mirrors.tuna.tsinghua.edu.cn/gnu/),把你需要的组件都下在到build/gcc的里面解压,然后重新用./install_cp2k_toolchain.sh就行,这样有可能会显示你obj已经存在,你把build/gcc的obj删掉就行。

2.下载的命令:一般采用上面俩大佬推荐的就行,我使用的是--no-check-certificate --install-all --mpi-mode=openmpi --with-mkl=system,反正看你想安什么库就用--with-库=install就行,要想全部安装用我用的命令就行
3.cp2k库地址:Index of /static/downloads (cp2k.org)
4.经过安装我发现最好使用toolchain里面推荐的gcc,实在不行更换一下相近的版本也行,使用相差过大版本的gcc到最后大概率编译失败,编译成功也有可能测试失败

95

帖子

7

威望

2653

eV
积分
2888

Level 5 (御坂)

2#
发表于 Post on 2024-7-4 11:43:56 | 只看该作者 Only view this author
本帖最后由 mizu-bai 于 2024-7-4 11:47 编辑

我昨天刚刚成功在 CentOS 6.9 的老爷机里编译了 CP2K 2024.1



主要流程如下

1. 开了一个 CentOS 6.9 虚拟机,用 yum downloadonly 下载了 devtoolset 包,再传到服务器上安装,就有办法用上 gcc 9.1.1 了
2. 在本地 clone 下来一个 CP2K-2024.1,在 toolchain/build 下塞进去需要的包。其中 gcc-13.2.0 先解压之后,./contrib/download_prerequisites 把东西先下好,再重新打包回 gcc-13.2.0.tar.gz,最后把整个 CP2K 2024.1 文件夹打包好传上服务器
3. CentOS 6.9 的 glibc 版本太低了,如果 --with-cmake=install 的话,装了也用不了,自己另外在机器上装了一个 cmake 3.25.2,可以使用。另外得确保系统上有个能用的 Python3,有些依赖包里有脚本需要 Python3 来运行。
4. 加载好 devtoolset 里的 gcc-9.1.1,自己装的 cmake 3.25.2,以及 Python3,编译 toolchain

  1. ./install_cp2k_toolchain.sh --with-sirius=no --with-openmpi=install --with-plumed=install --with-gcc=install --with-intel=no --with-cmake=system
复制代码

5. 编译好 toolchain 生成 arch file 后 copy 到 arch 文件夹下,在 local.psmp 和 local.ssmp 的 LIBS 一行最后添加 -lrt,最后 make -j 32 ARCH=local VERSION="ssmp psmp" 便大功告成。

  1. LIBS        = -lsymspg -l:libplumed.a -ldl -lstdc++ -lz -ldl -lgsl -lelpa_openmp -lcosma_prefixed_pxgemm -lcosma -lcosta  -lscalapack -lxsmmf -lxsmm -ldl -lpthread -llibgrpp -lxcf03 -lxc -lint2 -lfftw3_mpi -lfftw3 -lfftw3_omp   -lmpi  -l:libopenblas.a -lvori -lstdc++ -lstdc++ -lrt
复制代码

3

帖子

0

威望

59

eV
积分
62

Level 2 能力者

3#
 楼主 Author| 发表于 Post on 2024-7-4 17:42:09 | 只看该作者 Only view this author
mizu-bai 发表于 2024-7-4 11:43
我昨天刚刚成功在 CentOS 6.9 的老爷机里编译了 CP2K 2024.1

又增加了一种方式,使用devtoolset应该可以解决ld版本之类的问题,我在加载其他版本gcc时服务器的ld之类软连接没有更改,所以仍然显示错误,使用devtoolset一套独立的环境可以不用更改软连接就方便太多了,毕竟服务器初始的设置能不改就不改

95

帖子

7

威望

2653

eV
积分
2888

Level 5 (御坂)

4#
发表于 Post on 2024-7-4 18:44:37 | 只看该作者 Only view this author
本帖最后由 mizu-bai 于 2024-7-4 18:48 编辑
萌新努力学习 发表于 2024-7-4 17:42
又增加了一种方式,使用devtoolset应该可以解决ld版本之类的问题,我在加载其他版本gcc时服务器的ld之类 ...

是的,用 devtoolset 编译的时候 ld 确实不是原来的,而且我试了一下,似乎在编译完调用 CP2K 的时候不用加载 devtoolset,只加载 toolchain 的 setup 就能跑了。但很奇怪的是直接用 devtoolset 的 gcc 去编译的时候,libgomp 会有问题,从头编译 toolchain 里的 gcc 就没这个问题了。

3

帖子

0

威望

59

eV
积分
62

Level 2 能力者

5#
 楼主 Author| 发表于 Post on 2024-7-9 16:48:04 | 只看该作者 Only view this author
mizu-bai 发表于 2024-7-4 18:44
是的,用 devtoolset 编译的时候 ld 确实不是原来的,而且我试了一下,似乎在编译完调用 CP2K 的时候不用 ...

对,libgomp应该是一个动态共享库,在devtoolset里面的gcc应该是没有这类的共享库的,像libstdc++.so.6这种都是没有的,但用toolchain重新安装的gcc是有的,并且路径写在了setup里面

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-2-21 12:44 , Processed in 0.191069 second(s), 29 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list