HPC-X介绍

NVIDIA HPC-X 并不是一个孤立的 MPI 变体,而是一个由 NVIDIA (原 Mellanox) 提供的高性能通信软件工具包。 [1, 2]
它通过将开源组件与专有加速技术“打包”并进行深度调优,为基于 InfiniBand 网络的集群提供极致性能。 [3, 4]

1. 它与 Open MPI 的关系

HPC-X 内部集成了一个经过高度优化的 Open MPI 版本。 [5, 6]

  • ABI 兼容:HPC-X 的 MPI 与标准 Open MPI 在 ABI 上是兼容的,这意味着你通常可以使用 Open MPI 编译的程序在 HPC-X 环境下运行。 [7]
  • 深度集成:HPC-X 中的 Open MPI 默认配置了对 UCX 和 HCOLL 等加速库的支持,从而直接释放 NVIDIA/Mellanox 硬件的性能。 [8, 9]

2. HPC-X 的核心组件

HPC-X 就像一个“全家桶”,包含了实现高性能通信所需的各种底层技术:

  • MPI & OpenSHMEM:提供核心的消息传递接口和单边通信能力。
  • UCX (Unified Communication X):作为点对点通信的加速引擎,支持 RDMA、CUDA 和各种网络传输协议。
  • HCOLL (Hierarchical Collectives):专门加速集体通信(如 Bcast、Allreduce),利用多级算法优化性能。
  • SHARP:支持将集体通信操作卸载到网络交换机硬件上执行,大幅降低延迟。
  • ClusterKit:用于集群节点评估和性能基准测试的工具。 [1, 3, 6, 8, 10, 11, 12, 13]

3. 为什么选择 HPC-X 而不是社区版 Open MPI?

特性 [3, 6, 7, 14, 15] 社区版 Open MPI NVIDIA HPC-X
优化程度 通用性强,需自行配置各种插件 针对 NVIDIA 硬件预先调优,开箱即用
硬件支持 基础支持 完美支持 SHARP、Core-Direct 等高级硬件特性
稳定性 视具体构建版本而定 经过 NVIDIA 官方严格的质量测试 (QA) 和集成验证
部署难度 需要处理复杂的库依赖 模块化提供,支持通过 module load hpcx 快速切换环境

✅ 结论:
在拥有 InfiniBand 网络 或 NVIDIA GPU 的集群上工作,使用 HPC-X 是获取最佳算力性能的最简捷途径。 [7, 16]
计算环境是否已经安装了 NVIDIA HPC SDK?它通常已经自带了 HPC-X 的组件。 [17]

[1] https://docs.nvidia.com
[2] https://developer.nvidia.cn
[3] https://developer.nvidia.com
[4] https://www.nvidia.cn
[5] https://developer.nvidia.com
[6] https://platform.softwareone.com
[7] https://docs.azure.cn
[8] https://docs.nvidia.com
[9] https://docs.nvidia.com
[10] https://www.nvidia.com
[11] https://scc.ustc.edu.cn
[12] https://docs.nvidia.com
[13] https://docs.nvidia.com
[14] https://www.nvidia.com
[15] https://docs.nvidia.com
[16] https://rci.stonybrook.edu
[17] https://forums.developer.nvidia.com


HPC-X使用

使用 HPC-X 非常简单,它通常以“全家桶”模块的形式部署。以下是典型的使用流程:

1. 加载环境变量

HPC-X 目录通常位于 /opt/nvidia/hpcx 或由 module 系统管理。最快捷的加载方式是:

  • 使用环境变量脚本 (推荐):

假设安装在 /opt/nvidia/hpcx

source /opt/nvidia/hpcx/hpcx-init.sh
hpcx_load

  • 使用 Module 系统 (如果超算中心已配置):

module load hpcx

加载后,你可以通过 which mpirun 查看是否指向了 hpcx 路径。

2. 编译代码

HPC-X 中的 MPI 封装器(Wrappers)与 Open MPI 一致。

编译 C++ 代码

mpicxx -O3 my_solver.cpp -o my_solver

编译 C 代码

mpicc -O3 my_code.c -o my_code

3. 运行并开启加速特性

这是 HPC-X 的精髓所在,通过环境变量开启它的黑科技组件:

  • 基础运行:

mpirun -np 64 ./my_solver

  • 开启 HCOLL 加速 (优化集体通信如 Allreduce):
    HPC-X 默认会尝试开启,但你可以强制指定:

mpirun -np 64 --mca coll_hcoll_enable 1 -x HCOLL_ENABLE_MCAST=1 ./my_solver

  • 开启 SHARP 加速 (交换机硬件归约):
    如果你之前确认过交换机支持,这是加速向量内积的关键:

mpirun -np 64
–mca coll_hcoll_enable 1
-x HCOLL_ENABLE_SHARP=1
-x SHARP_COLL_NUM_OUTSTANDING_SAMPLES=16
./my_solver

4. 性能诊断与优化

如果你想知道 HPC-X 是否真的起作用了,可以使用以下参数:

  • 查看通信路径:

输出 UCX 选择的传输层(如 rc_v, ud_v 等)

mpirun -np 2 -x UCX_LOG_LEVEL=info ./my_solver

  • 查看集体通信算法选择:

查看 HCOLL 是否选择了 SHARP 或特定的算法

mpirun -np 2 -x HCOLL_VERBOSE=2 ./my_solver

5. 注意事项

  • 内存锁定:高性能通信需要锁定内存。如果运行报错,通常需要检查系统的 ulimit -l 是否设置为 unlimited。
  • CUDA 支持:如果你的代码涉及 GPU 数据直接通信 (GPUDirect RDMA),HPC-X 已经预装了必要的库,只需确保运行环境中能找到 CUDA 库路径。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