计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1774|回复 Reply: 3

[CP2K] Conda环境下编译MPI并行版CP2K-9.1(无libint库,不能计算杂化泛函)

[复制链接 Copy URL]

55

帖子

1

威望

1640

eV
积分
1715

Level 5 (御坂)

发表于 Post on 2022-4-21 20:24:56 | 显示全部楼层 Show all |阅读模式 Reading model
Conda环境下编译CP2K

1,写在前面
      CP2K的编译受编译器、系统版本等多种因素的影响,前些阶段,在编译CP2K时,尝试了toolchain法(http://sobereva.com/586)、docker-singularity法(http://bbs.keinsci.com/thread-25773-1-1.html),然而在自己的服务器上(Centos8, gcc 8.5.0),即使编译成功,在运行时也会遇到mpi运行、cp2k运行报错(例如KS energy is an abnormal value,大概率是在编译某些库时,某些依赖或某些库的缺失)等错误。为此寻找一种普适的方法编译CP2K可以最大限度的避免系统环境对CP2K编译的影响。本文介绍了基于Conda环境下编MPI并行版的CP2K-9.1,其原始方案来自于计算化学公社的王老师(用户名:abin),他所提供方案的参考视频(https://www.bilibili.com/video/BV1244y117pG?share_source=copy_web)中编译的是CP2K-8.2,然而按照其步骤运行时,会产生“error about sirius_MOD_sirius_option_get_logical”的报错,开发者解释说(https://issuekiller.com/issues/cp2k/cp2k/60359898),是由于对sirius库进行了更新,因此不能用来编译CP2K-8.2,建议采用CP2K-9.1。基于上述情况,我采用王老师的方案结合编译中的实际情况编译了CP2K-9.1,并成功运行了官方测试中的一些算例和卢老师博文中的部分算例(http://sobereva.com/587因为组件中没有libint库,因此不能使用杂化泛函,其他计算可做)。现在向大家介绍一下编译过程,希望能给大家一些帮助,同时也向卢老师、王老师以及计算化学公社的社友们表示感谢,你们写的资料与讨论,给我编译CP2K非常好的参考。

2,Conda环境的安装
       Conda环境的安装,可参考王老师(计算化学公社id: abin)的视频(https://www.bilibili.com/video/BV1Xf4y1G7vQ/),这里说一下文字版的步骤,如下:  

      1)利用wget下载miniconda安装程序,需要机器能访问互联网;
  1. wget [url]https://repo.anaconda.com/miniconda/Miniconda3-py37_4.11.0-Linux-x86_64.sh[/url]
复制代码
      2)运行安装程序,按照提示输入yes或回车;
  1. bash Miniconda3-py37_4.11.0-Linux-x86_64.sh
复制代码
      3)打开.bashrc文件,在里面添加“conda config --set auto_activate_base false”语句,避免Conda环境在进入终端的自启动。重新进入终端后,输入"conda"指令,出现指令介绍,表明conda安装成功。

3,创建CP2K-9.1的环境并编译

       1)首先是在conda中创建名为“cp2k-v9.1”的环境;
  1. conda create --name cp2k-v9.1
复制代码
      2)进入cp2k-v9.1的conda环境,并编译cp2k-9.1(https://anaconda.org/conda-forge/cp2k),等待屏幕提示完成;
  1. conda env list #罗列conda环境
  2. conda activate cp2k-v9.1 #进入cp2k-v9.1的环境
  3. conda install -c conda-forge cp2k #默认安装cp2k-v9.1
复制代码
       3)创建CP2K_DATA_DIR目录的环境变量,下载cp2k-9.1的安装包(https://github.com/cp2k/cp2k/rel ... .0/cp2k-9.1.tar.bz2),网络好的话(**上网),可以直接用wget下载,网络不好的话,可利用Github文件的加速网站(https://ghproxy.com/)下载,把上述链接输入到网站中便能下载;
  1. wget https://github.com/cp2k/cp2k/releases/download/v9.1.0/cp2k-9.1.tar.bz2
  2. or
  3. wget https://ghproxy.com/https://github.com/cp2k/cp2k/releases/download/v9.1.0/cp2k-9.1.tar.bz2
  4. tar -jxvf cp2k-9.1.tar.bz2
  5. vi ~/.bashrc
  6. export CP2K_DATA_DIR=/home/user/cp2k-9.1/data #cp2k-9.1的放置目录任意
复制代码
      4)重启终端,安装openmpi-4.1.1
  1. conda activate cp2k-v9.1 #重启终端后,重新进入cp2k-v9.1的conda环境
