[Overview of NCCL — NCCL 2.23.4 documentation](https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/overview.html)
>NVIDIA Collective Communications Library(NCCL、「ニッケル」と発音)は、トポロジーを意識し、アプリケーションに簡単に統合できるGPU間通信プリミティブを提供するライブラリです。 NCCLは、集団通信とポイントツーポイント送受信プリミティブの両方を実装しています。 NCCLは、本格的な並列プログラミングフレームワークではなく、むしろGPU間通信の高速化に焦点を当てたライブラリです。
> NCCLは、次のような集合通信プリミティブを提供します:AllReduce Broadcast Reduce AllGather ReduceScatter さらに、ポイントツーポイントの送受信通信が可能で、scatter、gather、またはall-to-allオペレーションが可能です。
> 通信するプロセッサ間の緊密な同期は、集合通信の重要な側面です。 CUDAベースのコレクティブは従来、CUDAメモリコピー操作とローカル削減のためのCUDAカーネルの組み合わせによって実現されていた。 一方、NCCLは、通信と計算操作の両方を処理する単一のカーネルで各コレクティブを実装します。
> NCCLは、開発者がアプリケーションを特定のマシン向けに最適化する必要性を排除します。 NCCLは、ノード内およびノード間で複数のGPUに高速コレクティブを提供します。 NCCLは、PCIe、NVLINK、InfiniBand Verbs、IPソケットを含む様々なインターコネクト技術をサポートしています。 NCCLの設計では、性能の次にプログラミングのしやすさが考慮されました。
>
> NCCLはシンプルなC APIを使用しており、さまざまなプログラミング言語から簡単にアクセスできます。 NCCLはMPI(Message Passing Interface)で定義された一般的なコレクティブAPIを忠実に踏襲している。 そのため、MPIに慣れ親しんでいる人であれば、NCCLのAPIをごく自然に使用することができる。 MPIとは少し異なりますが、NCCLのコレクティブは "stream "引数を取り、CUDAプログラミングモデルとの直接統合を提供します。 例えば、すべてのGPUをシングルスレッドで制御するマルチスレッド、例えば、GPUごとに1つのスレッドを使用するマルチプロセス、例えば、MPI NCCLは、AllReduceコレクティブがニューラルネットワークのトレーニングに多用されているディープラーニング・フレームワークで大きな応用を見出しています。 NCCLが提供するマルチGPUおよびマルチノード通信により、ニューラルネットワークトレーニングの効率的なスケーリングが可能になる。