计算化学公社

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

[硬件评测] 2023年3月MD benchmark测试首篇——4090悄悄变快了

[复制链接 Copy URL]

846

帖子

16

威望

4632

eV
积分
5798

Level 6 (一方通行)

小屁孩

本帖最后由 Entropy.S.I 于 2023-6-25 01:14 编辑

2023年3月MD benchmark测试首篇
——4090悄悄变快了
[本文首发于计算化学公社 | 文 熵增焓减 | yult-entropy@qq.com | 2023-03]
0 写在前面

去年10月的文章中说:

如今Ada Lovelace架构刚刚上市,并无针对性优化,预计在将来几个月,随着几款MD软件以及编译器和驱动层面对于Ada Lovelace架构的优化,RTX 4090运行MD模拟的性能还会有进一步提升。

如今已过去5个月,是时候检验一下自己是否被打脸了。


1 测试平台

硬件:

软件环境:Ubuntu 22.04.2 LTS Desktop; Linux version 5.19.0-35-generic x86_64; GNU11.3; CUDA Toolkit 12.1 / 11.8; NVIDIA GPU Driver 530.30.02


2 测试程序信息及相应模型参数

模型同2022年10月测试

GMX编译了2023(CUDA runtime V12.1)、2022.5(CUDA runtime V12.1)、2022.5(CUDA runtime V11.8)、2022.3(CUDA runtime V12.1)。LAMMPS版本为8Feb2023,使用cmake预设“basic.cmake”和“kokkos-cuda.cmake”进行编译(“kokkos-cuda.cmake”中“Kokkos_ARCH_PASCAL60”改为“Kokkos_ARCH_ADA89”),同时额外指定编译REAXFF包(-D PKG_REAXFF=on)。由于AMBER22和NAMD3从去年10月至今都未更新,故这2者使用与去年10月测试完全相同的版本。虽然AMBER22是从源码编译,理论上可以自己改cmake脚本(比如修改编译器兼容性检测语句并加入SM89相关flags),但这不是合适的做法,且经过笔者实际测试,修改cmake脚本的CUDA配置模块后,基于NVCC 12.1.66编译仍然会在编译末期出错,若还是基于NVCC 11.8.89编译,虽然编译能完成,但实际测试发现性能毫无变化,故放弃此做法。


3 RTX4090变快了多少

如图1,从去年10月到现在,4090在4款MD软件下均有性能提升。对GMX来说,GPU-resident模式下提升最明显,最高达到了19%,平均12%左右;在bonded CPU的情况下提升也很大,平均7%左右,但对于像A-2这样bonded计算量很大的模型则没有提升,毕竟瓶颈在于CPU;在单线程的GPU-resident模式下也有平均5%左右的提升。此外,B-TI模型下的提升普遍比较小,因为CPU需要负责与自由能相关的计算,CPU瓶颈也比较明显。对AMBER22和NAMD3来说,由于至今未更新,本次测试与去年10月测试唯一的区别就是GPU驱动版本,故提升非常小。对LAMMPS来说,Tersoff模型下提升尤其明显,达到了27.5%,而另外2个模型提升却微乎其微,不过,这次测试中ReaxFF/C模型可以成功运行,只是缺少去年10月的数据作为对照,故没有在图中展示,SI中有详细数据。虽然RTX 4090跑LAMMPS变快了,个别情况下甚至变快了27%以上,但性价比还是明显不如1000多元一块的P100和5000多元一块的V100 16G,故本文对LAMMPS的测试结果仅供参考。

图 1

4 RTX4090变快的原因

既然已经可以确认如今RTX 4090加速经典MD的性能相较于去年10月变快了,那么其中原因值得思考。

图 2

观察图2可以发现,对GMX2022.3来说,即使使用最新的CUDA和GPU驱动版本,性能提升幅度也只有3%以下,换到GMX2022.5后,即使CUDA runtime为RTX 4090刚发布时的11.8版本,性能与2022.3相比也有大幅提升,若把CUDA升级到12.1,性能却又有轻微的降低,而再把GMX升级到2023版,性能又有了一些提升,其中GPU-resident模式的性能提升更明显。查询GMX2023 Release notes可知,GMX2023确实有一些性能优化,但其中CUDA PME decomposition、CUDA Graphs和VkFFT并未在本次测试中涉及,且本次测试本来就指定了update GPU,故“Update will run on GPU by default”也不是本次测试中GMX2023性能提升的原因。

