今天查询华为昇腾算力卡的时候发现了一个非常好的博客,讲述了英伟达GPU与华为NPU的一些基础概念,特分享如下。
本文信息均摘录于 ArthurChiao's Blog,感兴趣的读者欢迎直接点击链接
基本概念
PCIe
PCIe 是 Peripheral Component Interconnect Express 的缩写,表示"外部设备互联(PCI)高速扩展总线"。它是一种高速串行计算机扩展总线标准,广泛用于计算机系统中连接各种外部设备,例如显卡、存储设备(SSD)、网络适配器等。
其传输带宽如下表所示:
- 注:Slot Width 表示通道数量,Full Duplex 表示全双工时的带宽,也即单向带宽,双向的话需要乘以2。
NVLink 与 NVLink Switch
NVLink 是一种 GPU 之间的直接互连,双向互连速度达 1.8 TB/s,可扩展服务器内的多 GPU 输入/输出 (IO)。
NVLink 结构与传输速度
- 图中x86表示CPU,两个方框表示 GPU,方框之间的双向箭头表示一条 NVLink,每条 NVLink 的带宽是 50GB/s *
NVLink Switch 可连接多个 NVLink,实现在单个机架内和多个机架间以 NVLink 能够达到的最高速度进行多对多 GPU 通信。
在一台主机内,NVLink Switch又可以叫做NVSwitch。
RDMA、RoCEv2、InfiBand
**RDMA(RemoteDirect Memory Access)**技术全称远程直接内存访问,是为了解决网络传输中服务器端数据处理的延迟而产生的。
RoCEv2和InfiniBand均为数据中心及高性能计算环境而设计,旨在提供高速、低延迟的通信解决方案。
RoCEv2与InfiBand的对比如下:
简单来说,RoCEv2依托于现有的以太网,兼容性更好,目前绝大多数数据中心均采用此种方式;InfiBand使用专用硬件,速度更快、价格更高。
两者的具体差别可以参考这篇文章------深度解读RoCE v2网络技术。
带宽单位
网络带宽习惯用 bits/second (b/s) 表示之外,并且一般说的都是单向(TX/RX);
其他模块带宽基本用 byte/sedond (B/s) 或 transactions/second (T/s) 表示,并且一般都是双向总带宽。
常见拓扑与数据传输瓶颈
数据传输路径
一种常见的单机8卡拓扑如下:
单机 8 卡 A100 GPU 主机带宽瓶颈分析
- 同主机 GPU 之间走 NVLink ,双向 600GB/s,单向 300GB/s
- 同主机 GPU 和自己的网卡之间走 PCIe ,常见的是 PCIe Gen4 Switch 芯片,双向 64GB/s,单向 32GB/s
- 跨主机 GPU 之间需要通过网卡收发数据 ,这个就看网卡带宽了,目前国内 A100/A800 机型配套的主流带宽是(单向) 100Gbps=12.5GB/s 。 所以跨机通信相比主机内通信性能要下降很多
其他说明:
- 若采用 200Gbps 的网络带宽,折合 25GB/s ,已经接近 PCIe Gen4 的单向带宽
- 若采用 400Gbps 的网络带宽,折合 50GB/s ,就超过了 PCIe Gen4 的单向带宽
- 使用PCIe4时采用 400Gbps 网卡作用不大,400Gbps 需要 PCIe Gen5 性能才能发挥出来