對于大多數超級計算中心來說,計算 能效 已成為一個主要的決策標準。數據中心一旦建成,就能在現有的功率上限內運行,無需進行昂貴且耗時的改造。提高工作負載的吞吐量,意味著提高每瓦的工作效率。 NVIDIA 產品在過去幾代中一直致力于最大限度地提升每千瓦時 (kWh) 的實際應用性能。
本文將探討如何使用 Omniverse 的 Vienna Ab initio Simulation Package(VASP)。VASP 是一款用于原子級材料建模的計算機程序,它基于第一原理進行電子結構計算和量子力學分子動力學模擬。
對于研究人員而言,材料屬性研究是一個活躍的領域,他們將超級計算設施用于從高溫、低壓超導體到新一代太陽能電池等廣泛的案例。VASP 是這些數字研究的主要工具。
本文介紹了我們在 2022 年針對不同系統大小的簡單化合物 Hafnia (HfO2) 進行的多節點 VASP 可擴展性調查。有關詳細信息,請參閱使用 NVIDIA Magnum IO 擴展 VASP。
實驗設置
我們之前工作的這種以能量為中心的擴展所使用的環境和設置大致相同。本節詳細介紹了我們用于重現結果的實驗設置。
硬件: NVIDIA GPU 系統
- NVIDIA Selene 集群 The content provided is already concise and clear. However, for consistency with previous revisions, I will add spacing between English and Chinese characters: ‘
- NVIDIA DGX A100 ‘
- AMD EPYC 7742 64C 2.25 GHz
- NVIDIA A100 Tensor Core GPU(80 GB)(每個節點 8 個)
- NVIDIA HDR InfiniBand (每個節點 8 個)
硬件:CPU 系統
- 雙插槽 Intel 8280 CPU (每個插槽 28 個核心)
- 每個節點 192 GB
- 每個節點的 NVIDIA HDR InfiniBand
軟件
NVIDIA GPU 軟件堆棧的所有組件都已更新。然而,我們特意使用了與 NVIDIA GPU 軟件堆棧相同的組件,這些組件在之前的工作中已有應用。VASP 已更新至 2023 年發布的 6.4 版本。
- NVIDIA HPC SDK 22.5 (以前稱為 PGI)
- NVIDIA Magnum IO NCCL 2.12.9
- CUDA 11.7
- FFT
- GPU:FFT 庫 – cuFFT 10.7.2 (GPU 側)
- CPU:FFTW 接口來自 Intel MKL 2020.0.166
- MPI:使用 PGI 編譯的 open MPI 4.1.4rc2
- UCX
- VASP 6.4.0
對于在英特爾 CPU 集群上運行,我們采用了相應的優化工具鏈,其中包括撰寫本文時可用的最新版本:
- Rocky Linux 版本 9.2 (Blue Onyx)
- Intel oneAPI HPC Toolkit 2022.3.1
- MPI:hpcx-2.15
推斷運行時和能耗
詳情見使用 NVIDIA Magnum IO 擴展 VASP。最終,我們縮短了基準測試的運行時間,并通過外推得到完整結果以節省資源。換句話說,我們僅使用了以下公式中顯示的一小部分能量:
該方法擴展了能量,假設用于一次迭代的能量同樣不變:
化學和模型
- 化學:Hafnia (HfO)2)
- 型號:
- 3x3x2:216 個原子,1280 個軌道
- 3x3x3:324 個原子,1792 個軌道
- 4x4x3:576 個原子,3072 個軌道
- 4x4x4:768 個原子,3840 個軌道
捕獲能源使用情況
GPU 基準測試是在 NVIDIA Selene 超級計算機上完成的,該超級計算機配備了智能 PDU,可以通過 SNMP 協議提供關于當前功耗的信息。在開始應用程序之前,我們使用在每個節點的后臺啟動的簡單 Python 腳本收集數據。
我們收集了頻率為 1 Hz 并帶有時間的功耗百分比。鑒于 GPU 在混合 DFT 級別運行時,VASP 主要使 CPU 處于空閑狀態,因此這種日志記錄幾乎不會產生任何用度。根據文件中的信息和 VASP 輸出中包含的時間,我們計算了代碼和項目每個部分的能耗,如上所述。
優化以實現最佳能效 (MaxQ)
默認情況下, NVIDIA GPU 以最大時鐘頻率和足夠的負載運行,以確保提供最佳性能,從而縮短解決問題的時間。但是,應用程序某些部分的性能最初可能不會主要受時鐘頻率的限制。
更高的時鐘頻率需要更高的電壓,而這反過來又會導致更高的能量消耗。因此,在最短的時間內解決問題的最大 GPU 時鐘頻率的最佳點可能不同于實現最低能量所需的最佳點。
對于完全受內存負載和存儲限制的假設應用程序,人們會認為,足以保持內存帶寬飽和的最低頻率應該在不影響性能的情況下提供更好的解決方案能量。
鑒于實際應用程序具有混合計算配置文件,且對頻率的依賴因工作負載而異,因此可以逐個確定理想頻率。這是針對此處展示的 VASP hafnia 工作負載完成的。但是,我們觀察到,我們的研究結果也適用于其他 高性能計算 (HPC) 應用程序。
頻率可以通過 NVIDIA 系統管理接口 (SMI) 查看,如下所示:
-lgc --lock-gpu-clocks= Specifies <minGpuClock,maxGpuClock> clocks as a pair (1500,1500) that defines the range of desired locked GPU clock speed in MHz. Setting this will supersede application clocks and take effect regardless if an app is running. Input can also be a singular desired clock value (<GpuClockValue>). For example: # nvidia-smi -pm 1 # nvidia-smi -i 0 -pl 250 # nvidia-smi -i 0 -lgc 1090,1355 |
收集的其他數據包括:
- CPU 多節點性能
- MaxQ 的單節點 SM 頻率掃描
成果
本節展示了 GPU 時鐘頻率對 VASP 模擬中能耗的影響,強調了計算速度和能耗之間的權衡。它還通過分析數據和熱圖來盡可能縮短求解時間和能耗,從而探索優化 HPC 中性能和能耗平衡的復雜性。
GPU 頻率提升效率
在追求以更高的科學洞察力實現最低能源成本的過程中,GPU 的時鐘頻率可以動態設置為低于最大值的速率。NVIDIA A100 GPU 的最大時鐘頻率為 1410 MHz。
降低 GPU 時鐘頻率有兩個影響:它降低 GPU 可以達到的最大理論計算速率,從而減少 GPU 的能源消耗。但它也會減少 GPU 在執行計算時產生的熱量。
在圖 1 和 2 中,數據被歸一化為一個啟用 NCCL 的節點所使用的能量,該節點的最大頻率為 1410 MHz.顯示的所有數據都是針對 216 個原子的 hafnia 情況。垂直軸是匹配的,因此可以看到啟用和禁用 NCCL 之間的相對能量使用情況。