总结前面的情况,并阅读各软件的手册可以得出,让4090“变快”的原因有以下几条,其中加粗的条目是主要影响因素。

  • NVIDIA GPU驱动层面优化了性能;

  • 11.8及以后版本的CUDA适配了ADA架构,对ADA架构有特别优化(需在编译时通过指定相应的NVCC编译器flags以激活此优化);

  • GMX较新版本的NVCC编译flags中增加了ADA架构(SM89)的相关条目以匹配11.8及以后版本的CUDA(最简单的检查方法是运行gmx -version命令,观察输出的“CUDA compiler flags”条目);

  • LAMMPS较新版本的Kokkos模块的NVCC编译flags中增加了ADA架构(SM89)的相关条目以匹配11.8及以后版本的CUDA;

  • GMX2023小幅优化了单GPU模拟的性能(一般不会被手动指定的nsttcouple和nstpcouple这2个MDP选项的默认值从10 steps增加到了100 steps;全局通信频率不再取决于nstlist)。


Anyway,现在更加可以说RTX 4090相较于RTX 3090Ti“性能翻倍”了!


SI

经简单整理的测试结果原始数据(xlsx)。文件下载地址:https://www.aliyundrive.com/s/BwFL1TohoZU,提取码:15fd;也可在此贴附件区下载。


MD_benchmark_data_Mar2023_Pub1.xlsx

145.67 KB, 下载次数 Times of downloads: 18

评分 Rate

参与人数
Participants 12
威望 +1 eV +33 收起 理由
Reason
RandomError + 5
Puying + 1 GJ!
不想飞的猫头鹰 + 5 牛!
Marc0 + 3 牛!
Prof.Huang + 1 赞!
ggdh + 5
ogrebit + 1
hxd_yi + 5 牛!
fakepheonix + 1
asdf + 1 谢谢分享
lanthanum + 5 GJ!
sobereva + 1

查看全部评分 View all ratings

- 向着虚无前进 -

213

帖子

1

威望

2230

eV
积分
2463

Level 5 (御坂)

2#
发表于 Post on 2023-3-22 08:07:39 | 只看该作者 Only view this author
结论是不是可以简单理解为:
  在编译的时候,添加ADA的Flags?这个选项在编译的时候会自动打开吗?还是必须手动?

846

帖子

16

威望

4632

eV
积分
5798

Level 6 (一方通行)

小屁孩

3#
 楼主 Author| 发表于 Post on 2023-3-22 14:27:47 | 只看该作者 Only view this author
abdoman 发表于 2023-3-22 08:07
结论是不是可以简单理解为:
  在编译的时候,添加ADA的Flags?这个选项在编译的时候会自动打开吗?还是必 ...

编译LAMMPS的Kokkos要自己指定架构,具体可以看https://docs.lammps.org/Build_extras.html#kokkos-package
gmx从2022.4开始就默认添加sm89了
Amber得等官方更新,自己改cmake脚本虽然可以编译出来,test也没问题,但性能毫无变化,要么优化没生效,要么一直都是生效的。另外,Ampere架构sm86(即GA102之类主打消费级市场的Ampere,非A100、A30),Amber也没启用相关的flags,不知道他们咋想的,只能在CudaConfig.cmake里面看到一句“not currently used, but should be tested on Cuda 11.1”
- 向着虚无前进 -

22

帖子

0

威望

571

eV
积分
593

Level 4 (黑子)

4#
发表于 Post on 2023-3-22 15:43:04 | 只看该作者 Only view this author
Entropy.S.I 发表于 2023-3-22 14:27
编译LAMMPS的Kokkos要自己指定架构,具体可以看https://docs.lammps.org/Build_extras.html#kokkos-packa ...

楼主,你好,你的贴子很有意义,对大家使用gmx上发挥硬件的性能很有帮助。有一个问题想向你咨询一下,请问像gmx里面的free energy perturbation的计算,这类在4090上的测试有吗?还有就是一般计算组里很多都是81XX,82XX,83XX类的多核,像i9-13900这样的只能跑一个任务。如果用82XX这类的工作站跑多个gmx任务的时候,每个任务能分享一个4090的资源吗?会有抢夺资源反而拖慢计算速度的情况么?还是需要一个任务配一个4090?现在4090还是齁贵的呢。。。

120

帖子

0

威望

2560

eV
积分
2680

Level 5 (御坂)

5#
发表于 Post on 2023-3-22 15:59:01 | 只看该作者 Only view this author
5000多的V100?不敢赌啊。

