NVIDIA® NVSHMEM 2.10.1 发行说明
NVSHMEM 是 NVIDIA GPU 的 OpenSHMEM 规范的实现。NVSHMEM 编程接口在 NVIDIA GPU 集群上实现分区全局地址空间 (PGAS) 模型。NVSHMEM 提供了一个易于使用的接口来分配在 GPU 之间对称分布的内存。除了 CPU 端接口外,NVSHMEM 还提供 CUDA 内核端接口,允许 CUDA 线程访问对称分布内存中的任何位置。
发行说明描述了 NVSHMEM 2.10.1 和早期版本的主要特性、软件增强功能和改进以及已知问题。
主要特性和增强功能
此 NVSHMEM 版本包括以下主要特性和增强功能
支持单节点和多节点 Grace Hopper 系统
支持使用 libfabric 传输的 EFA 提供程序,可以使用
NVSHMEM_LIBFABRIC_PROVIDER=EFA
启用。应用程序。为 NVSHMEM 设备实现头文件添加了 NVRTC 支持。
修复了
nvshmem_finalize
中的内存泄漏添加了在循环中通过任何引导程序调用
nvshmem_init
和nvshmem_finalize
的支持。以前,该支持仅存在于 MPI 引导程序中Alltoall 集体 API 中的性能优化
在 IBGDA 传输中,实现了
nvshmem_<typename>_g
操作到连续地址的 warp 级自动合并移除了 IBGDA 传输中冗余的一致性操作
在使用 VMM API for NVSHMEM 对称堆时,添加了对同步内存操作的支持
代码重构和错误修复
兼容性
NVSHMEM 2.10.1 已通过以下测试
CUDA 工具包
11.0
12.0
12.2
在 x86、Power 9 和 Grace 处理器上
GPU
Volta V100
Ampere A100
Hopper H100
局限性
NVSHMEM 尚不兼容 Cray 系统上的 PMI 客户端库,必须使用 NVSHMEM 内部 PMI-2 客户端库。可以通过为 Slurm 指定 –mpi=pmi2 和 NVSHMEM_BOOTSTRAP_PMI=PMI-2,使用 PMI 引导程序启动作业。也可以通过在构建 NVSHMEM 时设置 NVSHMEM_DEFAULT_PMI2=1 将 PMI-2 设置为默认 PMI。也可以通过使用 MPI 或 SHMEM 引导程序直接启动作业。
libfabric 传输尚不支持 VMM,必须通过设置 NVSHMEM_DISABLE_CUDA_VMM 禁用 VMM。
Slingshot-11 网络上的 Libfabric 支持需要设置以下环境变量 FI_CXI_OPTIMIZED_MRS=false。
由于性能回退,默认情况下在 Power 9 系统上禁用 VMM 支持。
MPG 支持在 Power 9 系统上尚不可用。
具有 PCIe 对等通信的系统需要以下之一
InfiniBand 以支持 NVSHMEM 原子 API。
使用 NVSHMEM 的 UCX 传输,如果不存在 IB,将使用套接字进行原子操作。
NVSHMEM 主机 API 可以动态链接,但设备 API 只能静态链接。
这是因为 CUDA 设备符号的链接在共享库之间不起作用。
nvshmem_barrier*、nvshmem_quiet 和 nvshmem_wait_until 仅确保具有 NVLink 和 InfiniBand 的系统上源 PE 和目标 PE 之间的排序和可见性。它们不确保全局排序和可见性。
当使用 GDRcopy 构建并在旧版本的 460 驱动程序和之前的分支上使用 Infiniband 时,由于无法重用 BAR1 空间,NVSHMEM 无法分配完整的设备内存。这已在 CUDA 驱动程序版本 470 及更高版本以及最新的 460 驱动程序中得到修复。
当 NVSHMEM 使用 cudaMalloc 映射对称堆时,它会设置 CU_POINTER_ATTRIBUTE_SYNC_MEMOPS 属性,该属性会自动同步对称堆上的同步 CUDA 内存操作。
对于 CUDA 11.3 及更高版本,NVSHMEM 支持使用 CUDA VMM API 映射对称堆。但是,当您使用 VMM API 映射对称堆时,CUDA 不支持此属性,用户负责同步。有关同步 CUDA 内存操作的更多信息,请参阅 API 同步行为。
在此版本中,Grace Hopper 系统上的 IBGDA 传输支持是实验性的。
IBGDA 不适用于 DMABUF。
已修复的问题
在 2.8 版本中,CMake 构建 NVSHMEM 时动态链接到 libcudart.so,此问题已在此版本中修复。
重大变更
已弃用的特性
已知问题
当前不支持通过在编译时设置 NVSHMEM_COMPLEX_SUPPORT 启用的复杂类型。