计算化学公社

标题: 使用包管理器spack安装cp2k的方法分享 [打印本页]

作者
Author:
啊不错的飞过海    时间: 2023-10-30 22:17
标题: 使用包管理器spack安装cp2k的方法分享
本帖最后由 啊不错的飞过海 于 2023-12-3 22:02 编辑

在10月29日的更新之后,包管理器spack终于可以使用gcc-13/Makefile安装支持全部可选依赖的cp2k了,特开一贴,分享一下喜悦。

太长不看版
总之执行这一串就对了(
  1. cd ${HOME}
  2. mkdir soft
  3. cd soft
  4. git clone -c feature.manyFiles=true https://github.com/spack/spack.git
  5. export SPACK_ROOT=${HOME}/soft/spack
  6. source ${SPACK_ROOT}/share/spack/setup-env.sh
  7. spack compiler find
  8. spack install binutils
  9. spack install gcc@13+binutils
  10. spack external find
  11. spack load gcc@13
  12. spack compiler find
  13. spack install cp2k%gcc@13
复制代码

Spack的安装
在一个可以写的文件夹里运行
  1. git clone -c feature.manyFiles=true https://github.com/spack/spack.git
复制代码

Spack的运行
运行以下命令配置spack环境变量。
  1. export SPACK_ROOT=${HOME}/soft/spack
  2. source ${SPACK_ROOT}/share/spack/setup-env.sh
复制代码
可以把这两行写进~/.bashrc里。对于大部分系统来讲,这一步不会有输出。
但是吧,这一步调用一些旧系统没有预装的动态库而报错,楼主为什么会知道呢,真是个悲伤的故事。。。
解决方案见最下。

用Spack安装编译器、cp2k
Spack支持在同一系统下安装多个版本的同一编译器。作为一个2023年的用户,我们选择最新的gcc-13.
首先让spack找到系统里已有的编译器和一些软件:
  1. spack compiler find
复制代码
安装gcc:
  1. spack install gcc@13
复制代码
接下来就可以安cp2k了。不妨先看看介绍:
  1. spack info cp2k
  2. spack install cp2k%gcc@13 +elpa
复制代码
这样,cp2k就安装上了。

CP2K的运行
spack安上的CP2K已经通过-Wl,-rpath设过库搜索路径,不需要设LD_LIBRARY_PATH等环境变量。运行
  1. spack load cp2k
复制代码
即可以mpirun [OPTIONS] cp2k.psmp调用CP2K,此时已自动设置了CP2K、编译使用的MPI等软件进PATH;也可以用绝对路径调用。

常见问题
1.centos7等老旧系统上source ${SPACK_ROOT}/share/spack/setup-env.sh会出现如下报错,如何解决?
Traceback (most recent call last):
  File "/home/yizeyi18/soft/spack/bin/spack", line 54, in <module>
    sys.exit(main())
  File "/home/yizeyi18/soft/spack/lib/spack/spack_installable/main.py", line 35, in main
    import spack.main  # noqa: E402
  File "/home/yizeyi18/soft/spack/lib/spack/spack/main.py", line 31, in <module>
    from llnl.util.tty.log import log_output
  File "/home/yizeyi18/soft/spack/lib/spack/llnl/util/tty/log.py", line 9, in <module>
    import ctypes
  File "/usr/local/python3/lib/python3.10/ctypes/__init__.py", line 8, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'

这是缺少libffi动态库的表现。视系统不同执行如下命令:
  1. sudo yum install libffi-devel
  2. sudo apt-get install libffi-dev
复制代码
执行完之后,退出登录,再重新运行下列命令,否则会因为setup-env.sh里的一些防呆命令失败。
  1. export SPACK_ROOT=${HOME}/soft/spack
  2. source ${SPACK_ROOT}/share/spack/setup-env.sh
复制代码
有同学可能会问,我没有sudo权限,该怎么办?
——搞个自带libffi的python发行版,比如miniconda,安上,用它的环境。

2.sirius平面波模块安装失败了,怎么办?
这是gcc-13的c++检查带来的问题;spack里的sirius-7.5.0已修复了。面向旧版本spack的解决方法如下:
-在${SPACK_ROOT}/var/spack/repo/builtin/packages/sirius里创建一个长这样的文件,不妨命名为gcc-13.patch:
  1. diff --git a/src/SDDK/memory.hpp b/src/SDDK/memory.hpp
  2. index ba7a2ed..b4af9ec 100644
  3. --- a/src/SDDK/memory.hpp
  4. +++ b/src/SDDK/memory.hpp
  5. @@ -35,6 +35,7 @@
  6. #include <array>
  7. #include <complex>
  8. #include <cassert>
  9. +#include <cstdint>
  10. #include "gpu/acc.hpp"

  11. namespace sddk {
  12. diff --git a/src/typedefs.hpp b/src/typedefs.hpp
  13. index 75a0bf5..b796770 100644
  14. --- a/src/typedefs.hpp
  15. +++ b/src/typedefs.hpp
  16. @@ -32,6 +32,7 @@
  17. #include <array>
  18. #include <limits>
  19. #include <map>
  20. +#include <cstdint>
  21. #include <algorithm>

  22. /// Spin-blocks of the Hamiltonian.
复制代码
-在${SPACK_ROOT}/var/spack/repo/builtin/packages/sirius/packages.py第190行加这么一句:
  1. patch("gcc-13.patch", when="@7.4.3%gcc@13.1.0:")
复制代码
于是sirius就能过编译了。

3.编译时出现了如下报错,如何解决?
/lots/of/path/somename.a: error adding symbols: File format not recognized

这是使用的binutils不支持编译somename.a时binutils压缩符号表的压缩算法导致。可运行如下命令:
  1. spack load binutils
复制代码
一般即可解决。

作者
Author:
啊不错的飞过海    时间: 2023-11-15 21:08
@qinsc 你碰到了什么问题?发帖子详说说,我也没碰到过libxsmm相关的错误,不太清楚你的报错是什么样的。
作者
Author:
红茶泡枸杞    时间: 2023-11-22 14:39
本帖最后由 红茶泡枸杞 于 2023-11-22 14:40 编辑

老师您好,第四行git clone -c feature.manyFiles=true https://github.com/spack/spack.git,不好意思,我多试了几次,现在可以打开了
作者
Author:
921927965    时间: 2023-12-2 14:27
老师您好,我按照上面的步骤进行cp2k的安装,遇到了libxsmm的报错,想请教一下是什么原因

  1.      834    /usr/bin/ld: /opt/ohpc/pub/apps/spack-0.21.0/opt/spack/linux-rocky8-broadwell/gcc-13.2.0/libxsmm-1.17-rqc27ioitp5dnw2qdamck4dtkgkkr4rl/lib/libxsmmf.a(libxsmm-mod.o): unable to initialize decompress status for section .debug_info
  2.      835    /usr/bin/ld: /opt/ohpc/pub/apps/spack-0.21.0/opt/spack/linux-rocky8-broadwell/gcc-13.2.0/libxsmm-1.17-rqc27ioitp5dnw2qdamck4dtkgkkr4rl/lib/libxsmmf.a(libxsmm-mod.o): unable to initialize decompress status for section .debug_info
  3.      836    /usr/bin/ld: /opt/ohpc/pub/apps/spack-0.21.0/opt/spack/linux-rocky8-broadwell/gcc-13.2.0/libxsmm-1.17-rqc27ioitp5dnw2qdamck4dtkgkkr4rl/lib/libxsmm.a(libxsmm_main.o): unable to initialize decompress status for section .debug_info
  4.      837    /usr/bin/ld: /opt/ohpc/pub/apps/spack-0.21.0/opt/spack/linux-rocky8-broadwell/gcc-13.2.0/libxsmm-1.17-rqc27ioitp5dnw2qdamck4dtkgkkr4rl/lib/libxsmm.a(libxsmm_main.o): unable to initialize decompress status for section .debug_info
  5.      838    /usr/bin/ld: /opt/ohpc/pub/apps/spack-0.21.0/opt/spack/linux-rocky8-broadwell/gcc-13.2.0/libxsmm-1.17-rqc27ioitp5dnw2qdamck4dtkgkkr4rl/lib/libxsmm.a(libxsmm_main.o): unable to initialize decompress status for section .debug_info
  6.      839    /usr/bin/ld: /opt/ohpc/pub/apps/spack-0.21.0/opt/spack/linux-rocky8-broadwell/gcc-13.2.0/libxsmm-1.17-rqc27ioitp5dnw2qdamck4dtkgkkr4rl/lib/libxsmm.a(libxsmm_main.o): unable to initialize decompress status for section .debug_info
  7.   >> 840    /opt/ohpc/pub/apps/spack-0.21.0/opt/spack/linux-rocky8-broadwell/gcc-13.2.0/libxsmm-1.17-rqc27ioitp5dnw2qdamck4dtkgkkr4rl/lib/libxsmm.a: error adding symbols: File format not recognized
  8.   >> 841    collect2: error: ld returned 1 exit status
复制代码

作者
Author:
啊不错的飞过海    时间: 2023-12-2 16:00
921927965 发表于 2023-12-2 14:27
老师您好,我按照上面的步骤进行cp2k的安装,遇到了libxsmm的报错,想请教一下是什么原因

你安装libxsmm时候用的binutils是/usr/bin里的吗?spack load binutils试一下。
这个报错应当是旧版binutils不支持新版binutils的压缩算法导致符号加载不出来,用个新的应该可以解决。
作者
Author:
921927965    时间: 2023-12-3 21:38
啊不错的飞过海 发表于 2023-12-2 16:00
你安装libxsmm时候用的binutils是/usr/bin里的吗?spack load binutils试一下。
这个报错应当是旧版binu ...

解决了!确实是这个原因,谢谢老师!
作者
Author:
qinsc    时间: 2023-12-4 21:25
啊不错的飞过海 发表于 2023-11-15 21:08
@qinsc 你碰到了什么问题?发帖子详说说,我也没碰到过libxsmm相关的错误,不太清楚你的报错是什么样的。

感谢老师回复,我换了个Linux的系统就可以了,相关问题已经提交github了,应该是系统的问题,当时是个人电脑用的ArchLinux,可能有些环境变量或者调用的问题,换成Debian就好了,另外AMD的EPYC使用aocc编译最新的cp2k会报错,github的开发者说会在最近几周解决这些问题。
作者
Author:
啊不错的飞过海    时间: 2023-12-5 13:07
qinsc 发表于 2023-12-4 21:25
感谢老师回复,我换了个Linux的系统就可以了,相关问题已经提交github了,应该是系统的问题,当时是个人 ...

那个是aocc的fortran编译器问题,llvm系fortran编译器好像目前为止只有末代ifort能编译cp2k
作者
Author:
qinsc    时间: 2023-12-5 21:07
啊不错的飞过海 发表于 2023-12-5 13:07
那个是aocc的fortran编译器问题,llvm系fortran编译器好像目前为止只有末代ifort能编译cp2k

原来如此,感谢老师解答。
另外想请教您,amd官网给了一个spack安装cp2k的过程(https://www.amd.com/en/developer ... lications-cp2k.html),这里面他后面还加了一些库和依赖之类的,您的帖子里没有加,这些会有什么影响吗?
作者
Author:
1764360701    时间: 2023-12-6 18:50
老师您好,我按照上边的步骤进行的。出现了常见问题中的第一个问题,然后我安装了libffi动态库,然后退出登录重新试了,还是会出现哪个报错
作者
Author:
啊不错的飞过海    时间: 2023-12-7 21:54
1764360701 发表于 2023-12-6 18:50
老师您好,我按照上边的步骤进行的。出现了常见问题中的第一个问题,然后我安装了libffi动态库,然后退出登 ...

你的机子上运行which python和which python3分别是什么结果?
作者
Author:
1764360701    时间: 2023-12-8 16:13
本帖最后由 1764360701 于 2023-12-8 16:16 编辑
啊不错的飞过海 发表于 2023-12-7 21:54
你的机子上运行which python和which python3分别是什么结果?

C:\Users\lmzhao01\Desktop
作者
Author:
啊不错的飞过海    时间: 2023-12-8 19:16
1764360701 发表于 2023-12-8 16:13

看起来没什么怪地方......
执行python --version输出什么?执行python3进入python命令行,运行import ctypes有输出吗?
作者
Author:
1764360701    时间: 2023-12-8 19:56
啊不错的飞过海 发表于 2023-12-8 19:16
看起来没什么怪地方......
执行python --version输出什么?执行python3进入python命令行,运行import ct ...

老师,是这个样子的

作者
Author:
啊不错的飞过海    时间: 2023-12-14 20:58
1764360701 发表于 2023-12-8 19:56
老师,是这个样子的

按说这样就没问题了呀?不知道你的centos 7有什么情况,你试试source ${SPACK_ROOT}/share/spack/setup-env.sh之后echo $SPACK_PYTHON一下,不排除是spack用python2去了
作者
Author:
1764360701    时间: 2023-12-17 18:37
啊不错的飞过海 发表于 2023-12-14 20:58
按说这样就没问题了呀?不知道你的centos 7有什么情况,你试试source ${SPACK_ROOT}/share/spack/setup-e ...

老师,之前的问题解决了,但是在运行第九步的时候出现了这样的错误

作者
Author:
啊不错的飞过海    时间: 2023-12-19 16:27
1764360701 发表于 2023-12-17 18:37
老师,之前的问题解决了,但是在运行第九步的时候出现了这样的错误

把底下提到的spack-build-out.txt传上来,或者去spack的git仓库问,你贴出来的截图没有多少有用信息
作者
Author:
Weldingspock    时间: 2024-3-11 20:14
请问这样不需要提前spack安装openmpi吗
作者
Author:
Weldingspock    时间: 2024-3-11 20:47
你好,请问一下在
  1. spack install gcc@13+binutils
复制代码
之后我输入了
  1. spack install cp2k%gcc@13 +elpa
复制代码
报错:
  1. ==> Error: concretization failed for the following reasons:

  2.    1. No valid version for 'cp2k' compiler 'gcc' satisfies '@13'
复制代码
该怎么解决呢。前一步的安装gcc没有出现error
作者
Author:
啊不错的飞过海    时间: 2024-3-13 14:15
Weldingspock 发表于 2024-3-11 20:47
你好,请问一下在之后我输入了报错:
该怎么解决呢。前一步的安装gcc没有出现error
  1. spack load gcc@13
  2. spack compiler find
复制代码

运行这两个命令




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