無論在啟用 NCCL 還是禁用 NCCL 的情況下,與單節點最大頻率的能耗相比,減少 GPU 時鐘最多可將能耗降低 10%.在這兩種情況下,大多數運行的最低能耗接近 1250 MHz GPU 時鐘。
可擴展性和能耗
我們之前的調查表明,在混合 DFT 理論級別的 VASP 中計算大型原子系統時, NVIDIA GPU 用戶可以獲得顯著的性能。雖然這項工作的重點是能源使用和效率,但性能仍然是一個關鍵問題。


為了查看能源使用趨勢,我們首先比較了純 CPU 和 GPU 性能以及能源。雖然這些系統的 CPU 比當前先進的 Intel CPU 晚了兩代,但它們表現出出色的可擴展性和能源使用大致呈線性趨勢。對于最多 32 個節點的單節點范圍,96 個原子的能源使用量增加了 24%,216 個原子的能源使用量增加了 13%,324 個原子的能源使用量增加了 12%。
相比之下,在啟用 NCCL 的情況下,GPU 在相同規模下運行時,216 個原子的能量增加 10%,324 個原子的能量增加 3%.雖然未繪制,但所有三次基于 CPU 的運行的并行效率都保持在 80%以上,因此擴展非常好。
圖 5 和 6 顯示了 GPU 最大可用頻率(1410 MHz)的 GPU 性能數據,且每個節點在四個 A100 GPU 上啟用了 NCCL.請注意,GPU 系統比 CPU 系統快一個數量級,并且可擴展性(線條的斜率)本質上是并行的,因此兩者都以相同的速率擴展。


