请选择 进入手机版 | 继续访问电脑版
第13届北京科音初级量子化学培训班将于10月5~8日于北京举办,请点击此链接查看详情。这是新人一次性正确、完整学习量子化学计算的最好、最快机会,能少走无数弯路,欢迎参加并相互转告!(已报满)

计算化学公社

 找回密码
 现在注册!
查看: 1098|回复: 17

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

[复制链接]

101

帖子

2

威望

1132

eV
积分
1273

Level 4 (黑子)

发表于 2020-8-18 12:49:30 | 显示全部楼层 |阅读模式
本帖最后由 啦啦黑还黑 于 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版本的编译。

1.png

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

cp2k的编译方法很多。这里介绍一些常见的方法:
2.png
(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运行的大致流程图:
微信截图_20200818130919.png

(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
复制代码





评分

参与人数 19威望 +1 eV +61 收起 理由
wypkdhd + 5 精品内容
gqjuly + 2 谢谢分享
plus + 3
cherushui + 4 谢谢
Allan + 1
Penson + 1 赞!
ZXW1993 + 2 好物!
GOmathchem + 2 实用,感谢
dmh1998dmh + 2
corei70715 + 5 谢谢
dark_cosmos + 5 GJ!
朙天儿 + 5 赞!
倪宇晴 + 5 赞!
ggdh + 5 感谢大佬分享!
喵星大佬 + 5 赞!
doublezhang + 3 赞!
thanhtam + 5
rabbitkiller + 1 赞!
sobereva + 1

查看全部评分

45

帖子

0

威望

1418

eV
积分
1463

Level 4 (黑子)

发表于 2020-8-18 20:24:35 | 显示全部楼层
太赞了。不过科学上网很重要啊,不科学连库文件都下不下来
时也,命也

10

帖子

0

威望

65

eV
积分
75

Level 2 能力者

发表于 2020-8-19 09:01:48 | 显示全部楼层
赞!

25

帖子

0

威望

440

eV
积分
465

Level 3 能力者

发表于 2020-8-19 10:16:48 | 显示全部楼层
干货满满

87

帖子

0

威望

874

eV
积分
961

Level 4 (黑子)

Nerv

发表于 2020-8-27 21:59:32 | 显示全部楼层
请问在天河二号上安装应该按照哪种方法呢
God's in his heaven,all rights with the world

7

帖子

0

威望

21

eV
积分
28

Level 2 能力者

发表于 2020-8-30 12:50:01 | 显示全部楼层
这东西啥用啊?

71

帖子

0

威望

159

eV
积分
230

Level 3 能力者

发表于 2020-8-30 15:10:04 | 显示全部楼层
cp2k是我目前编译的软件中最难编译的一个,如果只是基本库的话还比较简单,最难的是把所有相应的库都找齐并安装好。gcc的编译还算比较顺利,intel的我自己还没试过。刘博分享这个蛮好的,但是估计每台机器都会出现各种独特的问题,装7.1版最主要的确实是gcc的版本

14

帖子

0

威望

253

eV
积分
267

Level 3 能力者

发表于 2020-9-2 16:13:36 | 显示全部楼层
我按照上述步骤,到了安装SIRIUS的时候报错:
==================== Installing SIRIUS ====================
sirius_6.4.1.tar.gz is found

Installing from scratch into /opt/cp2k-7.1/tools/toolchain/install/sirius-6.4.1

ERROR: (./scripts/install_sirius.sh, line 130) Non-zero exit code detected.

gcc,g++, gfortran版本都是官网推荐的8.3.1。log文件里说是和vdwxc_init_mpi有关,不知道是不是编译器的问题,哎~

已经另外发帖求助了,各位大神如有答案不胜感激,卡着好几天了~谢谢

http://bbs.keinsci.com/thread-19146-1-1.html

101

帖子

2

威望

1132

eV
积分
1273

Level 4 (黑子)

 楼主| 发表于 2020-9-2 16:23:13 | 显示全部楼层
haibeih 发表于 2020-9-2 16:13
我按照上述步骤,到了安装SIRIUS的时候报错:
==================== Installing SIRIUS ================= ...

这个是用于纯平面波计算的,原理类似QE,可以把这个功能跳过去 --with-sirius=no     并不影响其他功能正常使用。 cp2k主打的是GPW方法,想用纯平面波方法,直接换qe或者vasp吧。

14

帖子

0

威望

253

eV
积分
267

Level 3 能力者

发表于 2020-9-3 15:48:48 | 显示全部楼层
啦啦黑还黑 发表于 2020-9-2 16:23
这个是用于纯平面波计算的,原理类似QE,可以把这个功能跳过去 --with-sirius=no     并不影响其他功能正 ...

谢谢你啊,按照你的方法( --with-sirius=no)确实编译通过了,需要一点注意的的是输入make -j 112 ARCH=local VERSION=“popt psmp”的时候,可能会出现“mpirun has detected an attempt to run as root.”的错误,这时候请参考Sobereva的文章http://sobereva.com/409

另外,我在做测试的时候(make -j 112 ARCH=local VERSION=“popt psmp” test),出现了以下错误,
************************************************************************************
/opt/cp2k-7.1/regtesting/local/psmp/TEST-local-psmp-2020-09-03_03-37-50/UNIT/libcp2k_unittest.out
[localhost:1362923] *** Process received signal ***
[localhost:1362923] Signal: Segmentation fault (11)
[localhost:1362923] Signal code: Address not mapped (1)
[localhost:1362923] Failing at address: 0xffffffff30
[localhost:1362923] [ 0] /lib64/libpthread.so.0(+0x12dd0)[0x7f9db63addd0]
[localhost:1362923] [ 1] /opt/cp2k-7.1/tools/toolchain/install/openmpi-4.0.1/lib/libopen-pal.so.40(+0xb48e5)[0x7f9db72198e5]
[localhost:1362923] [ 2] /opt/cp2k-7.1/tools/toolchain/install/openmpi-4.0.1/lib/libopen-pal.so.40(+0xb4863)[0x7f9db7219863]
[localhost:1362923] [ 3] /opt/cp2k-7.1/tools/toolchain/install/openmpi-4.0.1/lib/libopen-pal.so.40(+0xb4863)[0x7f9db7219863]
[localhost:1362923] [ 4] /opt/cp2k-7.1/tools/toolchain/install/openmpi-4.0.1/lib/libopen-pal.so.40(opal_hwloc201_hwloc_topology_load+0x36e)[0x7f9db721f7ae]
[localhost:1362923] [ 5] /opt/cp2k-7.1/tools/toolchain/install/openmpi-4.0.1/lib/libopen-pal.so.40(opal_hwloc_base_get_topology+0xf54)[0x7f9db71ee784]
[localhost:1362923] [ 6] /opt/cp2k-7.1/tools/toolchain/install/openmpi-4.0.1/lib/openmpi/mca_ess_hnp.so(+0x5236)[0x7f9db4bb2236]
[localhost:1362923] [ 7] /opt/cp2k-7.1/tools/toolchain/install/openmpi-4.0.1/lib/libopen-rte.so.40(orte_init+0x29a)[0x7f9db747e26a]
[localhost:1362923] [ 8] /opt/cp2k-7.1/tools/toolchain/install/openmpi-4.0.1/lib/libopen-rte.so.40(orte_submit_init+0x912)[0x7f9db74f6692]
[localhost:1362923] [ 9] mpiexec[0x400f53]
[localhost:1362923] [10] /lib64/libc.so.6(__libc_start_main+0xf3)[0x7f9db5ffc6a3]
[localhost:1362923] [11] mpiexec[0x400dde]
[localhost:1362923] *** End of error message ***
EXIT CODE:  139  MEANING:  RUNTIME FAIL
**************************************************
导致所有tests全部失败,
--------------------------------- Summary --------------------------------
Number of FAILED  tests 2789
Number of WRONG   tests 0
Number of CORRECT tests 0
Number of NEW     tests 0
Total number of   tests 2789
GREPME 2789 0 0 0 2789 X

Summary: correct: 0 / 2789; failed: 2789; 3min
Status: FAILED

不知道楼主遇到过没有,应该是openmpi的事儿~
哎,编译cp2k实在是愁人

谢谢你!

59

帖子

0

威望

1363

eV
积分
1422

Level 4 (黑子)

发表于 2020-9-5 00:46:06 | 显示全部楼层
Installation process of CP2K under Arch Linux:
`trizen -S cp2k`
or whatever pacman wrapper you use.
It compiles along with all necessary dependencies and takes most appropriate compiler flags to be flawless and fast.

14

帖子

0

威望

253

eV
积分
267

Level 3 能力者

发表于 2020-9-10 20:29:22 | 显示全部楼层
本帖最后由 haibeih 于 2020-9-10 20:51 编辑
啦啦黑还黑 发表于 2020-9-2 16:23
这个是用于纯平面波计算的,原理类似QE,可以把这个功能跳过去 --with-sirius=no     并不影响其他功能正 ...

借个楼提醒一下,gcc版本最重要,特别注意用这种方法编译cp2k时,需要python也是用官网推荐的gcc版本编译的,即python和cp2k都要gcc、g++、g-fortran 7.3、7.5、8.3、9.3版本编译。请一定要检查!!!

另外,楼主提供的升级或者安装gcc的方法中(https://www.liuhaolin.com/linux/535.html),./configure时候别忘记加往“--enable-languages=c,c++”命令中再加上fortran,这样gcc,g++和g-fortran会一起升级!

最后,发现openmpi还是自己装的好些,不容易出错,还可以安装最新4.0.5版,用“--with-openmpi=system”就好。
我的系统是Centos8,所以可能对同样系统的朋友有些参考!

500

帖子

2

威望

1098

eV
积分
1638

Level 5 (御坂)

发表于 2020-9-11 18:06:52 | 显示全部楼层
本帖最后由 snljty 于 2020-9-11 18:10 编辑

学长好,请问一下这个报错。
我加载了intel mkl,并设置了--with-openblas=no,但是编译过程中好像还是自动下载了OpenBLAS并且失败报错。
我用是CentOS 7.6,cp2k 7.1,Openmpi自己编译的3.1.4,Intel全家桶2019,自己编译的gcc 8.3.0。toolchain参数是
  1. ./install_cp2k_toolchain.sh --with-openmpi=system --math-mode=mkl --with-scalapack=no --with-openblas=no --with-mkl=system
复制代码

/opt/intel/compilers_and_libraries_2019.5.281/linux/mkl/lib/intel64_lin在LD_LIBRARY_PATH里。请问为什么会这样呢?谢谢!
报错信息如下
  1. MPI is detected and it appears to be OpenMPI
  2. nvcc not found, disabling CUDA by default
  3. Compiling with 72 processes.
  4. ==================== Finding GCC from system paths ====================
  5. path to gcc is  /home/zz/gcc-8.3.0/bin/gcc
  6. path to g++ is  /home/zz/gcc-8.3.0/bin/g++
  7. path to gfortran is  /home/zz/gcc-8.3.0/bin/gfortran
  8. Found include directory /usr/include
  9. Found lib directory /home/zz/gcc-8.3.0/lib64
  10. Step gcc took 0.00 seconds.
  11. ==================== Getting proc arch info using OpenBLAS tools ====================
  12. OpenBLAS-0.3.6.tar.gz: FAILED
  13. sha256sum: WARNING: 1 computed checksum did NOT match
  14. removed ‘OpenBLAS-0.3.6.tar.gz’
  15. ERROR: (/home/zz/cp2k-7.1/tools/toolchain/scripts/get_openblas_arch.sh) Checksum of OpenBLAS-0.3.6.tar.gz could not be verified, abort.
  16. ERROR: (./scripts/setup_buildtools.sh, line 38) Non-zero exit code detected.
复制代码
$MKLROOT是/opt/intel/compilers_and_libraries_2019.5.281/linux/mkl

14

帖子

0

威望

253

eV
积分
267

Level 3 能力者

发表于 6 天前 | 显示全部楼层
本帖最后由 haibeih 于 2020-9-14 08:21 编辑
snljty 发表于 2020-9-11 18:06
学长好,请问一下这个报错。
我加载了intel mkl,并设置了--with-openblas=no,但是编译过程中好像还是自 ...

你先去toolchain看看报错文件,输入find -name *.log。找到对应OpenBLAS的报错呀~上传附件看看
我估计是版本和编译器不兼容的问题,一般都是这样。

500

帖子

2

威望

1098

eV
积分
1638

Level 5 (御坂)

发表于 6 天前 | 显示全部楼层
haibeih 发表于 2020-9-14 08:20
你先去toolchain看看报错文件,输入find -name *.log。找到对应OpenBLAS的报错呀~上传附件看看
我估计是 ...

谢谢~第一次装CP2K,把OpenBLAS下载了一个最后编译成功了,下次再慢慢试吧
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2020-9-20 15:49 , Processed in 0.297511 second(s), 29 queries .

快速回复 返回顶部 返回列表