计算化学公社

 找回密码 Forget password
 注册 Register
Views: 38844|回复 Reply: 45

[GROMACS] CentOS7下安装GROMACS(GPU+AVX512)的经历分享

  [复制链接 Copy URL]

423

帖子

0

威望

2499

eV
积分
2922

Level 5 (御坂)

小白

发表于 Post on 2019-4-2 15:18:04 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 naoki 于 2020-9-9 19:28 编辑

我大概从去年九月份开始接触一点量化计算和分子动力学模拟,因为课题组是做膜分离方向的,整个组没有任何计算机模拟的经验,开始入门和自学全靠Sob老师的博文、论坛和QQ群了,先感谢一下Sob老师和各位大佬的帮助。对于GROMACS和Linux来说我都只是个新手,长期停留在Windows舒适区,真的会使学习模拟的速度变慢,直到Windows不能满足计算需求,我才开始尝试学习Linux系统。幸运的是我的导师允许我采购一台服务器供课题组计算使用,于是我参考了Sob老师的购机博文《计算化学购机配置推荐》(http://sobereva.com/444),敲定了配置,联系国内某服务器商家采购了一台双路服务器(第一次还是没勇气自己在淘宝上买,现在看来完全不用找这种商家),大致配置如下:

主板:超微X11DAI-N
CPU:Intel Xeon Gold 6148*2
硬盘:4TB 7200RPM SATA 机械 + 500G SSD  
内存:DDR4-2666 ECC 8*16GB   
显卡: NVIDIA RTX2080
机器是CentOS7.3的操作系统,我按照Sob老师帖子《GROMACS的安装方法(含全程视频演示)》(http://bbs.keinsci.com/thread-11821-1-1.html)尝试下载编译安装了GROMACS 2019.1和2018.6两个版本,编译过程一开始挺顺利的,但我想调用AVX512指令集和GPU加速,于是在cmake3那一步额外加了"-DGMX_SIMD=AVX_512"和"-DGMX_GPU=ON -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda",然后就提示出错,找不到AVX_512F指令集。后来经排查发现是gcc版本过低所致,CentOS7.3自带gcc的版本是4.8.5(通过执行命令 gcc -v 可以看到),通过官网(GCC 4.8 Release Series https://gcc.gnu.org/gcc-4.8/changes.html)可以查到其支持的微指令集。
gcc4:
gcc4.8.png
可以看到gcc4不支持AVX512。
gcc5:
gcc5.png
gcc5开始支持AVX512。
而CUDA从9.0开始支持gcc6.0,CUDA10.0支持gcc6.4,所以gcc不要直接升级到7.X这样的高版本,否则CUDA可能无法支持
(CUDA官网可以查看各版本release)。
我是将gcc升级到5.5.0:



wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz;下载gcc安装包
tar -xf gcc-5.5.0.tar.gz;解压gcc安装包
cd gcc-5.5.0;进入解压后的文件夹
./contrib/download_prerequisites;下载依赖项
mkdir gcc-build-5.5.0;新建gcc-build-5.0.0文件夹
cd gcc-build-5.5.0;进入该文件夹
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib;设置编译参数:对代码进行一致性检查、支持c和c++语言、我是64位系统,禁止生成32位代码
make -j;开始编译
make install;安装编译好的文件

strings /usr/lib64/libstdc++.so.6|grep GLIBCX;查看/usr/lib64下libstdc++.so.6中包含动态库有哪些版本
strings /usr/local/lib64/libstdc++.so.6|grep GLIBCXX;查看/usr/local/lib64下libstdc++.so.6中包含动态库有哪些版本,更新gcc后/usr/lib64下没有更新动态库,而/usr/local/lib64里有新的库,确认一下
cp /usr/local/lib64/libstdc++.so.6.0.21 /usr/lib64/;所以把更新了的库libstdc++.so.6.0.21复制到/usr/lib64
cd /usr/lib64/;进到/usr/lib64里
rm -f libstdc++.so.6;删掉原来的旧库软链接
ln -s libstdc++.so.6.0.21 libstdc++.so.6;将默认库的软链接指向更新后的动态库
ll libstdc*;查看一下链接成功没

然后在cmake3这一步前加上两步:
export CC=/usr/local/bin/gcc
export CXX=/usr/local/bin/g++

编译就没问题了,本人很菜,如有错误还请大家多多指正~




评分 Rate

参与人数
Participants 4
eV +22 收起 理由
Reason
dzdhp + 4 好物!
snljty + 5 好物!
少年爱吃地三鲜 + 5 好物!
sobereva + 8

查看全部评分 View all ratings

No problem is insoluble in all conceivable circumstances.

376

帖子

0

威望

2171

eV
积分
2547

Level 5 (御坂)

尊贵的地三鲜骑士

发表于 Post on 2019-4-2 18:46:23 | 显示全部楼层 Show all
谢谢分享!
由衷的感谢每一位给与过我帮助的人

49

帖子

0

威望

3183

eV
积分
3232

Level 5 (御坂)

发表于 Post on 2019-4-3 09:39:59 | 显示全部楼层 Show all
可以测试下AVX2_256与AVX512的速度差别。
因为我机子上测试发现在GPU加速时候,AVX512要略慢于AVX2_256
只有纯CPU时,AVX512才比AVX2_256快一丢丢
网上也有类似情况
所以GPU加速的话,可能AVX2_256更好一点

423

帖子

0

威望

2499

eV
积分
2922

Level 5 (御坂)

小白

 楼主 Author| 发表于 Post on 2019-5-6 16:48:30 | 显示全部楼层 Show all
胡说 发表于 2019-4-3 09:39
可以测试下AVX2_256与AVX512的速度差别。
因为我机子上测试发现在GPU加速时候,AVX512要略慢于AVX2_256
...

GROMACS官网:“AVX_512 Skylake-X desktop and Skylake-SP Xeon processors (2017); it will generally be fastest on the higher-end desktop and server processors with two 512-bit fused multiply-add units (e.g. Core i9 and Xeon Gold). However, certain desktop and server models (e.g. Xeon Bronze and Silver) come with only one AVX512 FMA unit and therefore on these processors AVX2_256 is faster (compile- and runtime checks try to inform about such cases). Additionally, with GPU accelerated runs AVX2_256 can also be faster on high-end Skylake CPUs with both 512-bit FMA units enabled.”我今天试了下256比512慢1倍。。。
No problem is insoluble in all conceivable circumstances.

206

帖子

3

威望

2804

eV
积分
3070

Level 5 (御坂)

发表于 Post on 2019-5-6 17:15:50 | 显示全部楼层 Show all
所以centos7环境下最好升级到gcc5.0? 看来我又要折腾了
主攻: 蛋白-蛋白对接,蛋白de novo设计、蛋白结构建模,抗体设计等方向。Rosetta/PyRosetta

423

帖子

0

威望

2499

eV
积分
2922

Level 5 (御坂)

小白

 楼主 Author| 发表于 Post on 2019-5-6 17:45:23 | 显示全部楼层 Show all
kunkun 发表于 2019-5-6 17:15
所以centos7环境下最好升级到gcc5.0? 看来我又要折腾了

应该是这样的,安装的时候指定个其他路径不覆盖系统自带gcc感觉还好。。
No problem is insoluble in all conceivable circumstances.

206

帖子

3

威望

2804

eV
积分
3070

Level 5 (御坂)

发表于 Post on 2019-5-6 18:02:55 | 显示全部楼层 Show all
naoki 发表于 2019-5-6 17:45
应该是这样的,安装的时候指定个其他路径不覆盖系统自带gcc感觉还好。。

提升如果真的有一倍的速度,那真的很可怕,必须升级了
主攻: 蛋白-蛋白对接,蛋白de novo设计、蛋白结构建模,抗体设计等方向。Rosetta/PyRosetta

423

帖子

0

威望

2499

eV
积分
2922

Level 5 (御坂)

小白

 楼主 Author| 发表于 Post on 2019-5-6 18:44:32 | 显示全部楼层 Show all
kunkun 发表于 2019-5-6 18:02
提升如果真的有一倍的速度,那真的很可怕,必须升级了

等等…我刚才仔细看了一下,问题应该不出在这里。现在我最新测试的情况是:

1.对于“ -DGMX_MPI=ON”+GPU+AVX2_256,3万原子数速度90ns/day
2.对于GPU+AVX2_256,3万原子数速度50ns/day
3.对于“ -DGMX_MPI=ON”GPU+AVX_512,3万原子数速度70ns/day
4.对于GPU+AVX512,3万原子数速度45ns/day
MPI版本跑动力学系统提示:Using 1 MPI process Using 40 OpenMP threads Mapping of GPU IDs to the 1 GPU rank on this node
单机版本跑动力学系统提示:Using 8 MPI process Using 5 OpenMP threads Mapping of GPU IDs to the 8 GPU ranks on this node
不懂这个具体含义,还请各位指点。。
虽然我是单节点,但是开MPI并行之后速度确实有提升。
No problem is insoluble in all conceivable circumstances.

423

帖子

0

威望

2499

eV
积分
2922

Level 5 (御坂)

小白

 楼主 Author| 发表于 Post on 2019-5-6 18:46:53 | 显示全部楼层 Show all
胡说 发表于 2019-4-3 09:39
可以测试下AVX2_256与AVX512的速度差别。
因为我机子上测试发现在GPU加速时候,AVX512要略慢于AVX2_256
...

老哥你说的对,我最新的测试结果在下面,和官网说的一致,就是我不懂为啥MPI版本会更快。。
No problem is insoluble in all conceivable circumstances.

347

帖子

4

威望

2583

eV
积分
3010

Level 5 (御坂)

发表于 Post on 2019-5-6 19:43:13 | 显示全部楼层 Show all
都手编GCC了,还说自己菜啊?楼主过谦了。

关于MPI和OpenMP的区别:MPI基于进程并行,而OpenMP基于线程。每个MPI进程间数据不共享,只有调用MPI命令时才会跨进程交换数据。而OpenMP每个线程间共享数据,会导致线程竞争的问题,解决方案一般是加锁,所以速度会比MPI慢。

423

帖子

0

威望

2499

eV
积分
2922

Level 5 (御坂)

小白

 楼主 Author| 发表于 Post on 2019-5-6 20:05:00 | 显示全部楼层 Show all
万里云 发表于 2019-5-6 19:43
都手编GCC了,还说自己菜啊?楼主过谦了。

关于MPI和OpenMP的区别:MPI基于进程并行,而OpenMP基于线程 ...

我就是现学现卖,菜是真菜。谢谢老哥指教,对于我电脑的配置来说是不是MPI就是最佳解决方案了呢?
No problem is insoluble in all conceivable circumstances.

4万

帖子

99

威望

4万

eV
积分
89976

管理员

公社社长+计算化学玩家

发表于 Post on 2019-5-7 08:58:05 | 显示全部楼层 Show all
naoki 发表于 2019-5-6 20:05
我就是现学现卖,菜是真菜。谢谢老哥指教,对于我电脑的配置来说是不是MPI就是最佳解决方案了呢?

可以测试都用openmp和threadMPI的情况(分别用-ntomp和-ntmpi指定多少核用这两种方式并行)。threadMPI是内置的,不用额外编译
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班,内容介绍以及往届资料购买请点击链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的最佳途径。培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

423

帖子

0

威望

2499

eV
积分
2922

Level 5 (御坂)

小白

 楼主 Author| 发表于 Post on 2019-5-7 10:17:21 | 显示全部楼层 Show all
sobereva 发表于 2019-5-7 08:58
可以测试都用openmp和threadMPI的情况(分别用-ntomp和-ntmpi指定多少核用这两种方式并行)。threadMPI是 ...

好的Sob老师,我去试试
No problem is insoluble in all conceivable circumstances.

347

帖子

4

威望

2583

eV
积分
3010

Level 5 (御坂)

发表于 Post on 2019-5-7 14:26:04 | 显示全部楼层 Show all
naoki 发表于 2019-5-6 20:05
我就是现学现卖,菜是真菜。谢谢老哥指教,对于我电脑的配置来说是不是MPI就是最佳解决方案了呢?

可以做个测试:保持MPI进程数*OpenMP线程数=40,取效率最高的配置。

68

帖子

1

威望

843

eV
积分
931

Level 4 (黑子)

发表于 Post on 2019-6-12 10:39:12 | 显示全部楼层 Show all
您好,我也是做膜过程分子模拟的,现在也是出于win舒适区向linux过度的阶段,能加个好友交流吗?
信息不灭,熵永增

本版积分规则 Credits rule

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

GMT+8, 2023-2-7 04:28 , Processed in 0.237391 second(s), 25 queries .

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