846

帖子

16

威望

4632

eV
积分
5798

Level 6 (一方通行)

小屁孩

6#
 楼主 Author| 发表于 Post on 2023-3-22 22:57:33 | 只看该作者 Only view this author
hxd_yi 发表于 2023-3-22 15:59
5000多的V100?不敢赌啊。

16G,不是32G
- 向着虚无前进 -

846

帖子

16

威望

4632

eV
积分
5798

Level 6 (一方通行)

小屁孩

7#
 楼主 Author| 发表于 Post on 2023-3-22 23:04:58 | 只看该作者 Only view this author
本帖最后由 Entropy.S.I 于 2023-3-22 23:10 编辑
ogrebit 发表于 2023-3-22 15:43
楼主,你好,你的贴子很有意义,对大家使用gmx上发挥硬件的性能很有帮助。有一个问题想向你咨询一下,请 ...

B-TI模型就是你要的答案。FEP和TI在具体MD模拟上是一样的,都是分别模拟若干个不同lambda下的轨迹。
B-TI模型具体是啥,去年10月的文章介绍过了http://bbs.keinsci.com/thread-33296-1-1.html

要用4090跑经典MD,就别想着用现成的单核性能弱鸡的服务器平台了,应该重新配一套平台,去看我刚发的这个系列文章的最终章,很仔细地讲了这个问题。除非经费低得一塌糊涂,只有1万多,只够买1块4090,那只能先买块4090插在现成的平台上凑合用。

一块GPU同时跑多个GMX模拟,性能是比较差的,GMX没有专门优化这方面。但是SPONGE可以很好地处理这种模式。
- 向着虚无前进 -

213

帖子

1

威望

2230

eV
积分
2463

Level 5 (御坂)

8#
发表于 Post on 2023-3-28 17:12:21 | 只看该作者 Only view this author
Entropy.S.I 发表于 2023-3-22 14:27
编译LAMMPS的Kokkos要自己指定架构,具体可以看https://docs.lammps.org/Build_extras.html#kokkos-packa ...

非常感谢细致的解答!

101

帖子

0

威望

1260

eV
积分
1361

Level 4 (黑子)

9#
发表于 Post on 2023-3-28 21:09:30 | 只看该作者 Only view this author
楼主大大可不可以详细讲讲centos纯远程命令行控制下怎么安装cuda和更新显卡驱动,以及怎么在gmx编译时就添加新架构优化的方法吗?我跟着sob老师的帖子装gmx感觉都很复杂啦,也怕把服务器搞坏了,不敢随便跟着网上的教程去动显卡驱动,十分感谢呀

846

帖子

16

威望

4632

eV
积分
5798

Level 6 (一方通行)

小屁孩

10#
 楼主 Author| 发表于 Post on 2023-3-28 21:43:33 | 只看该作者 Only view this author
本帖最后由 Entropy.S.I 于 2023-3-29 01:22 编辑

@不想飞的猫头鹰

1. 新装系统不要用CentOS,换Rocky或Ubuntu。

2. 如果之前驱动是用yum装的,先用yum remove卸载相应驱动。

3. 完全停止桌面GUI服务:sudo service gdm3 stop(如果是其他桌面环境,gdm3改成对应服务名)。

4. 去NVIDIA官网对应版本的下载页面复制命令,下载CUDA Toolkit(runfile)并运行。

5. 后面流程就没什么可以说的了,GPU驱动和CUDA开发环境一并安装完成。如果只装CUDA开发环境而不装GPU驱动(适用于驱动已经装好的情况),在选择安装项目的界面用space键去掉驱动的选项即可。

6. 最后把CUDA添加到环境变量中,/etc/profile是给所有用户添加,~/.bashrc是给当前用户添加。
  1. export PATH="bin:$PATH"
  2. export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
  3. export CUDA_HOME="/usr/local/cuda:$CUDA_HOME"
复制代码
如果装了多个版本的CUDA环境,可以自己指定实际路径,/usr/local/cuda/只是一个软链接。也可以直接改这个软链接指向的路径。

7. 如果只安装NVIDIA GPU驱动,就去官网下载驱动的runfile,注意事项同2和3。
- 向着虚无前进 -

101

帖子

0

威望

1260

eV
积分
1361

Level 4 (黑子)

11#
发表于 Post on 2023-3-28 22:30:21 | 只看该作者 Only view this author
本帖最后由 不想飞的猫头鹰 于 2023-3-29 07:34 编辑
Entropy.S.I 发表于 2023-3-28 21:43
@不想飞的猫头鹰

