1. 常见概念
1. NCCL(NVIDIA Collective Communications Library)
- 做什么:专门优化多 GPU / 多节点的集体操作:
- AllReduce(最常用,梯度汇总)
- Broadcast、Reduce、AllGather 等
- 特点:
- 拓扑感知:自动识别 NVLink / PCIe / InfiniBand,选最优路径
- 通信 + 计算融合:一个 kernel 做完通信和算术,延迟低
- 谁在用:PyTorch DDP、DeepSpeed、Megatron-LM 底层默认就是 NCCL
2. NVSHMEM(NVIDIA SHMEM)
一句话:把整个集群所有 GPU 显存拼成一个 “全局大内存”,GPU 直接读写远程显存,不用 CPU 中转。NVIDIA
- 模型:PGAS(分区全局地址空间),每个 GPU 都能直接访问别人的显存
- 通信方式:单边通信(one‑sided)
shmem_put:写远程显存shmem_get:读远程显存- 原子操作NVIDIA
- 特点:
- GPU 发起通信:CUDA kernel 里直接发网络请求,不用 CPU 启动
- 适合:细粒度、频繁的小数据访问(比如 MoE 路由、稀疏计算)
- 和 NCCL 区别:
- NCCL:主打集合通信(AllReduce)
- NVSHMEM:主打单边、点到点、细粒度
3. UCX(Unified Communication X)
一句话:HPC/AI 的 “万能通信底座”,统一 RDMA、共享内存、TCP 等所有底层传输,上层(MPI/NCCL/OpenSHMEM)都可以基于它。
- 定位:通信框架的框架,把不同硬件(IB、RoCE、PCIe、共享内存)统一成一套 API
- 分层:
- UCT:底层传输层(RDMA、SHM、TCP)
- UCP:高层协议层(MPI、RMA 等)
- 特点:
- 性能接近原生硬件,开销极低
- NCCL 可插 UCX 插件;NVSHMEM、OpenMPI 都能用 UCX
- 场景:超算、大模型分布式训练、存储系统
4. GDRCopy(GPU Direct RDMA Copy)
一句话:基于 GPUDirect RDMA 的CPU ↔ GPU 显存超低延迟拷贝库 **,小数据比 cudaMemcpy 快很多。**
- 传统 cudaMemcpy:
- 走 GPU 拷贝引擎 → 有 6–7us 固定开销,小数据慢
- GDRCopy:
- 把 GPU 显存直接映射到用户态,CPU 直接读写显存
- 绕过内核、绕过系统内存,微秒级延迟
- 用途:
- 高频、小块 CPU ↔ GPU 数据交换
- UCX、NVSHMEM、OpenMPI 底层都用它加速
- 限制:CPU 占用更高;只支持 Tesla/Quadro 卡
5. GPUDirect RDMA
一句话:硬件级能力,让网卡(或其他 PCIe 设备)直接读写 GPU 显存 **,完全绕开 CPU 和主机内存。**NVIDIA
- 传统路径:GPU → 主机内存 → 网卡 → 网络(两次拷贝 + CPU 参与)
- GPUDirect RDMA:网卡 DMA 直接访问 GPU 显存,零拷贝、无 CPU 干预NVIDIA
- 条件:GPU + 网卡(如 ConnectX‑6)同 PCIe 根复合体NVIDIA
- 地位:
- GDRCopy、NVSHMEM、UCX、NCCL(IB/RoCE 路径)都依赖它
- 大模型跨节点通信的性能基石
6. 区别和联系
- GPUDirect RDMA:✅硬件能力(底层通道)✅ 面向:网卡 / 存储 ↔ GPU✅ CPU不能直接用,只能第三方 PCIe 设备用NVIDIA
- GDRCopy:✅软件库(基于上述能力)✅ 面向:CPU ↔ GPU✅ 把显存暴露给 CPU,用户态直接访问NVIDIA