NVIDIA 集合通信库 (NCCL)
NVIDIA 集合通信库(NCCL)是一款专为 NVIDIA GPU 与网络环境优化的多 GPU、多节点通信原语库,实现了高效的多 GPU 和多节点通信能力。
NCCL 的工作原理
NCCL 提供 all-gather、all-reduce、broadcast、reduce、reduce-scatter 以及点对点 send/recv 等通信例程,这些例程经过优化,可在单机内通过 PCIe、NVIDIA NVLink™ 等高速互连,以及跨节点通过 NVIDIA 网络,提供高带宽、低时延的数据传输。
通过将通信与计算融合在同一个 GPU 内核中,NCCL 能实现低时延同步,非常适合用于分布式训练和实时推理等场景。 借助拓扑动态探测机制和精简的 C 语言 API,开发者无需针对特定硬件手工调优即可在多节点间进行扩展。
NCCL 可以从 GitHub 获取源码进行构建和安装,也可以作为 NVIDIA HPC SDK 的一部分获取,或者直接在 NVIDIA Developer Zone 上下载预编译二进制包。

性能
NCCL 使开发者无需针对特定机器优化其应用程序。NCCL 在节点内和节点间通过多个 GPU 提供快速群集。
易于编程
NCCL 使用简单的 C API,可通过各种编程语言轻松访问。NCCL 严格遵循由消息传递接口 (MPI) 定义的热门群集 API。
兼容性
NCCL 与任何多 GPU 并行模型兼容,包括单线程、多线程 (每个 GPU 使用一个线程) 和多进程 ( MPI 与 GPU 上的多线程操作相结合) 。
主要特性
高性能集合通信和点对点通信,可加快多 GPU 和多节点训练速度
设备 API 支持直接从 CUDA 内核进行通信,从而降低延迟并改善计算和通信重叠
跨 PCIe、NVLink®、NVSwitch™、InfiniBand、RoCE 和其他网络进行自动拓扑检测,以更大限度地提高性能
先进的图形搜索算法,可构建更高效的环和树,以实现峰值带宽和更低延迟
灵活的插件框架,可将 NCCL 扩展到自定义传输和新一代互连
全面支持多线程、多进程和 MPI 驱动的分布式应用程序
集成的分析、可靠性和可观察性工具 (如 NCCL RAS 和 NCCL Inspector) 可加速调试和性能调优
NCCL 博客
更多资源
请观看由我们的 NCCL 团队提供的以下视频,了解更多信息。
详细了解相关库和软件。
立即开始使用 NCCL。