1. 新装系统不要用CentOS,换Rocky或Ubuntu。

嗯嗯,感谢您的回复

101

帖子

0

威望

1260

eV
积分
1361

Level 4 (黑子)

12#
发表于 Post on 2023-3-28 23:19:56 | 只看该作者 Only view this author
本帖最后由 不想飞的猫头鹰 于 2023-3-29 07:35 编辑
Entropy.S.I 发表于 2023-3-28 21:43
@不想飞的猫头鹰

1. 新装系统不要用CentOS,换Rocky或Ubuntu。

非常感谢您的热心回复,我之后用新机器就按您说的装rockylinux,目前用的是centos8.5.2111,gcc8.5.0,因为当时买不起4090所以先用着3080ti,以后有机会再升级。供应商给我的安装驱动的操作方法如下(怕图片附带不上我手动改成文字了):
1、Linux查看显卡信息:(ps:若找不到lspci命令,可以安装 yum install pciutils)
lspci | grep -i vga
2、使用nvidia GPU可以:
lspci | grep -i nvidia
3、查看显卡驱动
cat /proc/driver/nvidia/version
1.安装依赖环境:
yum install kernel-devel gcc -y
2.检查内核版本和源码版本,保证一致
ls /boot | grep vmlinu
rpm -aq | grep kernel-devel
lsmod | grep nouveau
修改dist-blacklist.conf文件:
vim /lib/modprobe.d/dist-blacklist.conf
将nvidiafb注释掉:
#blacklist nvidiafb
然后添加以下语句:
blacklist nouveau
options nouveau modeset=0
4.重建initramfs image步骤
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
5.重新启动
reboot
6.修改运行级别为文本模式
init 3
7.安装
chmod +x NVIDIA-Linux-x86_64-510.60.02.run
./NVIDIA-Linux-x86_64-510.60.02.run --no-opengl-files --ui=none --no-questions --accept-license
8.从文本模式修改为图形界面
init 5
这个相比于您回复的https://developer.nvidia.com/cuda-toolkit-archive下载的cuda.....run,从https://www.nvidia.cn/geforce/drivers/下载运行的run是不是只是装了驱动而没装cuda呀?虽然安装后nvidia-smi能正常显示显卡信息,但这个只是显示驱动发布时对应的cuda版本号信息,并不是代表机器中的cuda版本吧?cuda不安装的话对gmx或者其他软件的运行性能会有什么影响?另外,我按照供应商这个步骤进行安装,发现机器重启后会掉驱动(nvidia-smi报错),查了很多csdn帖子后感觉是系统和驱动不兼容的问题,是否是centos8.5.2111已经是centos-stream之前的最后一个稳定版,太久不更新内核而不支持新驱动的原因?cuda,cudnn,gcc,系统版本,驱动之间的兼容关系是什么呀?
问题有点杂,十分感谢您的不吝赐教,希望也能供大家参考和指教!

846

帖子

16

威望

4632

eV
积分
5798

Level 6 (一方通行)

小屁孩

13#
 楼主 Author| 发表于 Post on 2023-3-29 01:39:39 | 只看该作者 Only view this author
不想飞的猫头鹰 发表于 2023-3-28 22:30
嗯嗯,感谢您的回复,我的机器已经被装好centos了,之后组里换新机器了就用rockylinux。是不是运行了run ...

如果还没有做很多配置,最好现在就换系统。

不装CUDA开发环境,没法编译GMX的CUDA版本。

GPU驱动中显示的CUDA版本是当前驱动兼容的CUDA版本。

兼容性关系和其他具体问题应该去看NVIDIA官方的手册https://docs.nvidia.com/cuda/cud ... de-linux/index.htmlhttps://docs.nvidia.com/deploy/cuda-compatibility/index.html,这上面讲的比任何地方都详细。
- 向着虚无前进 -

101

帖子

0

威望

1260

eV
积分
1361

Level 4 (黑子)

14#
发表于 Post on 2023-3-29 08:41:49 | 只看该作者 Only view this author
本帖最后由 不想飞的猫头鹰 于 2023-3-29 08:45 编辑
Entropy.S.I 发表于 2023-3-29 01:39
如果还没有做很多配置,最好现在就换系统。

不装CUDA开发环境,没法编译GMX的CUDA版本。

