NCCL

最近在研究Tensorflow的分布式训练,多GPU之间的通信交互设计到一个NCCL的库。找了一些官方资料。

NCCL是Nvidia Collective multi-GPU Communication Library的简称,它是一个实现多GPU的collective communication通信库,包含allreduce, reduce, broadcast等通信操作。因为在多GPU情况下,想要实现性能的线性提升,就要尽量可能的提升GPU之间的通信速度。Nvidia在各类计算框架(Tensorflow等)与CUDA之间补充了一层NCCL库,并做了大量地优化。通过NCCL库,在常见的互联方式上,像PCIE/Nvlink/InfiniBand,都有明显的性能提升。

NCCL-1是开放源码的,也在github上提供了测试benchmark。

https://github.com/NVIDIA/nccl-tests

NCCL-2则不再开放源码,需要从官网直接下载。

Nvidia官方介绍文档如下:

https://images.nvidia.com/events/sc15/pdfs/NCCL-Woolley.pdf

http://on-demand.gputechconf.com/gtc/2017/presentation/s7155-jeaugey-nccl.pdf