MCPcopy Create free account
hub / github.com/NVIDIA/nccl

github.com/NVIDIA/nccl @nccl4py-v0.3.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release nccl4py-v0.3.1 ↗ · + Follow
9,107 symbols 21,782 edges 669 files 1,418 documented · 16% updated 1d agonccl4py-v0.3.1 · 2026-06-11★ 4,872258 open issues

Browse by type

Functions 5,323 Types & classes 3,783 Endpoints 1
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

NCCL

Optimized primitives for inter-GPU communication.

Introduction

NCCL (pronounced "Nickel") is a stand-alone library of standard communication routines for GPUs, implementing all-reduce, all-gather, reduce, broadcast, reduce-scatter, as well as any send/receive based communication pattern. It has been optimized to achieve high bandwidth on platforms using PCIe, NVLink, NVswitch, as well as networking using InfiniBand Verbs or TCP/IP sockets. NCCL supports an arbitrary number of GPUs installed in a single node or across multiple nodes, and can be used in either single- or multi-process (e.g., MPI) applications.

For more information on NCCL usage, please refer to the NCCL documentation.

Build

Note: the official and tested builds of NCCL can be downloaded from: https://developer.nvidia.com/nccl. You can skip the following build steps if you choose to use the official builds.

To build the library :

$ cd nccl
$ make -j src.build

If CUDA is not installed in the default /usr/local/cuda path, you can define the CUDA path with :

$ make src.build CUDA_HOME=<path to cuda install>

NCCL will be compiled and installed in build/ unless BUILDDIR is set.

By default, NCCL is compiled for all supported architectures. To accelerate the compilation and reduce the binary size, consider redefining NVCC_GENCODE (defined in makefiles/common.mk) to only include the architecture of the target platform :

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

Install

To install NCCL on the system, create a package then install it as root.

Debian/Ubuntu :

$ # Install tools to create debian packages
$ sudo apt install build-essential devscripts debhelper fakeroot
$ # Build NCCL deb package
$ make pkg.debian.build
$ ls build/pkg/deb/

RedHat/CentOS :

$ # Install tools to create rpm packages
$ sudo yum install rpm-build rpmdevtools
$ # Build NCCL rpm package
$ make pkg.redhat.build
$ ls build/pkg/rpm/

OS-agnostic tarball :

$ make pkg.txz.build
$ ls build/pkg/txz/

Python wheel :

$ # Install uv to create the Python wheel (uv manages Python deps in a venv)
$ # See: https://docs.astral.sh/uv/getting-started/installation/
$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ # Build NCCL Python wheel (this also builds the .txz archive as an intermediate)
$ make pkg.python_wheel.build
$ ls build/pkg/python_wheel/

Tests

Tests for NCCL are maintained separately at https://github.com/nvidia/nccl-tests.

$ git clone https://github.com/NVIDIA/nccl-tests.git
$ cd nccl-tests
$ make
$ ./build/all_reduce_perf -b 8 -e 256M -f 2 -g <ngpus>

Copyright

All source code and accompanying documentation is copyright (c) 2015-2020, NVIDIA CORPORATION. All rights reserved.

Core symbols most depended-on inside this repo

Shape

Function 4,327
Class 3,486
Method 996
Enum 297
Route 1

Languages

C++88%
Python10%
C2%

Modules by API surface

src/transport/net_ib/gdaki/doca-gpunetio/include/host/mlx5_ifc.h383 symbols
src/include/ibvcore.h203 symbols
src/transport/net_ib/gdaki/doca-gpunetio/src/doca_verbs_qp.cpp180 symbols
src/device/reduce_kernel.h161 symbols
src/include/comm.h157 symbols
src/transport/coll_net.cc103 symbols
src/transport/net_ib/common.h97 symbols
src/init.cc96 symbols
src/os/windows_stubs.cc90 symbols
src/graph/topo.cc88 symbols
src/proxy.cc87 symbols
src/transport/net.cc86 symbols

For agents

$ claude mcp add nccl \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page