计算化学公社

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

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

  [复制链接 Copy URL]

504

帖子

0

威望

3662

eV
积分
4166

Level 6 (一方通行)

truffle

本帖最后由 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不支持AVX512。
gcc5:

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.

15

帖子

0

威望

259

eV
积分
274

Level 3 能力者

47#
发表于 Post on 2023-11-15 16:09:21 | 只看该作者 Only view this author
lisanoid 发表于 2021-12-28 17:37
多谢提醒
我重新安装一遍,出现了类似错误,我简单搜索了一下好像是内存不足 ,安装具体信息如下:
/so ...

如果内存够大,swapoff -a,关闭交换分区,否则,扩大交换分区。

35

帖子

0

威望

305

eV
积分
340

Level 3 能力者

46#
发表于 Post on 2021-12-28 17:37:33 | 只看该作者 Only view this author
snljty 发表于 2021-12-26 05:55
你这个报错没有有价值信息。说清操作所有涉及到的版本和输入,贴更完整的信息。

多谢提醒
我重新安装一遍,出现了类似错误,我简单搜索了一下好像是内存不足 ,安装具体信息如下:
/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/xg++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -nostdinc++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include  -I/sob/gcc-5.5.0/libstdc++-v3/libsupc++ -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -c   -g -O2 -gtoggle -DIN_GCC    -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I/sob/gcc-5.5.0/gcc-build-5.5.0/./gmp -I/sob/gcc-5.5.0/gmp -I/sob/gcc-5.5.0/gcc-build-5.5.0/./mpfr -I/sob/gcc-5.5.0/mpfr -I/sob/gcc-5.5.0/mpc/src  -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc/../libbacktrace -I/sob/gcc-5.5.0/gcc-build-5.5.0/./isl/include -I/sob/gcc-5.5.0/isl/include  -o ira-color.o -MT ira-color.o -MMD -MP -MF ./.deps/ira-color.TPo ../../gcc/ira-color.c
/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/xg++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -nostdinc++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include  -I/sob/gcc-5.5.0/libstdc++-v3/libsupc++ -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -c   -g -O2 -gtoggle -DIN_GCC    -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I/sob/gcc-5.5.0/gcc-build-5.5.0/./gmp -I/sob/gcc-5.5.0/gmp -I/sob/gcc-5.5.0/gcc-build-5.5.0/./mpfr -I/sob/gcc-5.5.0/mpfr -I/sob/gcc-5.5.0/mpc/src  -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc/../libbacktrace -I/sob/gcc-5.5.0/gcc-build-5.5.0/./isl/include -I/sob/gcc-5.5.0/isl/include  -o ira-emit.o -MT ira-emit.o -MMD -MP -MF ./.deps/ira-emit.TPo ../../gcc/ira-emit.c
/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/xg++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -nostdinc++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include  -I/sob/gcc-5.5.0/libstdc++-v3/libsupc++ -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -c   -g -O2 -gtoggle -DIN_GCC    -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I/sob/gcc-5.5.0/gcc-build-5.5.0/./gmp -I/sob/gcc-5.5.0/gmp -I/sob/gcc-5.5.0/gcc-build-5.5.0/./mpfr -I/sob/gcc-5.5.0/mpfr -I/sob/gcc-5.5.0/mpc/src  -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc/../libbacktrace -I/sob/gcc-5.5.0/gcc-build-5.5.0/./isl/include -I/sob/gcc-5.5.0/isl/include  -o ira-lives.o -MT ira-lives.o -MMD -MP -MF ./.deps/ira-lives.TPo ../../gcc/ira-lives.c
/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/xg++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -nostdinc++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include  -I/sob/gcc-5.5.0/libstdc++-v3/libsupc++ -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -c   -g -O2 -gtoggle -DIN_GCC    -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I/sob/gcc-5.5.0/gcc-build-5.5.0/./gmp -I/sob/gcc-5.5.0/gmp -I/sob/gcc-5.5.0/gcc-build-5.5.0/./mpfr -I/sob/gcc-5.5.0/mpfr -I/sob/gcc-5.5.0/mpc/src  -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc/../libbacktrace -I/sob/gcc-5.5.0/gcc-build-5.5.0/./isl/include -I/sob/gcc-5.5.0/isl/include  -o jump.o -MT jump.o -MMD -MP -MF ./.deps/jump.TPo ../../gcc/jump.c
/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/xg++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/./prev-gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -nostdinc++ -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu  -I/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include  -I/sob/gcc-5.5.0/libstdc++-v3/libsupc++ -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -L/sob/gcc-5.5.0/gcc-build-5.5.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -c   -g -O2 -gtoggle -DIN_GCC    -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I/sob/gcc-5.5.0/gcc-build-5.5.0/./gmp -I/sob/gcc-5.5.0/gmp -I/sob/gcc-5.5.0/gcc-build-5.5.0/./mpfr -I/sob/gcc-5.5.0/mpfr -I/sob/gcc-5.5.0/mpc/src  -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc/../libbacktrace -I/sob/gcc-5.5.0/gcc-build-5.5.0/./isl/include -I/sob/gcc-5.5.0/isl/include  -o langhooks.o -MT langhooks.o -MMD -MP -MF ./.deps/langhooks.TPo ../../gcc/langhooks.c
make[3]: *** [s-attrtab] Killed
make[3]: *** Waiting for unfinished jobs....
rm gcc.pod
make[3]: Leaving directory `/sob/gcc-5.5.0/gcc-build-5.5.0/gcc'
make[2]: *** [all-stage2-gcc] Error 2
make[2]: Leaving directory `/sob/gcc-5.5.0/gcc-build-5.5.0'
make[1]: *** [stage2-bubble] Error 2
make[1]: Leaving directory `/sob/gcc-5.5.0/gcc-build-5.5.0'
make: *** [all] Error 2

1187

帖子

5

威望

2841

eV
积分
4129

Level 6 (一方通行)

45#
发表于 Post on 2021-12-26 05:55:16 | 只看该作者 Only view this author
lisanoid 发表于 2021-12-26 00:48
编译之后报错了,实在太长,最后几行如下:请帮忙分析一下吧
make[3]: *** [s-attrtab] Killed
make[3]:  ...

你这个报错没有有价值信息。说清操作所有涉及到的版本和输入,贴更完整的信息。

35

帖子

0

威望

305

eV
积分
340

Level 3 能力者

44#
发表于 Post on 2021-12-26 00:48:58 | 只看该作者 Only view this author
编译之后报错了,实在太长,最后几行如下:请帮忙分析一下吧
make[3]: *** [s-attrtab] Killed
make[3]: *** Waiting for unfinished jobs....
rm gcc.pod
make[3]: Leaving directory `/sob/gcc-5.5.0/gcc-build-5.5.0/gcc'
make[2]: *** [all-stage2-gcc] Error 2
make[2]: Leaving directory `/sob/gcc-5.5.0/gcc-build-5.5.0'
make[1]: *** [stage2-bubble] Error 2
make[1]: Leaving directory `/sob/gcc-5.5.0/gcc-build-5.5.0'
make: *** [all] Error 2

