Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
Oct 25, 2022
Jul 8, 2021
Oct 25, 2022
Sep 25, 2018
Feb 9, 2021
Apr 5, 2019
Feb 9, 2021


Optimized primitives for inter-GPU communication.


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.


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

To build the library :

$ cd nccl
$ make -j

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

$ make 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/ to only include the architecture of the target platform :

$ make -j NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70"


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
$ ls build/pkg/deb/

RedHat/CentOS :

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

OS-agnostic tarball :

$ make
$ ls build/pkg/txz/


Tests for NCCL are maintained separately at

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


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