在高性能計算(HPC)領域,NVIDIA 通過提供高度優化的 NVIDIA 高性能共梯度(HPCG)基準測試程序(作為 NVIDIA HPC 基準測試程序集合的一部分),不斷推動 HPC 發展。
現在,我們在/NVIDIA/nvidia-hpcg GitHub 存儲庫中提供 NVIDIA HPCG 基準測試程序,使用其高性能數學庫、cuSPARSE 和 NVIDIA Performance Libraries (NVPL) 在 NVIDIA GPUs 和 NVIDIA CPUs 上實現稀疏矩陣向量乘法 (SpMV) 和稀疏矩陣三角形求解器 (SpSV) 的最佳性能。
了解 HPCG 基準測試
HPCG 基準測試是對高性能 LINPACK (High-Performance LINPACK) 基準測試的補充,后者通常用于在 TOP500 榜單中對超級計算機進行排名。雖然 High-Performance LINPACK 衡量浮點運算峰值,但它并不能完全代表依賴內存訪問模式和數據局部性的真實應用程序的性能。
這正是 HPCG 的用武之地,通過模擬科學計算中常見的各種計算和數據訪問模式,提供更全面的評估。HPCG 基準用于在 TOP500 榜單中對超級計算機進行排名,與 HPL 基準相同。
HPCG 評估預處理共軛梯度 (PCG) 方法,該方法對于求解計算流體動力學、結構分析和材料科學等領域的大型稀疏線性系統至關重要。它通過在 3D 域中使用每個網格點 27 點模板構建全局分布式稀疏線性系統,以評估 HPC 系統的內存帶寬和處理真實應用程序的延遲。
此設置由 MPI 進程管理,可實現跨處理器的可擴展計算。主要操作如下:
- 向量內積
- 更新
- 用于對稱 Gauss-Seidel (SYMGS) 平滑處理的 SpSV
- SpMV
有關基準測試的更多信息,請參閱 HPCG Benchmark Technical Specification。
HPCG 的效率在很大程度上依賴于 SpMV 和 SpSV 運算的性能。這些計算構成了迭代 PCG 方法的支柱,直接影響基準準確模擬真實工作負載的能力。高性能的 SpMV 和 SpSV 實施可以顯著提高 HPC 系統的整體性能,讓人們深入了解其處理復雜科學計算的能力。
提高 HPCG 的性能
NVIDIA HPCG 基準測試程序的性能通過其專門的數學庫得到顯著提升:適用于 GPU 的 cuSPARSE 和適用于 aarch64 架構(例如 NVIDIA Grace CPU)的 NVPL Sparse。這些庫對于加速對 PCG 方法等迭代算法至關重要的稀疏線性代數運算不可或缺。
cuSPARSE 已針對 NVIDIA GPU 架構進行優化,支持 SpMV、稀疏矩陣乘法(SpMM)和 SpSV 等多種功能。這些運算能夠高效處理大規模稀疏矩陣,因此對于許多科學計算至關重要。
另一方面,NVPL Sparse 的目標是 Arm 64 位架構,例如 NVIDIA Grace CPU。它是 NVPL 的一部分,旨在最大限度地提高這些平臺的性能和效率該庫包含針對稀疏線性代數定制的功能,使應用程序能夠充分利用基于 Arm 的架構的功能。
最近發布的 NVPL Sparse 測試版可提升 Grace CPUs 的性能,并在異構計算環境中提供競爭優勢。
cuSPARSE 和 NVPL 稀疏通用 API 在配置數據布局、支持混合數據類型以及選擇針對特定計算任務定制的算法方面提供了靈活性,從而確保不同應用和優化機會之間的兼容性。
- CSR 和 ELLPACK 等可配置存儲格式。
- 用于輸入、輸出和計算的靈活數據類型。
- 32位和64位等各種索引選項。
內存管理功能和廣泛的一致性檢查進一步增強了不同計算場景中的可靠性和性能一致性。
通過將 cuSPARSE 和 NVPL Sparse 集成到 NVIDIA HPCG 基準測試程序中,它增強了 SpMV 和 SpSV 等關鍵操作。這些庫使您能夠在 NVIDIA GPU 和 Grace CPU 架構上實現峰值性能,提高超級計算能力,以有效管理復雜的科學模擬和計算。
優化和創新
對稱 Gauss-Seidel 更平滑涉及稀疏矩陣的向前和向后 SpSV,由于行依賴性,三角形求解本質上是連續的。為了解決這個問題,NVIDIA HPCG 基準程序使用圖形著色來重新排序稀疏矩陣行,從而支持并行處理按顏色分組的獨立行。有關更多信息,請參閱 CUDA 實現的 High Performance Conjugate Gradient 基準。
NVIDIA 還在 NVIDIA HPCG 基準計劃中引入了用于稀疏矩陣的 sliced-ELLPACK 存儲格式。與傳統的 CSR 格式相比,這種格式通過減少下三角形和上三角形矩陣中的零填充來最大限度地減少計算開銷。sliced-ELLPACK 的采用已證明性能有了顯著提升,包括在 NVIDIA DGX H100 平臺上 SpMV 的速度提高了 1.2 倍,SpSV 的速度提高了 1.7 倍。
NVIDIA HPCG 基準測試計劃實施特定策略,以盡可能減少不必要的內存訪問和計算冗余。例如,通過在迭代步驟中將矩陣運算限制為相關部分,并利用專用 API cusparseSpSV_UpdateMatrix
和 nvpl_sparse_update_matrix
,NVIDIA HPCG 基準測試計劃實現了高效的稀疏矩陣更新和計算。
除了使用 NVIDIA 數學 API 之外,NVIDIA HPCG 基準測試程序還包含多項優化,以提高 PCG 執行階段的效率:計算和通信的重疊,以及對不同點對點(P2P)通信模式的支持。
計算和通信重疊
在 SpMV 和 SYMGS 計算等關鍵操作期間,NVIDIA HPCG 基準程序會將計算與通信任務重疊。這一策略包括將邊界數據從 GPU 傳輸到 CPU,使用相鄰進程執行 MPI 發送/接收操作,并將結果傳回 GPU。
NVIDIA HPCG 基準測試程序可實現與 CUDA 流的重疊,從而在與計算內核不同的流中并行執行通信副本,從而減少空閑時間,并提高整體吞吐量。
支持不同的 P2P 通信模式
NVIDIA HPCG 基準測試計劃支持各種點對點(P2P)通信模式,以評估跨多種集群配置的性能。
- 主機 MPI
- CUDA-Aware – MPI
- 主機 All2allv
- CUDA-AWARE All2allv
- NVIDIA 集合通信庫 (NCCL)
每種模式都針對特定的網絡架構和通信模式進行了優化,使HPCG能夠有效評估和優化不同集群環境中的性能。這種靈活性可確保NVIDIA HPCG基準測試程序能夠適應不同的通信基礎設施,并在大規模并行計算中最大限度地提高效率。
異構計算能力
NVIDIA HPCG 基準測試計劃將其優化策略擴展到異構計算環境,無縫集成 NVIDIA GPU 和 NVIDIA Grace CPU。這項方法包括為每個 NVIDIA GPU 分配一個 MPI 排名,為 NVIDIA Grace CPU 分配一個或多個 MPI 排名。
為了更大限度地提高系統各個方面的利用率,我們的策略是將比 Grace CPU 更大的本地問題分配給 GPU,以確保 GPU 和 CPU 的計算能力得到充分利用。在 MPI 阻塞通信步驟 MPI_Allreduce
中,這種方法有助于保持系統組件中工作負載的平衡,從而優化整體性能,并盡可能減少系統任何部分的空閑時間。
在 NVIDIA HPCG 基準測試程序中,GPU 和 Grace CPU 局部問題被配置為僅在一個維度上不同,同時保持其他維度相同。此設計支持在 GPU 和 Grace 排名之間保持相同的維度上進行適當的光環交換操作。
圖 1 顯示了此設計的示例。GPU 和 Grace CPU rank 具有相同的 y
和 z
維度。x
維度不同,因此可以為 GPU 和 Grace rank 分配不同的局部問題。NVIDIA 的 HPCG 基準測試程序可讓您靈活選擇 rank 的 3D 形狀、選擇不同的維度以及配置 GPU 和 Grace rank 的大小。