复制代码
        如果此时在终端中输入cp2k.psmp,会出现mpi的运行错误,提示"libmpi.so.40:cannot open shared object file",其原因是大概率是python环境中的MPI无法被调用,可以加入到.bashrc文件中,使其调用(https://stackoverflow.com/questi ... -shared-object-file)。在.bashrc文件中加入miniconda3自身所携带的openmpi的环境变量,发现运行时仍然会报错,这大概率是因为,python中的openmpi可能存在组件不完善的情况。
          我们可在官网下载openmpi-4.1.1的安装包,并参考卢老师的帖子安装openmpi-4.1.1(http://sobereva.com/451)。安装完成后,重新进入终端,输入“conda activate cp2k-v9.1”,进入conda运行环境,此时输入“cp2k.psmp -v”,能看到cp2k的编译信息。

4,算例测试
          测试了CP2K的一些官方算例,和sob老师博文(http://sobereva.com/587)中的算例,都能正常运行(杂化泛函不能计算,原始组件中缺少libint库,不知道后续开发者会不会更新),运行指令如下:
  1. nohup cp2k.psmp *.inp > *.out &      #符号“*”处代表具体文件名
  2. or
  3. nohup  cp2k.psmp *.inp 1 > *.out  2 > *.err &
复制代码
         上述是以openmpi的方式运行cp2k,默认使用机器的全部核心,如果想以MPI的方式运行,可在.bashrc中输入“export OMP_NUM_THREADS=1”,保存退出后,重新进入终端,用下列语句运行:
  1. mpirun -np 4 cp2k.psmp *.inp 1>*.out 2>*.err
复制代码
          运行上述指令后,top进入终端,可以看到4个cp2k.psmp进程在运行,其中的4可以根据实际情况修改为自己想要的核心数。运行完计算后,可输入“conda deactivate”,退出cp2k-v9.1的运行环境。

5,总结
        希望本次帖子能够对编译CP2K的伙伴们一些有益的参考,本文的排版没有调整(考虑到多次调整,管理员审核也比较麻烦,以后发帖会调整好排版)。

评分 Rate

参与人数
Participants 1
威望 +1 收起 理由
Reason
sobereva + 1

查看全部评分 View all ratings

Just for love

1852

帖子

1

威望

4098

eV
积分
5970

Level 6 (一方通行)

发表于 Post on 2022-4-22 10:06:29 | 显示全部楼层 Show all
本帖最后由 abin 于 2022-4-22 10:24 编辑

这有类似的视频教程
【CP2K v8.2.0 MPI并行版安装 无需root授权-哔哩哔哩】 https://b23.tv/BPLvyC7

实际上,就是采用官方提供的预编译版本。
查看支持的版本, 指令如下:
  1. conda search cp2k --channel conda-forge
复制代码

看到类似信息:
Loading channels: done
# Name                       Version           Build  Channel
cp2k                           6.1.0      h78d79aa_1  conda-forge
cp2k                           6.1.0      hc6cf775_2  conda-forge
cp2k                           6.1.0      hc6cf775_3  conda-forge
cp2k                           7.1.0      h236a147_1  conda-forge
cp2k                           7.1.0      h7866383_4  conda-forge
cp2k                           7.1.0      h7866383_5  conda-forge
cp2k                           7.1.0      hc6cf775_1  conda-forge
cp2k                           7.1.0      hdefa2d7_2  conda-forge
cp2k                           7.1.0      hdefa2d7_3  conda-forge
cp2k                           7.1.0 py38_nompi_1006  conda-forge
cp2k                           7.1.0 py38_nompi_1007  conda-forge
cp2k                           7.1.0  py38_openmpi_6  conda-forge
cp2k                           7.1.0  py38_openmpi_7  conda-forge
cp2k                           8.1.0 py38_nompi_1000  conda-forge
cp2k                           8.1.0 py38_nompi_1001  conda-forge
cp2k                           8.1.0 py38_nompi_1002  conda-forge
cp2k                           8.1.0 py38_nompi_1003  conda-forge
cp2k                           8.1.0 py38_nompi_1004  conda-forge
cp2k                           8.1.0 py38_nompi_1005  conda-forge
cp2k                           8.1.0  py38_openmpi_0  conda-forge
cp2k                           8.1.0  py38_openmpi_1  conda-forge
cp2k                           8.1.0  py38_openmpi_2  conda-forge
cp2k                           8.1.0  py38_openmpi_3  conda-forge
cp2k                           8.1.0  py38_openmpi_4  conda-forge
cp2k                           8.1.0  py38_openmpi_5  conda-forge
cp2k                           8.2.0 py38_nompi_1000  conda-forge
cp2k                           8.2.0 py38_nompi_1001  conda-forge
cp2k                           8.2.0  py38_openmpi_0  conda-forge
cp2k                           8.2.0  py38_openmpi_1  conda-forge
cp2k                           9.1.0  py39_openmpi_0  conda-forge
选择其中一个版本安装, 比如:
  1. conda install -c conda-forge cp2k=8.2.0=py38_openmpi_1
复制代码
大概如此.
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
App,  https://gitee.com/hpc4you/linux
hpc4you toolkit,  https://gitee.com/hpc4you/hpc
电邮hpc4you@163.com VX: hpc4you

55

帖子

1

威望

1640

eV
积分
1715

Level 5 (御坂)

 楼主 Author| 发表于 Post on 2022-4-22 13:35:11 | 显示全部楼层 Show all
abin 发表于 2022-4-22 10:06
这有类似的视频教程
【CP2K v8.2.0 MPI并行版安装 无需root授权-哔哩哔哩】 https://b23.tv/BPLvyC7

是的,王老师,不过官方提供的python环境下的python版,没有libint库,不能做杂化泛函的相关计算,不知道后续会不会更新。目前来看,编译CP2K最为普适的方法是docker-singularity法,这种容器的思路对编译其他软件都很有作用,很大程度上能够避免系统、编译器等系统环境的影响。
Just for love

1852

帖子

1

威望

4098

eV
积分
5970

Level 6 (一方通行)

发表于 Post on 2022-4-22 20:55:11 | 显示全部楼层 Show all
Yan_njit 发表于 2022-4-22 13:35
是的,王老师,不过官方提供的python环境下的python版,没有libint库,不能做杂化泛函的相关计算,不知道 ...

官方提供的预编译二进制,都是精简版。

组件最全的,是官方提供的docker版本。
默认GNU+OpenMPI+all-plugins,
直接docker build 即可。

cp2k的部分组件,很挑剔编译器的。
GNU基本无痛,intel就不好说了。

不过,intel版本,也并非绝对的效率最佳。
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
App,  https://gitee.com/hpc4you/linux
hpc4you toolkit,  https://gitee.com/hpc4you/hpc
电邮hpc4you@163.com VX: hpc4you

本版积分规则 Credits rule

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

GMT+8, 2023-2-2 22:25 , Processed in 0.673948 second(s), 23 queries .

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