搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

NVIDIA/nccl

机器学习

面向单机或多机多卡训练场景的 GPU 集合通信库,提供高效的 all-reduce、all-gather 等原语。

5,213
1,475
C++
NOASSERTION
创建于 10 年前

项目介绍

NCCL 是一个独立的 C++ GPU 通信例程库,实现了 all-reduce、all-gather、reduce、broadcast、reduce-scatter 以及基于 send/receive 的通信模式。它针对 PCIe、NVLink、NVSwitch、InfiniBand Verbs 和 TCP/IP socket 等平台做了高带宽优化,支持单节点或跨节点的任意数量 GPU,可用于单进程或多进程(例如 MPI)程序。它的主要使用者是构建或运行分布式 GPU 工作负载(如深度学习训练)的人,需要可靠的集合通信后端,而不是自己编写通信逻辑。具体用法可查阅 NCCL 文档。

快速使用

官方测试过的构建可从 NVIDIA NCCL 下载页 获取;如果不打算自行编译,可以直接使用官方版本。从代码检出开始构建:

cd nccl
make -j src.build

如果 CUDA 不在 /usr/local/cuda,可传入其位置,例如 make src.build CUDA_HOME=<path to cuda install>。除非设置了 BUILDDIR,产物输出到 build/。默认会编译所有支持的架构;若只针对目标 GPU 编译,可限制架构,例如:

make -j src.build NVCC_GENCODE="-gencode=arch=compute_90,code=sm_90"

测试需要克隆独立的 nccl-tests 仓库并构建,然后运行集合通信基准,例如 ./build/all_reduce_perf -b 8 -e 256M -f 2 -g <ngpus>,把 <ngpus> 换成实际 GPU 数量。

安装包

README 还介绍了打包方式。Debian/Ubuntu 上安装 build-essential devscripts debhelper fakeroot 后运行 make pkg.debian.build,产物在 build/pkg/deb/;RedHat/CentOS 上安装 rpm-build rpmdevtools 后运行 make pkg.redhat.build,产物在 build/pkg/rpm/。通用 tarball 由 make pkg.txz.build 生成到 build/pkg/txz/。Python wheel 可通过 make pkg.python_wheel.build 生成,README 的步骤会先通过安装脚本安装 uv,在受控环境中使用前应先评估这一依赖。安装系统包需要 root 权限。

使用约束

构建需要 CUDA 工具链,目标平台是 NVIDIA GPU 及上述互连方式;默认编译所有支持架构,会增加编译时间和二进制体积。测试不在本仓库,而在 nccl-tests 中。仓库许可证标记为 NOASSERTION,再分发前应确认实际许可条款。Python wheel 流程会向构建环境引入额外的 Python 依赖管理工具。

HotRepo 点评

NCCL 是 NVIDIA 长期维护的基础设施库,已有可观关注度(评审时超过 5,000 Star、近 1,500 Fork)。它不是面向终端用户的应用,而是分布式训练框架和 HPC 程序所依赖的底层组件。对读者来说,实际选择主要在于使用 NVIDIA 预编译包,还是针对特定 GPU 架构与互连方式自行编译;安装后应到独立的 nccl-tests 项目验证性能。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

NIIN: NVSHMEM Implemented In NCCL
▲ 1 · 0 条评论 · 2026年8月3日