2023年3月MD benchmark測試首篇——4090悄悄變快了
[本文首發(fā)于計算化學公社(http://bbs.keinsci.com/thread-35960-1-1.html) | 文 熵增焓減 | yult-entropy@qq.com | 2023-03]
0 寫在前面
去年10月的文章中說:
如今Ada Lovelace架構(gòu)剛剛上市,并無針對性優(yōu)化,預計在將來幾個月,隨著幾款MD軟件以及編譯器和驅(qū)動層面對于Ada Lovelace架構(gòu)的優(yōu)化,RTX 4090運行MD模擬的性能還會有進一步提升。
如今已過去5個月,是時候檢驗一下自己是否被打臉了。
1?測試平臺
硬件:

軟件環(huán)境:Ubuntu 22.04.2 LTS Desktop; Linux version 5.19.0-35-generic x86_64; GNU 11.3; CUDA Toolkit 12.1 / 11.8; NVIDIA GPU Driver 530.30.02
2 測試程序信息及相應模型參數(shù)
模型同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),但這不是合適的做法,且經(jīng)過筆者實際測試,修改cmake腳本的CUDA配置模塊后,基于NVCC V12.1.66編譯仍然會在編譯末期出錯,若還是基于NVCC 11.8.89編譯,雖然編譯能完成,但實際測試發(fā)現(xiàn)性能毫無變化,故放棄此做法。
3 RTX 4090變快了多少?
如圖1,從去年10月到現(xiàn)在,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月測試唯一的區(qū)別就是GPU驅(qū)動版本,故提升非常小。對LAMMPS來說,Tersoff模型下提升尤其明顯,達到了27.5%,而另外2個模型提升卻微乎其微,不過,這次測試中ReaxFF/C模型可以成功運行,只是缺少去年10月的數(shù)據(jù)作為對照,故沒有在圖中展示,SI中有詳細數(shù)據(jù)。雖然RTX 4090跑LAMMPS變快了,個別情況下甚至變快了27%以上,但性價比還是明顯不如1000多元一塊的P100和5000多元一塊的V100 16G(與NVIDIA官網(wǎng)測試對照可知,在LAMMPS中,V100性能是4090的1.5~3倍),故本文對LAMMPS的測試結(jié)果僅供參考。

4 RTX 4090變快的原因
既然已經(jīng)可以確認如今RTX 4090加速經(jīng)典MD的性能相較于去年10月變快了,那么其中原因值得思考。

觀察圖2可以發(fā)現(xiàn),對GMX2022.3來說,即使使用最新的CUDA和GPU驅(qū)動版本,性能提升幅度也只有3%以下,換到GMX2022.5后,即使CUDA runtime為RTX 4090剛發(fā)布時的11.8版本,性能與2022.3相比也有大幅提升,若把CUDA升級到12.1,性能卻又有輕微的降低,而再把GMX升級到2023版,性能又有了一些提升,其中GPU-resident模式的性能提升更明顯。查詢GMX2023 Release notes可知,GMX2023確實有一些性能優(yōu)化,但其中CUDA PME decomposition、CUDA Graphs和VkFFT并未在本次測試中涉及,且本次測試本來就指定了update GPU,故“Update will run on GPU by default”也不是本次測試中GMX2023性能提升的原因。
總結(jié)前面的情況,并閱讀各軟件的手冊可以得出,讓4090“變快”的原因有以下幾條,其中加粗的條目是主要影響因素。
NVIDIA GPU驅(qū)動層面優(yōu)化了性能;
11.8及以后版本的CUDA適配了ADA架構(gòu),對ADA架構(gòu)有特別優(yōu)化(需在編譯時通過指定相應的NVCC編譯器flags以激活此優(yōu)化);
GMX較新版本的NVCC編譯flags中增加了ADA架構(gòu)(SM89)的相關條目以匹配11.8及以后版本的CUDA(最簡單的檢查方法是運行g(shù)mx -version命令,觀察輸出的“CUDA compiler flags”條目);
LAMMPS較新版本的Kokkos模塊的NVCC編譯flags中增加了ADA架構(gòu)(SM89)的相關條目以匹配11.8及以后版本的CUDA;
GMX2023小幅優(yōu)化了單GPU模擬的性能(一般不會被手動指定的nsttcouple和nstpcouple這2個MDP選項的默認值從10 steps增加到了100 steps;全局通信頻率不再取決于nstlist)。
Anyway,現(xiàn)在更加可以說RTX 4090相較于RTX 3090Ti“性能翻倍”了!
SI
經(jīng)簡單整理的測試結(jié)果原始數(shù)據(jù)(xlsx)。文件下載地址:https://www.aliyundrive.com/s/BwFL1TohoZU,提取碼:15fd