圖 5 顯示,32 個 CPU 節點上 324 個原子的情況下實現的性能與單個 A100 GPU 節點的速度大致相同。與基于 CPU 的模擬相比,GPU 系統即使運行功耗更高,但消耗的能量不到 20%.
另一個值得注意的問題是,GPU 系統的 1 至 32 個節點之間的能源使用幾乎不變。對于這些規模的 Hafnia,A100 GPU 系統的能效是 5 倍,同時在相同的運行時間內提供超過 32 倍的吞吐量。
圖 7 和 8 顯示了在啟用和禁用 NCCL 的情況下 VASP 的可擴展性。在 128 個節點(或 1024 個 GPU)下,NCCL 提供了大約兩倍的性能。我們之前的研究表明,VASP 6.4.0 的性能略高于 6.3.2.
這兩個圖是相對于單節點 VASP 6.3.2 結果繪制的。它們顯示,與 576 個原子的 114 倍相比,128 個節點的速度提高了 107 倍;與 768 個原子的 115 倍相比,速度提高了 113 倍。


需要注意的最重要影響是模型的性能范圍從 216 個原子到 768 不等。這使得使用 NCCL 而不是僅使用 MPI 成為可能,在給定數量的 GPU 上為最終用戶提供 2 倍以上的性能。或者,在給定的并行效率下,啟用 NCCL 的 VASP 混合 DFT 計算可以擴展到更多的 GPU 數量,以壓縮運行時間。
有時有人擔心,支持 GPU 的服務器所需的功率是基于 CPU 的服務器所需功率的 4 倍到 8 倍。雖然 GPU 服務器確實需要更多的功率,但與 CPU 相比,加速應用程序在完成任務時使用的能源通常要少得多。能源是用時間乘以的。因此,盡管 GPU 服務器在運行時可能會消耗更多的功率(瓦),但運行時間更短,因此使用的總能源也更少。
圖 9 顯示了 GPU 和 CPU 工作負載的比較,其中 CPU 工作負載在低功耗下長時間運行,而 GPU 工作負載在更高功率下更早完成,這使得 GPU 能夠使用更少的能源。GPU 工作負載在高功率下運行速度非常快。能源是每個時間歷史的領域。

圖 10 顯示了使用 NCCL 相比僅使用 MPI 可以提供的能源優勢。MPI 和 NCCL 的 GPU 服務器在大致相同的功率級別上運行,但由于使用 NCCL 擴展更好,運行時間更短,因此消耗的能源更少。
兩者之間的能量差距隨著節點數量的增加而增加,這僅僅是因為僅 MPI 的可擴展性明顯較差。隨著并行效率的下降,模擬運行的時間更長,而無法執行更高效的工作,因此消耗更多的能量。
從量化角度來看,hafnia hybrid-DFT 計算表明,使用 NCCL 時,在 128 個節點上以最大 GPU 頻率運行 216 至 768 個原子之間的模型的能耗降低了 1.8 倍(圖 10 和 11)。
使用較低的節點數可以減少能量差,因為在較少的節點上運行時,僅 MPI 的模擬具有相對較高的并行效率。折衷是每次模擬的運行時間都會延長。


