计算化学公社
标题: 2023年3月MD benchmark测试首篇——4090悄悄变快了 [打印本页]
作者Author: Entropy.S.I 时间: 2023-3-21 22:29
标题: 2023年3月MD benchmark测试首篇——4090悄悄变快了
本帖最后由 Entropy.S.I 于 2023-6-25 01:14 编辑
2023年3月MD benchmark测试首篇
——4090悄悄变快了
0 写在前面
如今Ada Lovelace架构刚刚上市,并无针对性优化,预计在将来几个月,随着几款MD软件以及编译器和驱动层面对于Ada Lovelace架构的优化,RTX 4090运行MD模拟的性能还会有进一步提升。
如今已过去5个月,是时候检验一下自己是否被打脸了。
1 测试平台
(, 下载次数 Times of downloads: 42)
软件环境: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 测试程序信息及相应模型参数
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的测试结果仅供参考。
(, 下载次数 Times of downloads: 37)
图 1
4 RTX4090变快的原因
既然已经可以确认如今RTX 4090加速经典MD的性能相较于去年10月变快了,那么其中原因值得思考。
(, 下载次数 Times of downloads: 41)
图 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
作者Author: abdoman 时间: 2023-3-22 08:07
结论是不是可以简单理解为:
在编译的时候,添加ADA的Flags?这个选项在编译的时候会自动打开吗?还是必须手动?
作者Author: Entropy.S.I 时间: 2023-3-22 14:27
编译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”
作者Author: ogrebit 时间: 2023-3-22 15:43
楼主,你好,你的贴子很有意义,对大家使用gmx上发挥硬件的性能很有帮助。有一个问题想向你咨询一下,请问像gmx里面的free energy perturbation的计算,这类在4090上的测试有吗?还有就是一般计算组里很多都是81XX,82XX,83XX类的多核,像i9-13900这样的只能跑一个任务。如果用82XX这类的工作站跑多个gmx任务的时候,每个任务能分享一个4090的资源吗?会有抢夺资源反而拖慢计算速度的情况么?还是需要一个任务配一个4090?现在4090还是齁贵的呢。。。
作者Author: hxd_yi 时间: 2023-3-22 15:59
5000多的V100?不敢赌啊。
作者Author: Entropy.S.I 时间: 2023-3-22 22:57
16G,不是32G
作者Author: Entropy.S.I 时间: 2023-3-22 23:04
本帖最后由 Entropy.S.I 于 2023-3-22 23:10 编辑
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可以很好地处理这种模式。
作者Author: abdoman 时间: 2023-3-28 17:12
非常感谢细致的解答!
作者Author: 不想飞的猫头鹰 时间: 2023-3-28 21:09
楼主大大可不可以详细讲讲centos纯远程命令行控制下怎么安装cuda和更新显卡驱动,以及怎么在gmx编译时就添加新架构优化的方法吗?我跟着sob老师的帖子装gmx感觉都很复杂啦,也怕把服务器搞坏了,不敢随便跟着网上的教程去动显卡驱动,十分感谢呀
作者Author: Entropy.S.I 时间: 2023-3-28 21:43
本帖最后由 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)并运行。
(, 下载次数 Times of downloads: 42)
5. 后面流程就没什么可以说的了,GPU驱动和CUDA开发环境一并安装完成。如果只装CUDA开发环境而不装GPU驱动(适用于驱动已经装好的情况),在选择安装项目的界面用space键去掉驱动的选项即可。
6. 最后把CUDA添加到环境变量中,/etc/profile是给所有用户添加,~/.bashrc是给当前用户添加。
- export PATH="bin:$PATH"
- export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
- export CUDA_HOME="/usr/local/cuda:$CUDA_HOME"
复制代码 如果装了多个版本的CUDA环境,可以自己指定实际路径,/usr/local/cuda/只是一个软链接。也可以直接改这个软链接指向的路径。
7. 如果只安装NVIDIA GPU驱动,就去官网下载驱动的runfile,注意事项同2和3。
作者Author: 不想飞的猫头鹰 时间: 2023-3-28 22:30
本帖最后由 不想飞的猫头鹰 于 2023-3-29 07:34 编辑
嗯嗯,感谢您的回复
作者Author: 不想飞的猫头鹰 时间: 2023-3-28 23:19
本帖最后由 不想飞的猫头鹰 于 2023-3-29 07:35 编辑
非常感谢您的热心回复,我之后用新机器就按您说的装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,系统版本,驱动之间的兼容关系是什么呀?
问题有点杂,十分感谢您的不吝赐教,希望也能供大家参考和指教!
作者Author: Entropy.S.I 时间: 2023-3-29 01:39
如果还没有做很多配置,最好现在就换系统。
不装CUDA开发环境,没法编译GMX的CUDA版本。
GPU驱动中显示的CUDA版本是当前驱动兼容的CUDA版本。
兼容性关系和其他具体问题应该去看NVIDIA官方的手册https://docs.nvidia.com/cuda/cud ... de-linux/index.html、https://docs.nvidia.com/deploy/cuda-compatibility/index.html,这上面讲的比任何地方都详细。
作者Author: 不想飞的猫头鹰 时间: 2023-3-29 08:41
本帖最后由 不想飞的猫头鹰 于 2023-3-29 08:45 编辑
嗯嗯,十分感谢,我这个服务器除了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好复杂呀
作者Author: Entropy.S.I 时间: 2023-3-29 18:10
本帖最后由 Entropy.S.I 于 2023-3-29 18:18 编辑
至少加上-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是给系统进程和驱动用的
作者Author: 不想飞的猫头鹰 时间: 2023-3-30 10:58
本帖最后由 不想飞的猫头鹰 于 2023-3-30 11:09 编辑
嗯嗯,昨晚开组会,才看到消息,实在抱歉。看啦,因为考虑到有时候需要稍微跑一下gaussian做优化加振动分析,sob老师建议纯大核,就综合您的推荐买了7950X,我是习惯分成两组八个核心给不同小任务来学习和练习,要是用来跑大任务就把所有核心都用上啦。之前没加-update gpu是我把gmx2018.4的操作习惯也放到2021.6上了,在2018.4版本中不能用-update选项,不然会报错,估计是版本有点久所以没这个功能,组里换新机后觉得相比于之前快多了就很知足了就没在2021.6上尝试,让您见笑啦。刚才用gmx2021.6用Justin教程中的小分子跑了下,gmx mdrun -v -deffnm md -ntmpi 1 -ntomp 16 -pin on -pinstride 1 -update gpu -gpu_id 0,比起单纯的gmx mdrun -v -deffnm md -ntmpi 1 -ntomp 16 -gpu_id 0快了将近百分之70,gpu占用率也从百分之67提升到了百分之89,太感谢您啦那个报错信息就是cat /var/log/cuda-installer.log显示的信息,里面显示的报错信息是-> The file '/tmp/.X0-lock' exists and appears to contain the process ID '1991' of a running X server.ERROR: You appear to be running an X server; please exit X before installing. For further details, please see the section INSTALLING THE NVIDIA DRIVER in the README available on the Linux driver download page at www.nvidia.com.
ERROR: Installation has failed. Please see the file '/var/log/nvidia-installer.log' for details. You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.、
看起来果然是运行着X server的原因,之前是想装ifort来着,但是看sob老师是在图形页面下操作的,跟着csdn帖子开图形页面,在nvidia-smi进程中就总是有个/usr/libexec/Xorg进程,用kill -9 xxx(pid)杀掉也总是又自动出现新进程。目前看来至少找到问题所在了,我去鼓捣一下。再次向您表示感激,受教啦!
作者Author: 牧生 时间: 2023-4-28 14:44
本帖最后由 牧生 于 2023-4-28 14:46 编辑
近日,影驰4090到了,但是,4090太大了,原本机箱里面能同时装1080ti+3090,而现在只能装一个4090了。
在现有的6149 cpu情况下,跑gmx2022.5的时候,4090占用率85%左右,速度是原本3090的1.6倍速度左右。
作者Author: Entropy.S.I 时间: 2023-4-28 16:49
本帖最后由 Entropy.S.I 于 2023-4-28 16:52 编辑
http://bbs.keinsci.com/thread-33296-1-1.html
(, 下载次数 Times of downloads: 29)
另,使用PCIe延长线外置GPU即可用上另外2块GPU,此方案很便宜,且几乎没有性能损失
作者Author: 牧生 时间: 2023-4-28 17:10
已经买了个拓展坞,正在路上。
欢迎光临 计算化学公社 (http://bbs.keinsci.com/) |
Powered by Discuz! X3.3 |