NVIDIA/nvshmem

NVIDIA NVSHMEM is a parallel programming interface for NVIDIA GPUs based on OpenSHMEM. NVSHMEM can significantly reduce multi-process communication and coordination overheads by allowing programmers to perform one-sided communication from within CUDA kernels and on CUDA streams.

解决的问题

NVSHMEM 旨在实现集群中 NVIDIA GPU 之间的可扩展通信。它解决了 GPU 之间复杂的数据移动问题,使 GPU 能够像访问单一共享全局地址空间一样访问集群中的内存。

工作原理

基于 OpenSHMEM 标准,提供跨 NVIDIA GPU 分区的全局地址空间(PGAS)。支持单边传输、原子操作、信号和同步。通信可由 CPU(主机)、CUDA 内核(设备)或 CUDA 流发起,为开发者提供了灵活的数据移动启动方式。

适用对象

需要在多个 GPU 和节点之间实现高效 GPU 主导通信的高性能计算(HPC)应用或大规模 AI 训练与推理工作负载的开发者。

主要亮点

  • 支持单边通信传输和原子操作
  • 支持主机、CUDA 内核和 CUDA 流接口
  • 与 Open MPI、Hydra、Slurm 等进程启动器集成
  • 通过 NVSHMEM4Py 提供 Python 支持

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目