前言
调研一下NCCL,所以在这里记录一下。
参考:
NCCL DOCUMENTATION
NCCL Slide
浅谈GPU通信和PCIe P2P DMA
简介
NCCL是NVIDIA的集合通信库,能实现Collective通信和点对点通信,关注与GPU间的通信,而不是一个并行编程框架。
collective communication
- AllReduce
- Broadcast
- Reduce
- AllGather
- ReduceScatter
此外,因为支持点对点通信,所以也允许scatter(one-to-all)、gather(all-to-one)和all-to-all通信。
支持多种GPU并行
- 单机多卡
- 多机多卡
- 单线程控制多GPU
- 多线程控制多GPU
- 多进程控制多GPU
使用C语言的api
可被方便的调用。
底层通信
- 单机多卡:通过NVLink、PCIe进行通信。
- 多机多卡:通过socket也就是以太网或者Infiniband进行通信。
; PCIe
在GPU之间的通信中,有两种:
- CPU控制的GPU通信:
GPU运算完成后,将数据同步给CPU,由CPU执行MPI通信。都需要通过PCIe。 - GPU控制的GPU通信:
GPU独立发起通信,并和网络设备进行同步。但是要消耗部分GPU计算资源来完成通信,并且GPU控制通信的效率可能并不高。同样需要经过PCIe。
以上两种情况 应该都需要GPU的数据复制到CPU上作为中转。由于PCIe,GPU之间的通信限制到了 几十Gb/s。
NVLink:
能够提供比PCIe能快的传输速度,可通过桥接器连接两块NVIDIA显卡,实现 上百GB/s的传输速度。而NVSwitch可将多个 NVLink 加以整合,实现多NVIDIA显卡互联。
; Infiniband:
是为大规模数据中心设计的网络架构,主要用在高性能计算领域。可以绕过操作系统内核创建应用程序间通信的直接通道,为应用程序提供延迟极低的消息传输服务。带宽高,延时低。带宽已经发展到 400Gb/s。
GPU Direct
参考:
P2P peer-to-peer on NVIDIA RTX 2080Ti vs GTX 1080Ti GPUs
浅析GPU通信技术
- P2P:
是解决一个节点内的GPU通信。 - 简单来说就是实现GPU之间的相互通信,而不需要GPU的数据复制到CPU host memory上作为中转。
- 如果将 NVLink取代 PCIe,其延迟更低,带宽更高。但是只在内存访问或GPU之间的传输。除非是IBM Power才能连接CPU。
- RDMA(Remote Direct Memory Access):
GPU和网卡可以直接通过PCIe进行数据交互,避免了跨节点通信过程中内存和CPU的参与。从而实现GPU可以直接访问其他节点的GPU内存。
实现既可以通过以太网也可以使用InfiniBand。
Original: https://blog.csdn.net/qq_43219379/article/details/123436895
Author: eecspan
Title: NCCL基本介绍
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/617384/
转载文章受原作者版权保护。转载请注明原作者出处!