性能翻倍?RTX4090科學計算之經(jīng)典MD模擬全面測試
[本文首發(fā)于計算化學公社(http://bbs.keinsci.com/thread-33296-1-1.html)?| 文 熵增焓減 | 贊助 @51972, 庚子計算 | yult-entropy@qq.com | 2022-10]
0?寫在前面
這次測試最初的目的是證明用何種性能級別的CPU可在運行GPU加速GROMACS(簡稱GMX)時榨干最新頂級消費級GPU——NVIDIA GeForce RTX 4090,但某日筆者建議一些bilibili UP主測試該GPU運行“生產(chǎn)力”軟件的發(fā)言被不學無術/不懂裝懂者群起而攻之,遂決定親自上陣,在最初的測試計劃中引入一些額外內容,對RTX 4090進行迄今全網(wǎng)最具系統(tǒng)性的分子動力學(MD)模擬性能測試。由于中文互聯(lián)網(wǎng)上與GPU加速MD相關的benchmark文章較少,本文的討論將不會局限于RTX 4090本身,會做一些擴展討論。
NVIDIA官方對相關軟件已經(jīng)進行了一些測試(https://developer.nvidia.com/hpc-application-performance),但其測試只針對極度昂貴的數(shù)據(jù)中心GPU產(chǎn)品,以展示多GPU并行性能和其GPU節(jié)點對CPU節(jié)點的替代能力為主要目的;且筆者發(fā)現(xiàn),其在使用不同軟件運行STMV模型的測試中所用具體參數(shù)大相徑庭,無法實現(xiàn)不同程序間的公平對比。因此,筆者特意在本次測試中使用了一些公平的模型和參數(shù)。此外,本次測試僅考慮單GPU運行的使用場景,因為這是實際使用中的大多數(shù)狀態(tài),且RTX 4090不具備NVLink或PCIe P2P,使用多GPU并行意義不大。
1?測試平臺
硬件平臺(由于@51972暫時不能提供RTX 3090Ti,故用ROG STRIX RTX 3090額外超頻150MHz并將功耗上限設為480W以模擬RTX 3090Ti):

軟件環(huán)境:Ubuntu 22.04.1 LTS Desktop; Linux version 5.15.0-52-generic; GNU 11.2; CUDA Tookit 11.8; NVIDIA GPU Driver 520.56.06
2 測試程序信息及相應模型參數(shù)
本次測試涉及GMX、AMBER、NAMD3、LAMMPS共4款MD軟件,基準數(shù)據(jù)集和測試腳本在SI中(tar.bz2)。GMX、AMBER、NAMD3所用各模型主要參數(shù)如下表:

其中,A和A-2為表面活性劑在油-水界面的slab模型;B為體相的表面活性劑膠束模型;B-TI為模擬單個表面活性劑(134原子)從膠束中解耦過程的ΔG的熱力學積分(TI)模擬的某個λ窗口模擬;4個STMV開頭的模型均為STMV(煙草花葉病毒衛(wèi)星病毒,經(jīng)典的benchmark專用模型,近20年來被廣泛用于HPC性能測試)在水環(huán)境中的模型,后3個是相應程序此前已公開報道的測試所用的模型與參數(shù);benchPEP-h為若干小肽鏈在水環(huán)境中的模型。A、A-2、B、B-TI均選自筆者此前研究工作,與5月發(fā)布的HPC benchmark報告(http://bbs.keinsci.com/thread-30061-1-1.html)所用模型完全相同。
值得一提的是,STMV-AMBER測試中額外使用了AMBER官方benchmark文件包中的優(yōu)化版參數(shù)進行測試,即所謂“Boost”設置,具體機制是通過手動指定合適的“skin_permit”參數(shù)以減少pair list的頻繁更新引起的性能下降,根據(jù)AMBER開發(fā)組的說法,將此參數(shù)設為0.75可在多數(shù)體系中獲得8-12%的性能提升,并兼顧模擬的“安全性”,但此功能未在公平版mod中啟用。
10月11日筆者在BB空間發(fā)布“預告”后,有網(wǎng)友要求增加LAMMPS測試,但實際上筆者一開始特意將LAMMPS排除在測試列表外,因為其主攻固體材料模擬,力場基本與另3款軟件不兼容,故無法與另3款軟件橫向對比;此外,其GPU加速功能對GPU的雙精度浮點性能需求高,較不適合用來測試雙精度浮點性能孱弱的游戲GPU。不過既然網(wǎng)友已明確提出需求,又考慮到RTX 4090的雙精度浮點性能已超過1 TFLOPS,有一定測試價值,遂將LAMMPS加入測試列表。LAMMPS測試所用文件即為NVIDIA網(wǎng)站上公布的測試所用的文件,3個任務分別為LJ 2.5、EAM、Tersoff。經(jīng)過測試,目前使用RTX 4090運行ReaxFF/C任務有bug,故放棄ReaxFF/C。也有網(wǎng)友提出希望測試VASP,但此軟件是純商業(yè)軟件,筆者個人未購買使用許可,故無法進行測試,Material Studio同理(建議自發(fā)抵制VASP、MS這類溢價軟件,尤其是MS)。本次測試所用的4款經(jīng)典MD軟件是當前最主流的,參考2021年計算化學公社論壇“你最常用的計算化學程序和DFT泛函”投票結果統(tǒng)計(http://bbs.keinsci.com/thread-23482-1-1.html)。
GROMACS 2022.3根據(jù)筆者博客上公布的流程(https://blog.enthalpy.space/archives/60)編譯CUDA版本;AMBER22根據(jù)筆者博客上公布的流程(https://blog.enthalpy.space/archives/64)編譯串行+CUDA版本,因為不測試多GPU并行,所以不編譯MPI版本,也不啟用NCCL;NAMD3直接使用官網(wǎng)提供的Alpha13預編譯版本(NAMD_3.0alpha13_Linux-x86_64-multicore-CUDA-SingleNode.tar.gz,NVIDIA最新的測試也使用了此版本);LAMMPS版本為23Jun2022_update1,使用cmake預設文件“basic.cmake”和“kokkos-cuda.cmake”進行編譯(“kokkos-cuda.cmake”中“Kokkos_ARCH_PASCAL60”改為“Kokkos_ARCH_AMPERE86”,未選擇針對Ada Lovelace架構優(yōu)化是因為目前沒有相關選項),同時額外指定編譯REAXFF包(-D PKG_REAXFF=on)。
3 發(fā)揮RTX4090的最大性能——選擇合適的CPU
GMX的開發(fā)遵循硬件資源利用率最大化的原則,因此近些年來其GPU加速一直采用CPU+GPU的方案,運行MD模擬時需要CPU參與部分計算工作,CPU-GPU的任務分配在一定程度上可人工調節(jié),以獲得最優(yōu)效率。在最新的版本中,GMX最多可將非鍵相互作用、成鍵相互作用、PME、坐標/速度/力更新和約束計算完全offload到GPU上運行(GPU-resident模式,須在mdrun命令中添加“-bonded gpu -update gpu”),但域分解(domain decomposition)、對搜索(pair search)、一些特殊力的計算以及特殊算法仍必須使用CPU執(zhí)行。值得一提的是,只有當CPU資源嚴重匱乏時,采用GPU-resident模式才能快于使用CPU計算成鍵相互作用(J. Chem. Phys. 2020, 153, 134110, Fig. 10),而“CPU資源嚴重匱乏”對于不同模型并無確定的分界點,因此本次測試將分別記錄以這兩種方式運行GMX的性能數(shù)據(jù)。
近些年來,GPU性能增速飛快,CPU的性能開始表現(xiàn)出不足,例如2020年9月發(fā)布的NVIDIA GeForce RTX 3090,若用來運行GPU加速GMX,須配合同期的高端CPU——AMD Ryzen R9 5900X才能發(fā)揮出大部分性能。而RTX 4090的理論性能相較于RTX 3090翻倍有余,CPU性能的瓶頸將更為明顯,因此,非常有必要研究如何讓RTX 4090在GROMACS任務中發(fā)揮最大性能。
AMBER、NAMD3、LAMMPS這3款MD軟件的GPU加速模塊均采用了“純GPU”方案,這與GMX不同。采用這種方案的程序在運行時僅會占用1個CPU線程,幾乎所有計算都在GPU上完成。但CPU單核性能對這類MD任務運行速度的影響依然值得考慮。
本次測試使用了4款典型的CPU,其中,AMD Ryzen R9 7950X和intel Core i9 13900K都是最新的頂級MSDT平臺CPU,特點是單核性能都非常強,多核性能也不弱;AMD EPYC 7R32是計算化學公社社長盧天老師(@sobereva)近期推薦的一型高性價比服務器CPU,適合計算密集型應用,具有48顆Zen2核心;intel XEON Platinum 8369B是近期intel陣營的高性價比服務器CPU,具有32顆Sunny Cove核心,在GMX測試中最多同時使用了2顆此CPU(64核),不使用8375C是因為此CPU遭到了奸商掃貨,價格暴漲。
測試使用shell腳本自動運行,詳見SI。在GMX測試中,STMV-NPT、STMV-GMX和benchPEP-h的性能數(shù)據(jù)并非直接取自mdrun運行日志,而是扣除Write traj.項的Wall time后重新計算。因為這3個模型模擬過程中不寫軌跡,但GPU計算完成后會花較長時間寫gro文件,而mdrun運行日志給出的性能數(shù)據(jù)包含了這一耗時。在運行時間較長的生產(chǎn)模擬中這一耗時可忽略不計,而在benchmark任務中理應扣除這一耗時。

圖1展示了GMX運行各模型MD模擬的速度與所使用的CPU核數(shù)之間的關系。A和A-2模型中有大量成鍵項數(shù)量與原子數(shù)比值很大的分子(即烷烴和表面活性劑,其原子數(shù)占總原子數(shù)的60%),因此成鍵相互作用使用CPU計算與使用GPU計算的性能差異很明顯,在圖中直觀地表現(xiàn)為兩條曲線的交叉角度很大。其中A-2模型的cutoff更小,非鍵相互作用計算量更少,進一步突出了上述差異。在1250萬原子的benchPEP-h模型的測試中,通過檢查nvidia-smi dmon性能監(jiān)控日志可發(fā)現(xiàn),如果使用CPU計算成鍵相互作用,RTX 4090運行此模型時會出現(xiàn)間歇性的低時鐘占用率、低功耗狀態(tài),且PCIe實時數(shù)據(jù)傳輸速率一直維持在近10GB/s,峰值可達20GB/s;而若采用GPU-resident模式,可以觀察到GPU間歇性“熄火”的狀況有一定改善,且PCIe數(shù)據(jù)傳輸量也有所減少;圖1也顯示對于該模型采用GPU-resident模式的模擬速度完全快于使用CPU計算成鍵相互作用??傊?,對于大多數(shù)體系,只要CPU資源不是極度匱乏,都建議把成鍵相互作用放在CPU上計算(在mdrun命令中添加“-update gpu”,不添加“-bonded gpu”);而對于主觀估計為CPU資源極度匱乏(例如使用服務器CPU搭配多塊高性能GPU),或體系中成鍵項數(shù)量與原子數(shù)比值很大且使用了較小cutoff,或體系極度龐大(近千萬原子級別)的情況,應當嘗試采用GPU-resident模式,觀察其速度是否更快。
7R32作為4款CPU中多核理論性能最強者,運行GPU加速GMX卻最慢,其原因是GPU加速GMX時CPU部分的計算是純OpenMP并行,這種并行模式在高并行度下并行效率低,且對CPU核心間通信延遲很敏感,而7R32的理論單核性能較差,其多核理論性能靠核心數(shù)量支撐,且CPU本身采用小芯片設計,48個CPU核心分布在6個CCD上,跨CCD延遲較高。
8369B雖然理論單核性能沒有比7R32高很多,但它是單Die設計,核心間通信延遲很低,所以運行GPU加速GMX時其表現(xiàn)明顯優(yōu)于7R32(部分項目略低于之是因為受到客觀條件限制,8369B使用了機架式平臺,散熱較差,RTX 4090高負載下的Boost頻率比7R32所用的塔式平臺低50MHz)。
7950X的表現(xiàn)比8369B更好,主要原因是其單核理論性能極強,達到了7R32、8369B的2倍以上,然而,7950X仍稍弱于13900K。
13900K采用了混合架構,P-Core與E-Core的性能差異極大,線程綁定的OpenMP并行在這種CPU上會使線程間有明顯的負載不均衡問題,最終導致無法發(fā)揮出CPU的完整性能。從圖1中也可發(fā)現(xiàn),8-9核處普遍有一斷層,但是,從第12核左右開始,混用P-Core與E-Core的速度就會反超使用8個P-Core的速度,intel Raptor Lake相較于前代Alder Lake增加E-Core數(shù)量、增大E-Core緩存、優(yōu)化P-Core與E-Core間延遲是有明顯益處的。13900K也是4款CPU中表現(xiàn)最好者。此外,從圖中還可看出,24核稍慢于23核,因此,在使用13900K時,建議留一個E-Core供系統(tǒng)進程和GPU驅動使用,這也是GMX手冊所建議的。
值得注意的是,13900K中16個E-Core的性能在本測試中僅相當于5-6個P-Core,且13900K本身還有混合架構導致的線程負載不均衡問題,但其配合RTX 4090運行GPU加速GMX的性能卻比7950X稍強,出現(xiàn)這一現(xiàn)象的原因除了13900K P-Core的理論單核性能稍強于7950X外,也包括其核心間通信延遲總體上比7950X更低。7950X跨CCD的延遲過高,嚴重限制了其性能發(fā)揮。實際上從圖1中也能看出,部分7950X的曲線在8-10核處有一凹陷,且8核之后曲線斜率明顯變小。@ECSM_Official在這2款CPU的首發(fā)評測中就已測試了它們的核心間延遲:Raptor Lake S,再進一步,Intel Core i9 13900K評測;它很接近完美了,AMD R9 7950X全面評測。
綜上,在GPU加速GMX這一應用場景中對CPU的需求有以下特征:首先,需要單核性能與多核性能都強的CPU,相同理論多核性能下,單核越強、核數(shù)越少越好;其次,核心間通信延遲對CPU性能發(fā)揮有很大負面影響。

圖2展示了4款CPU配合RTX 4090運行GMX、AMBER、NAMD3和LAMMPS的性能,0%基準線是7950X。前2幅小圖是圖1的另一種表現(xiàn)形式,從中可以發(fā)現(xiàn),對于GMX,CPU多核性能對不以GPU-resident模式運行MD任務的速度有很大影響,但對GPU-resident模式影響較小。從后4幅小圖中可以發(fā)現(xiàn),CPU單核性能對4款MD軟件運行MD任務的速度均有影響,其中對GMX和AMBER的影響很明顯,而對NAMD3和LAMMPS的影響相對小一些。
再談談采購建議。若使用RTX 4090加速GMX,當下最佳搭檔CPU是intel Core i9 13900KF,如果采購時發(fā)現(xiàn)AMD Ryzen R9 7950X及其主板的價格遠低于前者,也可買之。如果預算較低,打算選4080 16GB、3090Ti級別的GPU,推薦13700KF,不推薦7900X。暫不推薦任何服務器CPU,尤其是AMD EPYC CPU,若已有這類CPU,可在此基礎上添加多塊RTX 4090,為每塊RTX 4090保留8-16核,以GPU-resident模式運行MD模擬。采購用于搭配RTX 4090運行AMBER、NAMD3或LAMMPS的CPU時,單核性能同樣是首要關注因素,但不必選13900K,用13600KF配2塊RTX 4090即可。
4?RTX 4090實際性能是否“翻倍”?
RTX 4090的理論性能是RTX 3090Ti的2倍,這一次的性能提升可能是十多年來NVIDIA消費級GPU性能提升最大的一次,非常有必要測試并對比兩者用于GPU加速經(jīng)典MD模擬時的實際性能。此外,實際做研究時,在系統(tǒng)穩(wěn)定的前提下計算速度越快越好,能效并不重要,超頻是可行的操作,筆者自己跑生產(chǎn)模擬時也會對硬件進行一些保守的超頻,所以有必要測試保守超頻的收益。

圖3展示了RTX 4090和超頻150MHz且功耗上限提升至600W的RTX 4090相較于RTX 3090Ti在各MD任務下的性能提升百分比,數(shù)據(jù)在3號和4號硬件平臺(13900K平臺)上測得。從圖中可以發(fā)現(xiàn),RTX 4090運行經(jīng)典MD模擬的性能并沒有實現(xiàn)普遍的“翻倍”,在不同模型、不同軟件下的表現(xiàn)各不相同,超頻收益普遍較明顯。
對于GMX,當成鍵相互作用在CPU上計算時,不同模型的表現(xiàn)差異非常大,其中A-2模型極低的提升幅度顯然是由于CPU性能有嚴重瓶頸,benchPEP-h模型提升幅度較低是因為CPU-GPU通信有明顯瓶頸,這些都已在第3節(jié)有所討論。從圖1中可以知道,上述2個模型以GPU-resident模式運行速度明顯更快,在實際生產(chǎn)模擬中必然會以GPU-resident模式運行,故可忽略圖3第1幅小圖中的這2個模型。當GMX以GPU-resident模式運行時,不同模型的表現(xiàn)差異顯著縮小。對于GMX和AMBER來說,幾個STMV模型基本實現(xiàn)了“翻倍”,其中AMBER的STMV-NPT模型提升幅度高達108.65%。作為“純GPU”程序,AMBER和NAMD3下各個模型的提升幅度均達到了70%以上;AMBER的上限更高,且超頻收益與超頻幅度相符;而NAMD3下沒有任何模型實現(xiàn)“翻倍”,超頻的收益也不大。對于LAMMPS,LJ 2.5和EAM兩個任務中RTX 4090性能實現(xiàn)“翻倍”,Tersoff任務離“翻倍”還有較大距離。而對比NVIDIA公布的測試結果,RTX 4090運行LAMMPS的性能(具體數(shù)據(jù)見SI)仍明顯不如A100,甚至不如V100,這顯然是因為RTX 4090無FP64執(zhí)行單元,雙精度浮點性能太弱??傊?,以上結果體現(xiàn)了模型大小以及MD程序本身的設計對RTX 4090性能發(fā)揮的重要影響,實際上,模型大小的影響在一定程度上是軟件優(yōu)化的問題。
此外,通過檢查nvidia-smi dmon性能監(jiān)控日志還可發(fā)現(xiàn),在測試運行過程中,全程顯存占用率不超過60%,對GMX而言甚至不超過40%,所以顯存不存在瓶頸,這否定了此前一些人關于“顯存瓶頸”的猜想。需注意,顯存占用率和顯存使用量不同,前者是指在采樣周期內GPU讀寫顯存的時間百分比。
結合本節(jié)和第3節(jié)內容可得出結論:當前,制約RTX 4090的性能在GMX、AMBER、NAMD3和LAMMPS中發(fā)揮的主要瓶頸是CPU單核性能以及軟件優(yōu)化,對于GMX,CPU多核性能、CPU核間通信延遲以及CPU-GPU通信能力是次要瓶頸;當前,RTX 4090運行經(jīng)典MD模擬的性能相較于RTX 3090Ti總體上有62~109%的提升,在使用合適的軟件和模型的情況下,確實可實現(xiàn)“翻倍”,超頻150MHz后實際提升幅度為1~6%。如今Ada Lovelace架構剛剛上市,并無針對性優(yōu)化,預計在將來幾個月,隨著幾款MD軟件以及編譯器和驅動層面對于Ada Lovelace架構的優(yōu)化,RTX 4090運行MD模擬的性能還會有進一步提升。
5 GMX、AMBER、NAMD3速度對比
去年12月有朋友對NVIDIA官網(wǎng)測試結果做了詳細分析(http://bbs.keinsci.com/thread-27072-1-1.html,4樓),討論的是STMV模型,但NVIDIA官方在使用不同軟件運行STMV模型時所用的具體參數(shù)區(qū)別很大,無法實現(xiàn)不同程序間的公平對比,因此,筆者重新使用一些公平的參數(shù)對GMX、AMBER和NAMD3這3款主流MD軟件的速度進行對比。

圖4選取了在3號和4號硬件平臺(13900K平臺)上測得的數(shù)據(jù),以在單CPU線程、GPU-resident模式下運行GMX的速度為100%基準;“max perf.”指的是圖1中相應曲線最高點的數(shù)值,即充分利用13900K CPU資源后能達到的最高性能。從圖4中可發(fā)現(xiàn),雖然GMX的GPU-resident模式未徹底將MD計算轉移到GPU,但其只用1個CPU線程來與AMBER公平對比時并無明顯弱勢,而GMX充分利用CPU資源后,性能還有巨幅提升,最終遠超AMBER;此外,NAMD3的性能明顯弱于GMX和AMBER。綜上,當前還是最推薦廣大研究者使用GMX和AMBER做經(jīng)典MD模擬,這2款軟件性能都不錯(根據(jù)NVIDIA的測試,后者多GPU并行效率極高),且在功能方面可以互補,足以勝任絕大部分研究工作。
6?特別篇:一些老數(shù)據(jù)
SI中提供了一些以前的測試數(shù)據(jù)(xlsx)。這些數(shù)據(jù)僅供參考,不在此作仔細討論,但有一點應當注意:評估一款NVIDIA GPU加速MD模擬的性能不應只關注FP32,也應該看其他部分,例如Tensor Core。數(shù)據(jù)顯示GTX 1080Ti加速MD模擬的性能不如Quadro RTX 4000,這是因為Turing架構(SM75)引入了Tensor Core,導致FP32只有7 TFLOPS的Quadro?RTX 4000比FP32有11 TFLOPS的GTX 1080Ti還強。從Ampere架構(SM86)到Ada Lovelace架構(SM89)未改變SM中各類執(zhí)行單元的比例,所以RTX 40系列相較于RTX 30系列FP32性能翻倍基本相當于MD模擬整體性能翻倍。至于采購建議,若預算極低,需要購買二手老GPU,極不推薦沒有Tensor Core的NVIDIA GPU。
SI
基準數(shù)據(jù)集和通用性一般的測試腳本(tar.bz2);經(jīng)簡單整理的測試結果原始數(shù)據(jù)(xlsx)。文件下載地址:https://www.aliyundrive.com/s/9eUZ19WGepx,提取碼:xp66
致謝
本次測試所用的硬件由bilibili UP主@51972和庚子計算(濟南庚子矩陣云科技有限公司)遠程贊助,同時感謝他們專業(yè)且高效的協(xié)作,使本次測試得以順利完成。
推薦閱讀
1.?????? GROMACS Manual(https://manual.gromacs.org/current/manual-2022.3.pdf,GMX官方文檔,應詳細閱讀GPU運行mdrun以及Performance相關章節(jié));
2.?????? J. Chem. Phys. 2020, 153, 134110(https://aip.scitation.org/doi/full/10.1063/5.0018516,該文是了解GPU加速GMX的必讀文章,由GMX開發(fā)團隊核心成員撰寫,極為深入地講解了近年來GMX的GPU加速功能,并進行了一些性能基準測試,其中提到的跨GPU直接通信功能已從2021版開始正式引入);
3.?????? NVIDIA HPC Application Performance(https://developer.nvidia.com/hpc-application-performance,英偉達對其數(shù)據(jù)中心/HPC專用GPU的性能測試,長期更新);
4.?????? 分享最近給某超算平臺GPU節(jié)點做的Benchmark(http://bbs.keinsci.com/thread-30061-1-1.html,筆者于2022年5月完成的小測試,工作量不大);
5.? ? ? ?http://bbs.keinsci.com/thread-27072-1-1.html(此貼4樓基于文獻數(shù)據(jù)討論了幾款MD軟件的速度,但個別描述有誤);
6.?????? GROMACS (2019.3 GPU 版) 并行效率測試及調試思路(http://bbs.keinsci.com/thread-13861-1-1.html,由鐘成老師撰寫,發(fā)布于2019年,詳細講解了對GMX的GPU加速性能進行測試的思路,但部分內容可能稍有過時)
?
碎碎念
為什么不寫成正式的論文投稿到學術期刊?
1. 投稿論文需經(jīng)過漫長的同行評議階段,而本文具有時效性,如果投稿論文,等到論文發(fā)表,文中很多內容將會過時。
2. 拒絕水論文。這篇benchmark文章如果寫成正式的論文,只有核心期刊或末流SCI的水平,這不符合筆者個人現(xiàn)在應當有的水平。
3. 做研究應當在一定程度上遵循實用主義。本次測試的目的是讓大家直觀地了解軟硬件的性能和特點,為采購硬件、選擇軟件提供參考,這種目的用格式開放的網(wǎng)絡圖文來傳播會更高效、實用。