NVSHMEM 安装指南#

本 NVIDIA NVSHMEM 安装指南提供下载和安装 NVSHMEM 3.1.7 的分步说明

概述#

NVIDIA® NVSHMEM™ 是一种编程接口,它在 NVIDIA GPU 集群上实现分区全局地址空间 (PGAS) 模型。NVSHMEM 提供了一个易于使用的接口来分配在 GPU 之间对称分布的内存。除了 CPU 端接口之外,NVSHMEM 还提供 CUDA 内核端接口,允许 NVIDIA CUDA® 线程访问对称分布内存中的任何位置。

硬件要求#

NVSHMEM 需要以下硬件

  • x86_64aarch64 CPU 架构。

  • NVIDIA 数据中心 GPU,采用 NVIDIA Volta™ GPU 架构或更高版本。

    有关完整列表,请参阅 https://developer.nvidia.com/cuda-gpus

  • 所有 GPU 必须通过 NVLink/PCIe 或 GPUDirect RDMA 进行 P2P 连接。支持以下网络
    • InfiniBand/RoCE,配备 Mellanox 适配器(CX-4 或更高版本)

    • Slingshot-11 (Libfabric CXI 提供程序)

    • Amazon EFA (Libfabric EFA 提供程序)

    原子操作支持需要 NVLink 连接或 GPUDirect RDMA 连接以及 GDRCopy。有关更多信息,请参阅软件要求

软件要求#

NVSHMEM 需要以下软件

  • 64 位 Linux。

    有关完整的兼容性矩阵,请参阅NVIDIA CUDA Linux 安装指南

  • 支持 C++11 的 C++ 编译器。

  • CUDA 10.2 或更高版本。

  • CMake 3.19 或更高版本

  • NVLink SHARP

    • 需要 CUDA 12.1 或更高版本。

    • 需要 nvidia.ko 530.30.02 或更高版本。它在采用 Hopper 及更高 GPU 架构的第三代 NVSwitch 系统 (NVLink4) 中可用,这允许将诸如 nvshmem_<TYPENAME>_reduce 之类的集合操作卸载到 NVSwitch 域。

  • (可选)InfiniBand GPUDirect Async (IBGDA) 传输

    • 需要 Mellanox OFED >= 5.0

    • 需要 nvidia.ko >= 510.40.3。支持两种操作模式:默认模式和 CPU 辅助模式。- 在默认情况下,必须加载 PeerMappingOverride=1 的 nvidia.ko,方法是更改 /etc/modprobe.d/nvidia.conf 文件中的选项,将选项 nvidia NVreg_RegistryDwords=”PeerMappingOverride=1;”更改为 - 在 CPU 辅助模式下,不需要 PeerMappingOverride

    • 需要 nvidia-peermem >= 510.40.3

      有关更多信息,请参阅:GPUDirect Async

  • (可选)Mellanox OFED

    • 构建 IBRC 传输需要此软件。如果 OFED 不可用,则可以使用环境中设置的 NVSHMEM_IBRC_SUPPORT=0 构建 NVSHMEM。

  • (可选)用于 GPUDirect RDMA 的 nvidia-peermem

    • 当在编译时未设置 NVSHMEM_IBRC_SUPPORT=0NVSHMEM_UCX_SUPPORT=0 时,此软件必须使用 IBRC 和 UCX 传输,并且是必需的。

      注意

      IBRC 和 UCX 传输都使用 GDRCopy 来执行原子操作。如果用户正在使用这些传输中的任何一种并打算执行原子操作,则他们必须启用 GDRCopy 支持。所有其他传输都不依赖 GDRCopy,在这些情况下不需要它。

    • PMI-1(例如,Hydra)、PMI-2(例如,Slurm)或 PMIx(例如,Open MPI)兼容的启动器。

  • (可选)GDRCopy v2.0 或更高版本

    • 在非 NVLink 连接上进行原子操作支持需要此软件。

    • 当在编译时未设置 NVSHMEM_IBRC_SUPPORT=0NVSHMEM_UCX_SUPPORT=0 时,这是必需的。

  • (可选)UCX 1.10.0 或更高版本。

    • 构建 UCX 传输需要此软件。

    注意

    UCX 必须配置为 --enable-mt--with-dm

  • (可选)libfabric 1.15.0.0 或更高版本

  • (可选)NCCL 2.0 或更高版本。

  • (可选)PMIx 3.1.5 或更高版本。

系统要求#

CUDA MPS 服务是可选的。当每个 GPU 使用多个进程时,为了支持完整的 NVHSMEM API,必须在系统上配置 CUDA MPS 服务器。为了避免死锁情况,进程之间共享的总 GPU 利用率必须限制在 100% 或更低。

有关如何配置 MPS 服务器的更多信息,请参阅多进程服务