1187

帖子

5

威望

2841

eV
积分
4129

Level 6 (一方通行)

43#
发表于 Post on 2021-4-10 15:23:24 | 只看该作者 Only view this author

谢谢!当时没仔细查过这类命令,不太熟悉~

37

帖子

0

威望

409

eV
积分
446

Level 3 能力者

42#
发表于 Post on 2021-4-10 13:35:56 | 只看该作者 Only view this author
你这个还好,我遇到了gcc版本过高导致无法编译,也是卸载了原来的gcc重新编译了对应的版本。

1632

帖子

4

威望

4088

eV
积分
5800

Level 6 (一方通行)

喵星人

41#
发表于 Post on 2021-4-10 03:11:51 | 只看该作者 Only view this author
snljty 发表于 2020-10-19 11:20
显示了哪个,就说明支持哪个指令集~

直接 lscpu就好了

739

帖子

0

威望

1715

eV
积分
2454

Level 5 (御坂)

40#
发表于 Post on 2021-4-9 22:11:31 | 只看该作者 Only view this author
胡说 发表于 2019-4-3 09:39
可以测试下AVX2_256与AVX512的速度差别。
因为我机子上测试发现在GPU加速时候,AVX512要略慢于AVX2_256
...

the tests are very important. Thanks.

17

帖子

0

威望

245

eV
积分
262

Level 3 能力者

39#
发表于 Post on 2020-10-20 10:37:15 | 只看该作者 Only view this author
snljty 发表于 2020-10-19 11:20
显示了哪个,就说明支持哪个指令集~

非常感谢!

1187

帖子

5

威望

2841

eV
积分
4129

Level 6 (一方通行)

38#
发表于 Post on 2020-10-19 11:20:19 | 只看该作者 Only view this author
jluZ 发表于 2020-10-19 11:04
非常感谢!
我显示出的是
avx512

显示了哪个,就说明支持哪个指令集~

17

帖子

0

威望

245

eV
积分
262

Level 3 能力者

37#
发表于 Post on 2020-10-19 11:04:02 | 只看该作者 Only view this author

非常感谢!
我显示出的是
avx512
avx512
avx2
avx2
这种一长串
这样说明是可以的吗?

17

帖子

0

威望

245

eV
积分
262

Level 3 能力者

36#
发表于 Post on 2020-10-19 11:00:03 | 只看该作者 Only view this author

非常感谢!

1187

帖子

5

威望

2841

eV
积分
4129

Level 6 (一方通行)

35#
发表于 Post on 2020-10-17 21:04:10 | 只看该作者 Only view this author
本帖最后由 snljty 于 2020-10-17 21:08 编辑
jluZ 发表于 2020-10-17 19:20
您知道怎样看自己的cpu适不适合AVX512吗?
  1. for i in avx512 avx2 "avx[^2]" sse4_2; do grep -o -e $i /proc/cpuinfo; done
复制代码

504

帖子

0

威望

3662

eV
积分
4166

Level 6 (一方通行)

truffle

34#
 楼主 Author| 发表于 Post on 2020-10-17 19:52:30 | 只看该作者 Only view this author
jluZ 发表于 2020-10-17 19:20
您知道怎样看自己的cpu适不适合AVX512吗?

intel官网
No problem is insoluble in all conceivable circumstances.

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

GMT+8, 2024-11-23 15:00 , Processed in 0.261843 second(s), 26 queries , Gzip On.

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