计算化学公社

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

[CP2K] 超详细CP2K编译过程,GNU9.3+intel MKL+openmpi【含视频】

  [复制链接 Copy URL]

119

帖子

2

威望

2144

eV
积分
2303

Level 5 (御坂)

本帖最后由 啦啦黑还黑 于 2020-8-18 13:41 编辑

编译视频链接:https://www.bilibili.com/video/BV1Y54y1e7Yx/
学习圈子链接:https://mp.weixin.qq.com/s/Rr27TZkKL6shCEfPr8icPA

【编译之前的简介】
目前,CP2K最近稳定版是7.1版本,master版本有8.0(暂时不建议用)。编译6.1之前的版本容易的多,此文章主要介绍7.1版本的编译。



一般只需要编译popt版本或者psmp版本就行了,这两个版本可以跨节点并行。psmp采用MPI+OpenMP混编,内存效率高,计算速度两个基本一样。
预编译版本用ssmp(openmp并行,计算效率低),sopt只能单核使用。

cp2k的编译方法很多。这里介绍一些常见的方法:

(1)第一种方法是直接在 https://github.com/cp2k/cp2k/releases/ 中下载cp2k-7.1-Linux-x86_64.ssmp使用的时候定义一下并行核数,只能节点内部并行
export OMP_NUM_THREADS=24
cp2k-7.1-Linux-x86_64.ssmp cp2k.inp 1>cp2k.out 2>cp2k.err


(2)第二种方法是只针对与Ubuntu系统的,直接 apt-get install cp2k,可直接安装各种ssmp popt psmp等版的 cp2k5.1(Ubuntu18) cp2k6.1(Ubuntu20)。

(3)第三种方法直接通过cp2k/arch文件夹中的已经存在的一些模板文件编译,这种方法需要我们提前安装各种库文件,如果要安装的插件多,非常不方便。

(4)./tools/toolchain 方法是最为推荐的自动安装各种库和插件,可以方便编译出非常全面的cp2k(包含elpa pexsi QUIP plumed等)。

(5)静态库版本,这个需要把库文件都编译进去二进制文件里,在新的服务器使用,直接上传已经编译好的二进制文件就可以了。







【tools/toolchain方法编译,intel MKL + GNU9.3 + openmpi】
toolchain运行的大致流程图:


(1)准备升级gcc,如果用cp2k6.1以及之前的版本,centos自带的gcc4.8.5已经足够了。
但是要编译cp7.1,必须手动升级gcc g++ gfortran到 7.3 、7.5、 8.3、或 9.3版本,千万别不信邪,头铁用别的gcc版本,最后make test的时候就傻眼了,我用gcc9.1就翻过车。
升级方法一:源码编译:https://www.liuhaolin.com/linux/535.html
升级方法二:scl devtoolset:
安装centos-release-scl
yum install centos-release-scl
安装 devtoolset
yum install devtoolset-9-gcc*
激活
scl enable devtoolset-9 bash



(2)安装Intel MKL库,参考http://bbs.keinsci.com/thread-18600-1-1.html
MKL库目前是免费的,CentOS下可以运行以下两行命令安装。期间会下载几百兆的文件,文件会被安装到/opt/intel目录下,占3GB多(对于2020-Jul-10时下载的版本而言)。如果你之前机子里装过Intel编译器,且在装的时候已经选择装了MKL,就不需要再这么装一遍了。

添加intel的源:
yum-config-manager --add-repo https://yum.repos.intel.com/mkl/setup/intel-mkl.repo

下载并安装MKL:
yum install -y intel-mkl

source /opt/intel/compilers_and_libraries_2020/linux/mkl/bin/mklvars.sh intel64 ilp64

(3)toolchain安装各种库文件
cd  tools/toolchain
./install_cp2k_toolchain.sh -h

查看默认的设置,一定要注意所用的变量,默认为system/install/no

我们系统环境变量里已经有的库用--with-****=system,会自动在系统环境路径里寻找。如果没有的库用--with-****=install,脚本会自动联网下载安装。如果不想安装的库--with-****=no自动下载的地址是:https://www.cp2k.org/static/downloads/


一般来说系统默认的配置方案就是合理的。一定需要写的有一下几点:
./install_cp2k_toolchain.sh  \
--with-openmpi=install \
--math-mode=mkl \
--with-scalapack=no