異構執行模式的性能取決于 3D 網格的形狀、GPU 與 Grace CPU 問題大小之間的比率,以及 GPU 和 CPU 的硬件能力。
在 Grace Hopper 超級芯片 (GH200) 上,GPU 問題大小應為 Grace CPU 問題大小的 16 倍,以便與僅使用 GPU 的執行模式相比,實現 5% 的性能提升。命令行參數在選擇不同維度以及相應地配置 3D 網格維度方面具有很大的靈活性。
HPCG 性能
HPCG 運行時指南指出,“問題大小應反映出對于真正的稀疏迭代求解器而言合理的大小。”通常,這意味著 HPCG 問題大小至少應為可用系統內存的 25%。
這些指南對在 NVIDIA Grace Hopper 超級芯片(GH200)上對 HPCG 進行基準測試提出了一個有趣的挑戰,因為依賴稀疏迭代求解器的真實應用程序可以完全在 CPU 內存中執行計算,完全在 GPU 內存中執行,或兩者兼而有之。
為了更準確地表示GH200上的稀疏迭代求解器性能,我們選擇展示以下問題大小的性能:
- CPU 內存的 25%
- 25%的 GPU 顯存
- 占 CPU 和 GPU 總顯存的 25%
圖 2 顯示了 NVIDIA HPCG 基準測試程序與 NVIDIA GH200-480GB 上的官方 HPCG 基準測試之間的性能比較。為了優化官方 HPCG 基準的并行性,我們使用了 72 個 MPI 等級來管理較小的本地任務。
由于 CPU 軟件優化,僅使用 NVIDIA HPCG CPU 的配置顯示出比官方 HPCG 基準測試 20% 的性能提升。
圖 2 還顯示了僅使用 NVIDIA HPCG GPU 的配置以及異構 GPU 和 Grace CPU 實施的性能,當 Grace CPU 處理可能與 GPU 工作負載重疊的較小問題時,與僅使用 GPU 的設置相比,后者的性能提升了 5%。Grace CPU MPI 排名可以額外處理 GPU 問題大小的 1/16,與在 CPU 上執行的官方 HPCG 基準測試相比,速度提升了 17.4 倍。
最后,當 HPCG 問題占總系統內存(CPU+GPU)的 25% 時,總加速為 4.2 倍。在這種情況下,可以在運行時性能和總問題大小之間進行有利的權衡。問題大小與僅使用大型 CPU 的情況類似;然而,運行時性能提高了 4 倍以上。

實驗在具有 480GB 顯存容量的 NVIDIA GH200 GPU(GH200-480GB)上進行。
總結
開源 NVIDIA HPCG 基準測試程序使用高性能數學庫、cuSPARSE 和 NVPL Sparse,在 GPU 和 Grace CPU 上實現出色性能。它支持僅 GPU、僅 Grace 和異構執行,靈活地配置執行模式。
NVIDIA HPCG 基準測試計劃采用獨特的設計,其中 GPU 和 Grace CPU 問題大小在一個維度上有所不同,而其他維度相同,從而促進高效的光環交換操作。
有關更多信息,請參閱以下資源:
- /NVIDIA/nvidia-hpcg GitHub 庫
- NVIDIA cuSPARSE 開發者頁面
- NVIDIA 性能庫(NVPL)開發者頁面
- 加速計算開發者論壇
?