计算化学公社

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

[CP2K] 使用包管理器spack安装cp2k的方法分享

[复制链接 Copy URL]

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

本帖最后由 啊不错的飞过海 于 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
复制代码
一般即可解决。

评分 Rate

参与人数
Participants 7
威望 +1 eV +22 收起 理由
Reason
wellzt + 1 とてもいい!
123wo + 4 赞!
hebrewsnabla + 3 好物!
921927965 + 5 好物!
qczcb2 + 4 谢谢分享
qinsc + 5 谢谢分享
sobereva + 1

查看全部评分 View all ratings

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

2#
 楼主 Author| 发表于 Post on 2023-11-15 21:08:23 | 只看该作者 Only view this author
@qinsc 你碰到了什么问题?发帖子详说说,我也没碰到过libxsmm相关的错误,不太清楚你的报错是什么样的。

85

帖子

0

威望

433

eV
积分
518

Level 4 (黑子)

3#
发表于 Post on 2023-11-22 14:39:00 | 只看该作者 Only view this author
本帖最后由 红茶泡枸杞 于 2023-11-22 14:40 编辑

老师您好,第四行git clone -c feature.manyFiles=true https://github.com/spack/spack.git,不好意思,我多试了几次,现在可以打开了

12

帖子

0

威望

885

eV
积分
897

Level 4 (黑子)

4#
发表于 Post on 2023-12-2 14:27:50 | 只看该作者 Only view this author
老师您好,我按照上面的步骤进行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
复制代码

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

5#
 楼主 Author| 发表于 Post on 2023-12-2 16:00:16 | 只看该作者 Only view this author
921927965 发表于 2023-12-2 14:27
老师您好,我按照上面的步骤进行cp2k的安装,遇到了libxsmm的报错,想请教一下是什么原因

你安装libxsmm时候用的binutils是/usr/bin里的吗?spack load binutils试一下。
这个报错应当是旧版binutils不支持新版binutils的压缩算法导致符号加载不出来,用个新的应该可以解决。

12

帖子

0

威望

885

eV
积分
897

Level 4 (黑子)

6#
发表于 Post on 2023-12-3 21:38:28 | 只看该作者 Only view this author
啊不错的飞过海 发表于 2023-12-2 16:00
你安装libxsmm时候用的binutils是/usr/bin里的吗?spack load binutils试一下。
这个报错应当是旧版binu ...

解决了!确实是这个原因,谢谢老师!

57

帖子

1

威望

456

eV
积分
533

Level 4 (黑子)

7#
发表于 Post on 2023-12-4 21:25:49 | 只看该作者 Only view this author
啊不错的飞过海 发表于 2023-11-15 21:08
@qinsc 你碰到了什么问题?发帖子详说说,我也没碰到过libxsmm相关的错误,不太清楚你的报错是什么样的。

感谢老师回复,我换了个Linux的系统就可以了,相关问题已经提交github了,应该是系统的问题,当时是个人电脑用的ArchLinux,可能有些环境变量或者调用的问题,换成Debian就好了,另外AMD的EPYC使用aocc编译最新的cp2k会报错,github的开发者说会在最近几周解决这些问题。

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

8#
 楼主 Author| 发表于 Post on 2023-12-5 13:07:58 | 只看该作者 Only view this author
qinsc 发表于 2023-12-4 21:25
感谢老师回复,我换了个Linux的系统就可以了,相关问题已经提交github了,应该是系统的问题,当时是个人 ...

那个是aocc的fortran编译器问题,llvm系fortran编译器好像目前为止只有末代ifort能编译cp2k

57

帖子

1

威望

456

eV
积分
533

Level 4 (黑子)

9#
发表于 Post on 2023-12-5 21:07:35 | 只看该作者 Only view this author
啊不错的飞过海 发表于 2023-12-5 13:07
那个是aocc的fortran编译器问题,llvm系fortran编译器好像目前为止只有末代ifort能编译cp2k

原来如此,感谢老师解答。
另外想请教您,amd官网给了一个spack安装cp2k的过程(https://www.amd.com/en/developer ... lications-cp2k.html),这里面他后面还加了一些库和依赖之类的,您的帖子里没有加,这些会有什么影响吗?

57

帖子

0

威望

329

eV
积分
386

Level 3 能力者

10#
发表于 Post on 2023-12-6 18:50:08 | 只看该作者 Only view this author
老师您好,我按照上边的步骤进行的。出现了常见问题中的第一个问题,然后我安装了libffi动态库,然后退出登录重新试了,还是会出现哪个报错

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

11#
 楼主 Author| 发表于 Post on 2023-12-7 21:54:57 | 只看该作者 Only view this author
1764360701 发表于 2023-12-6 18:50
老师您好,我按照上边的步骤进行的。出现了常见问题中的第一个问题,然后我安装了libffi动态库,然后退出登 ...

你的机子上运行which python和which python3分别是什么结果?

57

帖子

0

威望

329

eV
积分
386

Level 3 能力者

12#
发表于 Post on 2023-12-8 16:13:55 | 只看该作者 Only view this author
本帖最后由 1764360701 于 2023-12-8 16:16 编辑
啊不错的飞过海 发表于 2023-12-7 21:54
你的机子上运行which python和which python3分别是什么结果?

C:\Users\lmzhao01\Desktop

OML1Y4KXQWGJ2F%PCBGD_$6.png (10.47 KB, 下载次数 Times of downloads: 35)

OML1Y4KXQWGJ2F%PCBGD_$6.png

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

13#
 楼主 Author| 发表于 Post on 2023-12-8 19:16:35 | 只看该作者 Only view this author

看起来没什么怪地方......
执行python --version输出什么?执行python3进入python命令行,运行import ctypes有输出吗?

57

帖子

0

威望

329

eV
积分
386

Level 3 能力者

14#
发表于 Post on 2023-12-8 19:56:14 | 只看该作者 Only view this author
啊不错的飞过海 发表于 2023-12-8 19:16
看起来没什么怪地方......
执行python --version输出什么?执行python3进入python命令行,运行import ct ...

老师,是这个样子的

OB2F2IWG6VY8%_T$9LL(VEM.png (17.6 KB, 下载次数 Times of downloads: 39)

OB2F2IWG6VY8%_T$9LL(VEM.png

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

15#
 楼主 Author| 发表于 Post on 2023-12-14 20:58:49 | 只看该作者 Only view this author
1764360701 发表于 2023-12-8 19:56
老师,是这个样子的

按说这样就没问题了呀?不知道你的centos 7有什么情况,你试试source ${SPACK_ROOT}/share/spack/setup-env.sh之后echo $SPACK_PYTHON一下,不排除是spack用python2去了

本版积分规则 Credits rule

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

GMT+8, 2024-11-25 00:52 , Processed in 0.261329 second(s), 24 queries , Gzip On.

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