计算化学公社

标题: 请教Gromacs在AMD服务器上的Performace偏慢,是否我编译有问题? [打印本页]

作者
Author:
mgqqlwq    时间: 2022-12-31 01:53
标题: 请教Gromacs在AMD服务器上的Performace偏慢,是否我编译有问题?
本帖最后由 mgqqlwq 于 2022-12-31 01:57 编辑

最近开始使用超算上的一点资源,是AMD EYPC 7532处理器,但是同我之前Intel 8173M上的速度比较,感觉慢很多,对AMD的机器了解的比较少,想请教下是不是我AMD服务器上的Gromacs编译的选项选择不是很好,导致计算速度比较慢呢?具体的Performance和两个机器的信息如下。mdrun的选项是都使用全部使用OpenMP, thread-mpi设为1,gmx mdrun -v -deffnm XXX -ntmpi 1 -ntomp ${N}

处理器型号Intel(R) Xeon(R) Platinum 8173M, 使用56个核, Performace大约56 ns/day
FFT library:        fftw-3.3.3-sse2
C compiler:         /usr/bin/cc GNU 4.8.5
C compiler flags:    -march=core-avx2     -O3 -DNDEBUG -funroll-all-loops -fexcess-precision=fast  
C++ compiler:       /usr/bin/c++ GNU 4.8.5
C++ compiler flags:  -march=core-avx2    -std=c++11   -O3 -DNDEBUG -funroll-all-loops -fexcess-precision=fast



处理器型号AMD EPYC 7532 32-Core Processor, 使用32个核, Performace大约13.8 ns/day
FFT library:        fftw-3.3.8-sse2-avx-avx2-avx2_128
C compiler:         /compilers_and_libraries_2020.1.217/linux/bin/intel64/icc Intel 19.1.0.20200306
C compiler flags:    -march=core-avx2    -std=gnu99  -O3 -DNDEBUG -ip -funroll-all-loops -alias-const -ansi-alias -no-prec-div -fimf-domain-exclusion=14 -qoverride-limits  
C++ compiler:       /compilers_and_libraries_2020.1.217/linux/bin/intel64/icc Intel 19.1.0.20200306
C++ compiler flags:  -march=core-avx2    -std=c++11   -O3 -DNDEBUG -ip -funroll-all-loops -alias-const -ansi-alias -no-prec-div -fimf-domain-exclusion=14 -qoverride-limits


AMD EPYC 7532每个核提供的Performace大概只有8173M的45%不到的样子,请问这是我编译的问题还是正常的情况呢?




作者
Author:
sobereva    时间: 2022-12-31 02:13
一个用icc,一个用gfortran,光是这个就没有可比性
我也怀疑你写错了

对EPYC建议的gcc选项看https://prace-ri.eu/wp-content/uploads/Best-Practice-Guide_AMD.pdf的3.1.1.3节

不建议核多的情况都用OpenMP并行,效率远不如结合thread-MPI


作者
Author:
mgqqlwq    时间: 2022-12-31 08:49
sobereva 发表于 2022-12-31 02:13
一个用icc,一个用gfortran,光是这个就没有可比性
我也怀疑你写错了

谢谢卢老师回复!

抱歉,我不是很确定,您是指icc和gcc对吧?应该没有用到gfortran,因为AMD服务器上有icc就用icc编译了
麻烦再问下您:
1. AMD的机器Gromacs是不是推荐用gcc编译呢?icc 可能不一定好是吧?
2. 你推荐的这个文档里面的这个选项`-O3 -march=znver1 -mtune=znver1 -mfma -mavx2 -m3dnow -fomit-frame-pointer` 编译的时候应该怎么实现呢?我是参考您的457博文编译的
3. 如果参考您的博文用cmake .. -DCMAKE_INSTALL_PREFIX=/xxx/gmx2018.8 -DGMX_SIMD=AVX2_128来编译的话可以吗?
4. fftw的编译选项重要吗?AMD机器上我也是用icc编译的

另外谢谢您的建议!OpenMP和thread-MPI的选项我再试试
作者
Author:
abin    时间: 2022-12-31 09:19
https://developer.amd.com/wp-con ... ser%20Guide_2.1.pdf
Check out AMD Optimized CPU Libraries.


作者
Author:
mgqqlwq    时间: 2022-12-31 12:36
abin 发表于 2022-12-31 09:19
https://developer.amd.com/wp-content/resources/AOCL_User%20Guide_2.1.pdf
Check out AMD Optimized CP ...

谢谢您的回复!
还想麻烦跟您确认下,我可以参考这个编译fftw对吧?
作者
Author:
abin    时间: 2022-12-31 13:20
mgqqlwq 发表于 2022-12-31 12:36
谢谢您的回复!
还想麻烦跟您确认下,我可以参考这个编译fftw对吧?

自己动手吧。
我给你的信息是AMD官方推荐的方案。

至于具体能干啥,有啥用,自己捣鼓吧。
作者
Author:
sobereva    时间: 2022-12-31 17:22
mgqqlwq 发表于 2022-12-31 08:49
谢谢卢老师回复!

抱歉,我不是很确定,您是指icc和gcc对吧?应该没有用到gfortran,因为AMD服务器上 ...

是gcc,笔误

对于编译gmx,用icc比linux自带的gcc没有额外的好处。反正我从来不用icc编译

你用gcc直接按http://sobereva.com/457里说的重新编译一次。一般不需要自己手动加什么选项,自动就会用比较合适的编译设置。

FFTW库对PME的静电相互作用计算效率有决定性的影响。

不是说icc编译不行,只是说你要公平地对比硬件性能应当先把软件方面能统一的都统一了,免得引入额外因素的影响。
作者
Author:
mgqqlwq    时间: 2023-1-1 06:06
abin 发表于 2022-12-31 13:20
自己动手吧。
我给你的信息是AMD官方推荐的方案。

好的,非常非常感谢!
作者
Author:
mgqqlwq    时间: 2023-1-1 06:08
sobereva 发表于 2022-12-31 17:22
是gcc,笔误

对于编译gmx,用icc比linux自带的gcc没有额外的好处。反正我从来不用icc编译

谢谢卢老师!
我按照457博文用gcc编译次试试,比较下速度。
我之前按照457博文编译的时候,其他的都没啥,就是SIMD这个我是的两个cluster上好像都不能自动识别出来,需要自己指定。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3