作為 VASP 用戶或 HPC 中心經理,您可能會問自己:“對于給定的大型原子系統,什么是最有效的點,或者每次模擬需要多少節點?”這是一個非常好的問題,我們預計在不久的將來會有越來越多的人提出這個問題。
通常情況下,節點數量越少,運行的并行效率就越接近 100%,因此能耗也會更低。圖 7 使用 NVIDIA Magnum IO 擴展 VASP 展示了并行效率,而本文的圖 10 和圖 11 則展示了能耗。
然而,其他因素(如研究人員的時間、發布截止日期和外部影響)可能會增加更快地獲得模擬結果的價值。在這些情況下,在給定時間內最大限度地增加完成的運行次數或最大限度地減少端到端等待結果的時間意味著,如果將算法配置為獲得最佳并行效率,將使用更少的能源。例如,啟用 NCCL 的運行。
針對能源使用限制更大限度地提高應用程序性能還有助于優化 HPC 中心經理的投資回報。
平衡速度與能量
圖 10 或 11 可能會被解釋為建議在盡可能少的節點上運行 VASP 仿真。對于更專注于最大效率而非科學輸出的 HPC 而言,這可能是正確的決定。我們預計這種態度不會常見。
但是,這樣做很容易忽略成本,而成本并沒有體現在單個指標(例如每次模擬的能耗)中。例如,研究人員的時間可以說是科學工具鏈中最寶貴的資源。因此,大多數 HPC 中心都希望探索一種更平衡的方法,在減少能耗的同時,最大限度地減少對用戶性能的影響。
這是一個具有一系列解決方案的多目標優化問題,具體取決于目標的求解時間和求解能量的相對權重。因此,我們希望通過嚴格的分析,得出理想解決方案的并行前沿。
不過,快速的方法是在垂直軸上繪制解的能量圖,在水平軸上繪制解的時間圖。通過這種方式可視化數據,兩者之間的最佳折衷是最接近原點的數據點。
圖 12 顯示了啟用 NCCL 和禁用 NCCL 之間的分離,即虛線集群和實線集群,其中實線到達的區域更接近最佳區域。它還顯示了啟用和禁用 NCCL 的最大性能線(藍色)和最大效率線(綠色)之間的一些差異。

但是,很難就運行的最佳點得出結論。是 32 個節點還是 64 個節點?為了幫助回答這個問題,圖 13 顯示了一張熱圖,用于計算與原點的距離,其中綠色最接近最佳。

總結
在可預見的未來,能源將繼續是一種寶貴的商品。我們已經在這里和之前的博文中表明,NVIDIA 加速計算平臺 在使用 VASP 進行中型和大型分子混合 DFT 計算時,相比于僅使用 CPU 的平臺和僅使用 MPI 的加速平臺,在多節點模擬中的硬件和軟件性能要高得多。
基于這些結果,我們鼓勵將 VASP 用于最小系統以外的任何系統的研究人員使用 NVIDIA 加速平臺。這種方法每消耗千瓦時消耗的能源更少,并能在單位時間內完成更多工作。
這項研究的結果表明,模擬的能源使用量因原子數的不同而變化超過兩個數量級。但是,優化機會不如總使用量大。
與使用 NVIDIA Magnum IO NCCL 相關的節能機會從 216 個原子在最佳時間 128 個節點時的 41 千瓦時到解決方案(A100 GPU 為 1410 MHz),到 768 個原子在 128 個節點時的每次模擬 724 千瓦時不等。運行最佳的解決方案能量(1250 MHz)不會對 216 個原子的數量產生重大變化,并且將啟用和禁用 NCCL 之間的差異降至 768 個原子的每次模擬 709 千瓦時。
為了將對運行時的影響降至最低,我們建議針對大型 VASP 系統運行多節點、多 GPU 仿真,具體如下:
- 在 NVIDIA 加速 GPU 平臺上運行 VASP,而不是僅在 CPU 上運行。
- 使用 NVIDIA Magnum IO NCCL 更大限度地提高并行效率。
- 在 16 和 64 個節點(128 到 512 個 A100 GPU)之間運行 216 個原子的 hybridDFT 計算;對于較大的系統,運行更多,而對于較小的系統,運行更少。
- 以 1250 MHz (GPU 時鐘)的 MaxQ 點運行,最后可節省 5-10%的能源。
除了本文中分析的 VASP 中的混合 DFT 之外,軟件開發者還可以通過(按影響降序)以下方式實現節能:
- 使用 GPU 加速應用程序
- 盡可能多地進行優化,包括隱藏不必要的非生產性部件
- 讓用戶以優化的頻率運行
想要了解更多關于 NCCL 和 NVIDIA Magnum IO 的信息,請觀看 GTC 會議中的《擴展深度學習訓練:借助 NCCL 實現 GPU 間的快速通信》和《優化基于 NVIDIA GPU 的應用程序的能效》。
?