计算化学公社

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

[CP2K] 使用intel全家桶编译cp2k8.2

[复制链接 Copy URL]

464

帖子

11

威望

3954

eV
积分
4638

Level 6 (一方通行)

本帖最后由 丁越 于 2021-10-3 13:16 编辑

使用intel全家桶编译cp2k8.2

一、前言
cp2k.8.x的toolchain安装支持intel mpi了,使用Intel mpi的cp2k要比open mpi的要快不少。同时,自2021年intel全家桶(我们通常指的“Intel Parallel Studio XE”在已经免费了,而且延续多年的集成了Icc,ifort,Mkl,intel mpi的Intel Parallel Studio XE已经升级成为了intel oneAPI HPC toolkit,里面包含了oneAPI Base Toolkit和oneAPI HPC Toolkit两块,前者包含了icc,DPC++/C++编译器和MKL数学库等却不含有MPI库,后者包含了DPC++/C++、fortran编译器等却不含有MKL库,因此要想安装完整的Intel全家桶就得把这两者都安装上,而且后者依赖前者。下面结合社长编译cp2k的博文谈谈如何安装Intel mpi的cp2k。
二、安装步骤
1.安装intel oneAPI HPC toolkit
官网网址是https://software.intel.com/content/www/us/en/develop/articles/free-intel-software-developer-tools.html#,在intel oneAPI HPC toolkit中先选择get the base kit,操作系统选linux,distribution选择默认的recommand即可,安装类型推荐使用online,前提是服务器的网络连接状况良好。在右侧还给出了wget下载方式(wget https://registrationcenter-downl ... _p_2021.3.0.3219.sh) ,这里我们在服务器上直接wget下载最为方便。接下来下载HPC toolkit,同上,我们这里直接wget下载(wget https://registrationcenter-downl ... _p_2021.3.0.3230.sh)。并且将下载好的两个.sh安装包赋予可执行权限(chmod +x xxx)。


为了方便intel oneAPI HPC toolkit的安装,强烈推荐使用服务器图形界面安装,首先安装oneAPI Base Toolkit,输入./l_BaseKit_p_2021.3.0.3219.sh,接下来就是一路确认就行(第一步在安装中会有一个小三角的警示符,不用管)。如果你是个人用户安装,默认安装目录是~/Intel/oneapi,如果是root用户,默认安装目录是/opt/intel/oneapi。安装完成后进行oneAPI HPC Toolkit的安装,输入./l_HPCKit_p_2021.3.0.3230.sh,一路确认即可。


安装完成后,在~/.bashrc中加入source /home/xxx/intel/oneapi/setvars.sh(路径更具实际情况修改)。


2、编译cp2k.8.2
关于cp2k的具体编译操作,这里就不再累述,这里只对社长编译cp2k的博文做一些修改的地方加以说明,其他操作与博文一致即可。

首先确保~/.bashrc的环境变量里把其他的MKL,MPI库的路径注释,断开终端重新进入后,若发现:: initializing oneAPI environment ...
-bash: BASH_VERSION = 4.4.20(1)-release
:: advisor -- latest
:: ccl -- latest
:: clck -- latest
:: compiler -- latest
:: dal -- latest
:: debugger -- latest
:: dev-utilities -- latest
:: dnnl -- latest
:: dpcpp-ct -- latest
:: dpl -- latest
:: inspector -- latest
:: intelpython -- latest
:: ipp -- latest
:: ippcp -- latest
:: ipp -- latest
:: itac -- latest
:: mkl -- latest
:: mpi -- latest
:: tbb -- latest
:: vpl -- latest
:: vtune -- latest
:: oneAPI environment initialized ::
这样就表示编译cp2k所需的intel MKL和intel MPI已经准备好了。进入到cp2k-8.2/tools/toolchain/目录下,然后输入./install_cp2k_toolchain.sh --with-sirius=no --with-intelmpi=system --with-plumed=install 开始编译。注意的一点是,尽管 make -j 4 ARCH=local VERSION="ssmp psmp"中写明了要编译ssmp和psmp两个版本,但是最终在exe/local目录下我们只看到了ssmp版本,这是因为cp2k.8.2版本默认只配置ssmp版本,所以用这个即可。


另外的一点改动是将export OMP_NUM_THREADS=提交任务核心数 加入到~/.bashrc(对于个人用户来说)。尽管cp2k.ssmp提交任务默认使用全部核心,简单测试了一个任务(机子36核),我发现不使用export OMP_NUM_THREADS=36时,cp2k.ssmp用36核计算每轮SCF时长平均为5.3s,而export OMP_NUM_THREADS=36后,每轮SCF平均时间缩短为了3.5s。


下面是使用intel mpi的cp2k.8.2和社长《使用Multiwfn非常便利地创建CP2K程序的输入文件》中的几个例子简单比较下每轮SCF平均时长(社长博文文件中的几个例子用的是E5-2696v3,openmpi的cp2k.8.1)。测试使用的机子是E5-2696v3,36核,128GB,cp2k.8.2,cp2k.ssmp。
intel mpi open mpi
COF-PBE 3.6s 10.9s
COF-B97M-rV 16.8s 23.9s
Cu 0.6s 2.2s

小菜鸟一个,如果有写的不对的地方还请各位老师批评指正^-^


评分 Rate

参与人数
Participants 8
eV +39 收起 理由
Reason
Jsdwxdzy + 1 好物!
PoorChaos + 5 好物!
physics_xw + 5 好物!
伞阳 + 5 好物!
ccjjww25 + 5 GJ!
Aridea + 5 好物!
Penson + 3 谢谢分享
sobereva + 10

查看全部评分 View all ratings

自由发挥,野蛮生长

17

帖子

0

威望

225

eV
积分
242

Level 3 能力者

43#
发表于 Post on 2022-5-9 17:08:02 | 只看该作者 Only view this author
akakcolin 发表于 2021-9-12 11:31
跑长时间内存增加  一般就是程序内存泄露,是intel有些版本的mpi有bug,之前曾遇到2019编译的有问题,换 ...

那请问哪个版本的Intelmpi解决了这个问题呢?2019.updat1或者2020,2021可以吗

54

帖子

0

威望

591

eV
积分
645

Level 4 (黑子)

42#
发表于 Post on 2022-3-8 03:13:15 | 只看该作者 Only view this author
akakcolin 发表于 2021-9-12 12:19
既然楼主都用oneapi构建整个编译环境,我一般默认剩下的源程序的build 都用intel的,这有个路径依赖的惯 ...

楼主,能不能共享下你用one编译的全过程,非常感谢

54

帖子

0

威望

591

eV
积分
645

Level 4 (黑子)

41#
发表于 Post on 2022-3-8 03:11:28 | 只看该作者 Only view this author
djjj148 发表于 2021-9-12 09:11
我用楼主的方法编译出了psmp,gcc-8.3.0,intel2018u4,速度很快,甚至比intel编译的7.1还快一点点。
对于 ...

楼主,2018u4,能不能共享一份呢,谢谢

157

帖子

0

威望

2107

eV
积分
2264

Level 5 (御坂)

40#
发表于 Post on 2021-11-8 10:42:08 | 只看该作者 Only view this author
丁越 发表于 2021-11-8 10:33
如果懒得自己编译easybuild的话,yum直接下载module这个软件也行,也可以实现module模块化管理。

完全不会啊,新手
我慢慢摸索

464

帖子

11

威望

3954

eV
积分
4638

Level 6 (一方通行)

39#
 楼主 Author| 发表于 Post on 2021-11-8 10:33:07 | 只看该作者 Only view this author
PoorChaos 发表于 2021-11-8 10:12
好 我摸索一下怎么用easybuild

如果懒得自己编译easybuild的话,yum直接下载module这个软件也行,也可以实现module模块化管理。
自由发挥,野蛮生长

157

帖子

0

威望

2107

eV
积分
2264

Level 5 (御坂)

38#
发表于 Post on 2021-11-8 10:12:40 | 只看该作者 Only view this author
丁越 发表于 2021-11-8 10:01
个人服务器就没必要使用module模块化管理了,但是集群得用。easybuild比较好用。

好 我摸索一下怎么用easybuild

464

帖子

11

威望

3954

eV
积分
4638

Level 6 (一方通行)

37#
 楼主 Author| 发表于 Post on 2021-11-8 10:01:13 | 只看该作者 Only view this author
PoorChaos 发表于 2021-11-8 09:58
谢谢 正在看,打算买纸质
看到隔壁说是动态管理 哪个环境加载哪个环境
http://bbs.keinsci.com/threa ...

个人服务器就没必要使用module模块化管理了,但是集群得用。easybuild比较好用。
自由发挥,野蛮生长

157

帖子

0

威望

2107

eV
积分
2264

Level 5 (御坂)

36#
发表于 Post on 2021-11-8 09:58:24 | 只看该作者 Only view this author
丁越 发表于 2021-11-8 09:51
#source /home/feng/cp2k-8.2/tools/toolchain/install/setup是正确的,#哪一行就代表注释哪一行,抽空多 ...

谢谢 正在看,打算买纸质
看到隔壁说是动态管理 哪个环境加载哪个环境
http://bbs.keinsci.com/thread-24999-1-1.html

464

帖子

11

威望

3954

eV
积分
4638

Level 6 (一方通行)

35#
 楼主 Author| 发表于 Post on 2021-11-8 09:51:59 | 只看该作者 Only view this author
PoorChaos 发表于 2021-11-8 09:36
是的,我又重新用openmpi了,
但是请问一下,注释是怎么注释的,
在开头行加#就可以了吗?

#source /home/feng/cp2k-8.2/tools/toolchain/install/setup是正确的,#哪一行就代表注释哪一行,抽空多看看《鸟哥的linux私房菜》,linux的基本运行常识必须得掌握。
自由发挥,野蛮生长

157

帖子

0

威望

2107

eV
积分
2264

Level 5 (御坂)

34#
发表于 Post on 2021-11-8 09:36:48 | 只看该作者 Only view this author
丁越 发表于 2021-11-8 09:29
运行cp2k时,.bashrc下intelmpi和openmpi只能存在一个,即你要么是用基于intelmpi的cp2k,就把基于openmp ...

是的,我又重新用openmpi了,
但是请问一下,注释是怎么注释的,
在开头行加#就可以了吗?
比如
#
source /home/feng/cp2k-8.2/tools/toolchain/install/setup

还是#source /home/feng/cp2k-8.2/tools/toolchain/install/setup

464

帖子

11

威望

3954

eV
积分
4638

Level 6 (一方通行)

33#
 楼主 Author| 发表于 Post on 2021-11-8 09:29:41 | 只看该作者 Only view this author
本帖最后由 丁越 于 2021-11-8 09:32 编辑
PoorChaos 发表于 2021-11-6 23:37
我想用你的方法重新编译CP2K
看您说注释,不会用注释命令,可否举例说明?谢谢
另外按照老师的办法ORCA安 ...

运行cp2k时,.bashrc下intelmpi和openmpi只能存在一个,即你要么是用基于intelmpi的cp2k,就把基于openmpi的cp2k的路径给注释了。目前来说我个人觉得还是用openmpi好,intel全家桶编译出来的没有psmp版本(popt),ssmp运行好多时候不如popt的
自由发挥,野蛮生长

157

帖子

0

威望

2107

eV
积分
2264

Level 5 (御坂)

32#
发表于 Post on 2021-11-7 16:27:17 | 只看该作者 Only view this author
PoorChaos 发表于 2021-11-6 23:37
我想用你的方法重新编译CP2K
看您说注释,不会用注释命令,可否举例说明?谢谢
另外按照老师的办法ORCA安 ...

请教了sob老师,还是建议用openmpi编译CP2K

157

帖子

0

威望

2107

eV
积分
2264

Level 5 (御坂)

31#
发表于 Post on 2021-11-6 23:37:15 | 只看该作者 Only view this author
本帖最后由 PoorChaos 于 2021-11-7 00:03 编辑

我想用你的方法重新编译CP2K
看您说注释,不会用注释命令,可否举例说明?谢谢
另外按照老师的办法ORCA安装了openMPI,这样就会冲突

我把source /home/xxx/intel/oneapi/setvars.sh 加进去 再运行CP2K 出现如下错误
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.



但是加进去以后 测试CP2K变成77秒,删除source /home/xxx/intel/oneapi/setvars.sh 测试时间就恢复到7秒了




252

帖子

0

威望

1101

eV
积分
1353

Level 4 (黑子)

30#
发表于 Post on 2021-11-6 11:15:06 | 只看该作者 Only view this author
gog 发表于 2021-11-4 15:34
2021的版本是这样。

很好的福利
努力挖掘科学的本质

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

GMT+8, 2025-8-16 15:04 , Processed in 0.182463 second(s), 23 queries , Gzip On.

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