数据中心/云端

利用 NVIDIA 数学稀疏库加速 HPCG 基准测试性能

在高性能计算(HPC)领域,NVIDIA 通过提供高度优化的 NVIDIA 高性能共梯度(HPCG)基准测试程序(作为 NVIDIA HPC 基准测试程序集合的一部分),不断推动 HPC 发展。

现在,我们在/NVIDIA/nvidia-hpcg GitHub 存储库中提供 NVIDIA HPCG 基准测试程序,使用其高性能数学库、cuSPARSENVIDIA 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_UpdateMatrixnvpl_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 具有相同的 yz 维度。x 维度不同,因此可以为 GPU 和 Grace rank 分配不同的局部问题。NVIDIA 的 HPCG 基准测试程序可让您灵活选择 rank 的 3D 形状、选择不同的维度以及配置 GPU 和 Grace rank 的大小。

A 3D problem processed using NVIDIA HPCG’s heterogeneous execution configuration of NVIDIA GPUs and Grace CPUs. The GPU and Grace CPU local problems have different x-dimensions but identical y and z dimensions. A 1-point halo region is shared between local problems.
图 1. NVIDIA HPCG 异构执行,涉及 GPU 和 Grace CPU。

异构执行模式的性能取决于 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 倍以上。

Comparison of NVIDIA HPCG performance: Grace-only, GPU-only, and heterogeneous configurations against the official HPCG benchmark, tested on NVIDIA GH200-480GB.
图 2. 相比官方 HPCG 基准测试的性能

实验在具有 480GB 显存容量的 NVIDIA GH200 GPU(GH200-480GB)上进行。

总结

开源 NVIDIA HPCG 基准测试程序使用高性能数学库、cuSPARSE 和 NVPL Sparse,在 GPU 和 Grace CPU 上实现出色性能。它支持仅 GPU、仅 Grace 和异构执行,灵活地配置执行模式。

NVIDIA HPCG 基准测试计划采用独特的设计,其中 GPU 和 Grace CPU 问题大小在一个维度上有所不同,而其他维度相同,从而促进高效的光环交换操作。

有关更多信息,请参阅以下资源:

 

Tags