计算化学公社

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

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

[复制链接 Copy URL]

66

帖子

1

威望

2725

eV
积分
2811

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
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

2407

帖子

1

威望

5952

eV
积分
8379

Level 6 (一方通行)

2#
发表于 Post on 2022-4-22 10:06:29 | 只看该作者 Only view this author
本帖最后由 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
为您专属定制的高性能计算解决方案

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

66

帖子

1

威望

2725

eV
积分
2811

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2022-4-22 13:35:11 | 只看该作者 Only view this author
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

2407

帖子

1

威望

5952

eV
积分
8379

Level 6 (一方通行)

4#
发表于 Post on 2022-4-22 20:55:11 | 只看该作者 Only view this author
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
为您专属定制的高性能计算解决方案

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

3

帖子

0

威望

28

eV
积分
31

Level 2 能力者

5#
发表于 Post on 2023-7-30 18:29:41 | 只看该作者 Only view this author
各位好,请问有人试过在conda的CP2K中运行make ...... libcp2k命令,得到libcp2k.a,以被gromacs调用吗?或者docker-singularity版的CP2K有可能被gromacs调用吗?

66

帖子

1

威望

2725

eV
积分
2811

Level 5 (御坂)

6#
 楼主 Author| 发表于 Post on 2023-7-31 08:46:57 | 只看该作者 Only view this author
neoxialulu 发表于 2023-7-30 18:29
各位好,请问有人试过在conda的CP2K中运行make ...... libcp2k命令,得到libcp2k.a,以被gromacs调用吗?或 ...

这个可以自己试一下,应该没什么问题,可能有的时候需要编译的时候,加入路径,具体可以请教论坛的其他人,或者自己试一下,这个问题,在我的研究中不太涉及
Just for love

66

帖子

1

威望

2725

eV
积分
2811

Level 5 (御坂)

7#
 楼主 Author| 发表于 Post on 2023-7-31 08:50:53 | 只看该作者 Only view this author
本帖最后由 Yan_njit 于 2023-7-31 08:54 编辑
neoxialulu 发表于 2023-7-30 18:29
各位好,请问有人试过在conda的CP2K中运行make ...... libcp2k命令,得到libcp2k.a,以被gromacs调用吗?或 ...

这有两个帖子你可以参考一下,
http://bbs.keinsci.com/thread-21783-1-1.html
Gromacs与cp2k联动使用plumed做QM/MM增强采样;
https://github.com/CondaPereira/gromacs_cp2k_singularity/releases
gromacs与cp2k联用插件,这个链接国内打开慢,最好
Just for love

3

帖子

0

威望

28

eV
积分
31

Level 2 能力者

8#
发表于 Post on 2023-8-2 00:13:22 | 只看该作者 Only view this author
谢谢您的帮助。我进行尝试后,发现conda版cp2k要make出library文件可能比较困难,因为该版本已经预编译好,文件结构和tool chanin版本差很多,也缺少Makefile。联用插件下载后为SIF镜像文件,可以用singularity(v3.5)运行,可以用grompp模块里的一些功能,但mdrun的时候出错了,后续debug一下可能可以用。

另一方面,我用依赖全靠install的办法终于tool chain完整编译了cp2k v9.1,然而后续装gromacs时还是找cp2k的library文件出错,真是艰难

66

帖子

1

威望

2725

eV
积分
2811

Level 5 (御坂)

9#
 楼主 Author| 发表于 Post on 2023-8-16 09:37:07 | 只看该作者 Only view this author
neoxialulu 发表于 2023-8-2 00:13
谢谢您的帮助。我进行尝试后,发现conda版cp2k要make出library文件可能比较困难,因为该版本已经预编译好, ...

可以尝试较低的版本的联用,看效果怎么样
Just for love

本版积分规则 Credits rule

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

GMT+8, 2025-8-14 18:49 , Processed in 0.269960 second(s), 27 queries , Gzip On.

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