嗯嗯,十分感谢,我这个服务器除了gmx还装了一些软件,而且就入门级主板,没有更多插槽啦,所以这个配置买来就算是终身定死了机器是放到学校机房的,进出手续比较麻烦,装系统得去机房,linux菜鸟估计得折腾大半天,换系统只能等下次组里升级设备的时候我提前让供应商或者我在手边装好,再放到机房去了。我到手后只是负责装驱动,在/usr/local文件夹下看到了有个cuda文件夹叫cuda-11.6,这个就是供应商给提前装好的cuda吧(不然gmx可能也就没法使用显卡加速了,gmx的安装是按照sob老师帖子的添加了cuda加速版本的编译命令的方法安装的gmx 2021.6,目前执行mdrun是gmx mdrun -v -deffnm xx -ntmpi 1 -ntomp 8 -gpu_id 0,执行后在另一个远程终端执行nvidia-smi可以看出显卡确实有负载),而出现掉驱动问题的只是驱动与系统兼容问题是吗(试了一堆驱动版本,最终515.57版本终于不会在重启后掉驱动了)?
我尝试了一下在root用户下,执行了wget https://developer.download.nvidi ... 530.30.02_linux.run并执行此运行文件,accpet之后install显示报错,让我查看/var/log/cuda-installer.log,显示Finished with code: 256
[ERROR]: Install of driver component failed. Consult the driver log at /var/log/nvidia-installer.log for more details.
[ERROR]: Install of 530.30.02 failed, quitting看起来又失败了,不敢再在服务器上试了,有空了我自己买个便宜显卡在闲置电脑上装着练手~~
我看您给的链接以及搜到的帖子说,
“CUDA有两个主要的API:runtime(运行时) API和driver API,这两个API都有对应的CUDA版本。driver API是通过GPU driver installer安装的,可理解为系统出场安装的默认驱动,nvidia-sim显示的是 driver API。runtime API是通过CUDA toolkit安装的,可理解为用户自己安装的驱动,nvcc显示的是runtime API。因此,在设计层面这两个数字就不一定匹配,因为它们反映了两种不同的事物。通常情况下,这两个显示都是不一样的,不过不用担心,只要driver API比runtime API高,一般都没问题。”
我的理解是,cuda是一种核心架构,类似于amd的流处理器,这个架构能为并行计算提供加速服务,cuda toolkit本身是一种集成了对这个框架运行起来的算法支持和必要的依赖,并且自带一个适配的nvidia driver的综合软件包(只有nvidia driver的也就是只有几百兆的那个run文件,而这个cuda....run足足有3.95G,/usr/local目录下的cuda文件夹占用空间有5.4G,另外还有个cudnn,说是个函数库,类似于mkl,不做相关的东西可以不装),而nvidia driver又可以独立安装,所以cuda在系统内核和gcc支持的情况下,尽可能装较新的,而驱动也是只要和系统兼容就最新最好?
以前在windows下只装过所谓的“显卡驱动”,看来并不是cuda,做科研之后才接触linux,感觉linux好复杂呀

846

帖子

16

威望

4632

eV
积分
5798

Level 6 (一方通行)

小屁孩

15#
 楼主 Author| 发表于 Post on 2023-3-29 18:10:08 | 只看该作者 Only view this author
本帖最后由 Entropy.S.I 于 2023-3-29 18:18 编辑
不想飞的猫头鹰 发表于 2023-3-29 08:41
嗯嗯,十分感谢,我这个服务器除了gmx还装了一些软件,而且就入门级主板,没有更多插槽啦,所以这个配置 ...

至少加上-pin on -update gpu,我不知道你用的CPU是什么,但只用8个OpenMP线程且不加-bonded gpu在大多数情况下都严重浪费了3080Ti的性能。前面的测试都是默认使用HT的,例如对于7950X,用-ntmpi 1 -ntomp 32 -pin on -pinstride 1 -update gpu。你认真看去年10月的文章了吗…?

/var/log/cuda-installer.log里写着让你自己看一下/var/log/nvidia-installer.log,那就去看一下。你有按照我前面说的把老驱动卸载并彻底停止桌面GUI服务吗?不做这些操作必然报错。


update: 看了眼你之前发的贴,似乎CPU是13900K,那么用-ntmpi 1 -ntomp 31 -pin on -pinstride 1 -update gpu,留出1个E-Core是给系统进程和驱动用的

- 向着虚无前进 -

本版积分规则 Credits rule

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

GMT+8, 2024-11-23 06:59 , Processed in 0.214426 second(s), 27 queries , Gzip On.

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