首先是openmpi和 mpich 二选一 (--with-openmpi=install)或(--with-mpich=install
然后是选择mkl库,--math-mode=mkl(记得提前加载 source /opt/intel/compilers_and_libraries_2020/linux/mkl/bin/mklvars.sh intel64 ilp64
--with-scalapack=no 只要查到有mkl库存在,就不用装openblas和scalapack了


如果要安装QUIP,PEXSI,plumed需要写上所有的install
./install_cp2k_toolchain.sh \
--math-mode=mkl \
--with-openmpi=install \
--with-scalapack=no \
--with-ptscotch=install \
--with-parmetis=install \
--with-metis=install \
--with-superlu=install \
--with-pexsi=install \
--with-quip=install \
--with-plumed=install

注:这里如果elpa编译报错没有通过,可以在./scripts/install_elpa.sh里的第84行的../configure前一行添加:
SCALAPACK_LDFLAGS="-L$MKL_HOME/lib/intel64 -lmkl_scalapack_lp64 -lmkl_gf_lp64 -lmkl_sequential \
                             -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -Wl,-rpath,$MKL_HOME/lib/intel64" \
SCALAPACK_FCFLAGS="-L$MKL_HOME/lib/intel64 -lmkl_scalapack_lp64 -lmkl_gf_lp64 -lmkl_sequential \
                             -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -I$MKL_HOME/include/intel64/lp64"
如果实在编译不过去elpa,建议直接--with-elpa=no,这样会略微影响到矩阵对角化的速度

都通过之后会显示:

Done!
Now copy:
  cp /opt/cp2k710/tools/toolchain/install/arch/* to the 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 /opt/cp2k710/tools/toolchain/install/setup
To build CP2K you should change directory:
  cd cp2k/
  make -j 112 ARCH=local VERSION="sopt sdbg ssmp popt pdbg psmp"



(4)编译CP2K
这时候编译cp2k所需要的所有库文件就都准备好了。按照提示:
cp /opt/cp2k710/tools/toolchain/install/arch/*  ../../arch/
source /opt/cp2k710/tools/toolchain/install/setup
cd ../../
make -j 112 ARCH=local VERSION=“popt psmp”


(5)编译CP2K完成之后测试
  1. make -j 112 ARCH=local VERSION=“popt psmp” test
复制代码
完成时候会显示:

Summary of the regression tester run from 2020-08-17_01-58-30 using local popt
Number of FAILED  tests 0
Number of WRONG   tests 0
Number of CORRECT tests 3273
Number of NEW     tests 8
Total number of   tests 3281


表示所有的测试全部通过。


(6)提交任务
  1. cp2k.popt cp2k.inp 1>cp2k.out 2>cp2k.err
复制代码





评分 Rate

参与人数
Participants 28
威望 +1 eV +92 收起 理由
Reason
yanghongwei + 2 赞!
DZW + 5
JamesBourbon + 3 好物!
madhatter + 3
ljpss43 + 3 谢谢
Sinner + 3 谢谢分享
lx506173258 + 4
Apostolus + 5 谢谢
plk412 + 3 谢谢分享
wypkdhd + 5 精品内容
gqjuly + 2 谢谢分享
plus + 3
cherushui + 4 谢谢
Allan + 1
Penson + 1 赞!
ZXW1993 + 2 好物!
GOmathchem + 2 实用,感谢
dmh1998dmh + 2
corei70715 + 5 谢谢
dark_cosmos + 5 GJ!

查看全部评分 View all ratings

1

帖子

0

威望

21

eV
积分
22

Level 1 能力者

99#
发表于 Post on 2025-6-11 20:40:43 | 只看该作者 Only view this author
您好,我在WSL2下Rocky Linux 9中编译CP2K但报错“Tests will run with 2 MPI ranks and 2 OpenMP threads each
-- Configuring incomplete, errors occurred!
make[3]: *** [/home/Chem/cp2k-2025.1/exts/build_dbcsr/Makefile:1010: cmake_check_build_system] Error 1
make[2]: *** [/home/Chem/cp2k-2025.1/exts/Makefile.inc:38: dbcsr] Error 2
make[1]: *** [/home/Chem/cp2k-2025.1/Makefile:129: ssmp] Error 2
make: *** [Makefile:124: all] Error 2”
请问可以怎么解决?

63

帖子

0

威望

365

eV
积分
428

Level 3 能力者

98#
发表于 Post on 2023-12-19 15:28:13 | 只看该作者 Only view this author
第二步出现了这种问题

NGNJNGX1G[TLU32@X{LY0{H.png (22.03 KB, 下载次数 Times of downloads: 71)

NGNJNGX1G[TLU32@X{LY0{H.png

19

帖子

0

威望

817

eV
积分
836

Level 4 (黑子)

97#
发表于 Post on 2023-8-21 15:04:01 | 只看该作者 Only view this author
请问各位老师有没有遇到过在“ Getting proc arch info using OpenBLAS tools”卡住的情况(在这个界面卡了几个小时

202308211503015404..png (54.15 KB, 下载次数 Times of downloads: 85)

202308211503015404..png

25

帖子

0

威望

311

eV
积分
336

Level 3 能力者

96#
发表于 Post on 2023-5-26 13:06:44 | 只看该作者 Only view this author
lr8616 发表于 2023-5-26 12:04
额。。自己还是没搞定,最后闲鱼200块钱。。。。

我也是

60

帖子

0

威望

689

eV
积分
749

Level 4 (黑子)

95#
发表于 Post on 2023-5-26 12:04:05 | 只看该作者 Only view this author
Janson_Shi 发表于 2023-5-22 19:01
请问你解决了吗?

额。。自己还是没搞定,最后闲鱼200块钱。。。。

25

帖子

0

威望

311

eV
积分
336

Level 3 能力者

94#
发表于 Post on 2023-5-22 19:01:22 | 只看该作者 Only view this author
lr8616 发表于 2023-2-28 12:35
请问elpa编译报错没有通过,按楼主说的添加了两行内容之后还是报错,config.log文件里看到有这样的几行:
...

请问你解决了吗?

60

帖子

0

威望

689

eV
积分
749

Level 4 (黑子)

93#
发表于 Post on 2023-2-28 12:35:58 | 只看该作者 Only view this author
请问elpa编译报错没有通过,按楼主说的添加了两行内容之后还是报错,config.log文件里看到有这样的几行:

configure:4289: /home/gauss/openmpi411/bin/mpic++ -V >&5
g++: error: unrecognized command line option '-V'
g++: fatal error: no input files
compilation terminated.

不知道是什么原因?还请大家指点~已上传config.log文件,谢谢!

config.log

26.94 KB, 下载次数 Times of downloads: 0

129

帖子

0

威望

1495

eV
积分
1624

Level 5 (御坂)

92#
发表于 Post on 2022-3-10 19:45:59 | 只看该作者 Only view this author
haibeih 发表于 2020-9-10 20:29
借个楼提醒一下,gcc版本最重要,特别注意用这种方法编译cp2k时,需要python也是用官网推荐的gcc版本编译 ...

我正在一个cluster上面编译cp2k 9.1,  用系统自带的gcc 10.1, libint出错, 选择安装,cp2k 自带脚本安装gcc 11.2, libxc出错, 把脚本里面的gcc 11.2 改为 9.3,gcc_sha256 码不匹配

55

帖子

0

威望

1108

eV
积分
1163

Level 4 (黑子)

91#
发表于 Post on 2021-12-24 12:30:17 | 只看该作者 Only view this author
为什么我都测试通过了,结尾了给我来个了报错?

202112241230131499..png (29.09 KB, 下载次数 Times of downloads: 106)

202112241230131499..png

41

帖子

0

威望

1096

eV
积分
1137

Level 4 (黑子)

90#
发表于 Post on 2021-12-1 14:26:12 | 只看该作者 Only view this author
archer 发表于 2021-12-1 12:27
抱歉,我也没有解决

好的,感谢您的回复

323

帖子

0

威望

4397

eV
积分
4720

Level 6 (一方通行)

89#
发表于 Post on 2021-12-1 12:27:13 | 只看该作者 Only view this author
Mentary 发表于 2021-11-28 15:14
请问您的问题解决了吗,我也遇到了这样的问题

抱歉,我也没有解决

41

帖子

0

威望

1096

eV
积分
1137

Level 4 (黑子)

88#
发表于 Post on 2021-11-28 15:14:37 | 只看该作者 Only view this author
archer 发表于 2020-9-17 18:30
make出现错误,请问您知道如何解决吗?
cp2k-7.1/Makefile:134: recipe for target 'all' failed
make[2] ...

请问您的问题解决了吗,我也遇到了这样的问题

QQ截图20211128151321.png (18.19 KB, 下载次数 Times of downloads: 103)

QQ截图20211128151321.png

2407

帖子

1

威望

5955

eV
积分
8382

Level 6 (一方通行)

87#
发表于 Post on 2021-10-13 11:49:20 | 只看该作者 Only view this author
叶子之旅 发表于 2021-10-13 08:58
请问下王老师,我之前在本地和singularity上成功编译了CP2K,现在想试试docker,遇到点问题 ...

看docker 手册呀……
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

3

帖子

0

威望

61

eV
积分
64

Level 2 能力者

86#
发表于 Post on 2021-10-13 08:58:24 | 只看该作者 Only view this author
abin 发表于 2021-3-20 20:08
看大家编译过程,
好折腾呀。

请问下王老师,我之前在本地和singularity上成功编译了CP2K,现在想试试docker,遇到点问题。我在toolchain目录下运行"docker build cp2k/toolchain ."后输出以下内容:
Done!
Now copy:
  cp /opt/cp2k-toolchain/install/arch/* to the 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 /opt/cp2k-toolchain/install/setup
To build CP2K you should change directory:
  cd cp2k/
  make -j 48 ARCH=local VERSION="ssmp sdbg psmp pdbg"

arch files for GPU enabled CUDA versions are named "local_cuda.*"
arch files for coverage versions are named "local_coverage.*"

Note that these pre-built arch files are for the GNU compiler, users have to adapt them for other compilers.
It is possible to use the provided CP2K arch files as guidance.
Removing intermediate container a79becc429fb
---> ba5e84dea122
Successfully built ba5e84dea122
Successfully tagged cp2k/toolchain:latest

按照提示应该是还要编译CP2K本体吧?我尝试docker container run -it cp2k/toolchain bash进入容器后,发现无法按照以上提示进行make编译操作,因为会报错。查看后发现相对于源代码包里的完整文件,容器内少了很多文件,难道是要把完整的源代码文件复制到容器里进行编译?还是需要docker其他的Dockerfile呢(我看到CP2K源代码包里有很多其他的Dockerfile)?麻烦老师给个思路,谢谢~

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

GMT+8, 2025-8-15 20:17 , Processed in 0.455578 second(s), 31 queries , Gzip On.

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