转载自:
Nvidia GPU卡演进架构及(P100)介绍
http://linuxperformance.top/
关于GPU
关于GPU我们可以回退到1985年ATi公司成立,开发出了第一款图形芯片和图形卡,那时候这种芯片还没有GPU的称号, ATI都是把图形处理器称为VPU。直到NVIDIA公司在1999年发布GeForce 256图形处理芯片时首先提出GPU的概念。从此NV显卡的芯就用GPU来称呼了。
GPU最初是为图形渲染而生,专为执行复杂的数学和几何计算,可以让CPU从图形工作中解放出来。由于其诞生的使命,GPU在发展过程中专注于2D或者3D图形加速功能。
但是在技术迭代过程中,GPU已经不再局限于2D/3D图形处理了,基于的GPU的通用计算技术发展引起了广泛的关注,事实也证明其在浮点运算、并行计算等方面的能力。此外机器学习等现代应用领域中GPU也成为了深度学习训练的最佳选择。虽然如此,图形化显示用途市场还是占英伟达营收的半壁江山,当然未来这个占比可能会逐渐变化。
从这个GPU业务场景的变化中,我们可以体会到GPU架构的演进。我们来看下Nvidia GPU的技术演进。
-
Nvidia架构演进
Nvidia为了纪念物理学家,把每代GPU架构都用物理学家名字来命名:特斯拉、费米、开普勒、麦克斯韦、帕斯卡、伏特。就像Intel用地名来命名其架构一样,今年Nvidia会推出最新的基于Volta 架构的GPU。
本文后面是以Pascal架构下的P100产品来讨论GPU性能测试维度。 -
Pascal
Nvidia在去年GTC( GPU Technology Conference ) 上宣布了 Pascal 架构,同时发布了该系列的P100产品。
Pascal系列除了P100,还有二款产品P4和P40。
先来看下P100的对外性能参数 -
P100
在官方材料中得到关于浮点计算的性能描述:
5.3 TFLOPS of double precision floating point (FP64) performance
10.6 TFLOPS of single precision (FP32) performance
21.2 TFLOPS of half-precision (FP16) performance
浮点计算性能是GPU领域很重要的性能指标, Nv官方也给出了P100的官方指标。
此外在最近几代产品中,Nv都宣称了GPU在深度学习领域的加速情况,由于16位浮点计算能力的提高大大缩短了深度学习所需要花费的时间。
关于P100具体参数如下: -
P100参数
Tesla P100参数如下:
芯片:GP100,sm_60
工艺:16 nm FinFET
支持:双精度 FP64, 单精度 FP32, 半精度 FP16
功耗:250 W
Nvidia CUDA 核心数:3584(56 SMs, 64 SPs/SM)
GPU 时钟:Base = 1189 MHz, Maximum Boost = 1328 MHz
PCIe:Gen 3 x16
显存容量:16 GB HBM2(另有 12 GB 版本)
显存位宽:4096 bits(另有 3072 bits 版本)
显存时钟:715 MHz
显存带宽:732 GB/s(另有 539 GB/s 版本)
相比前代产品如下(此处加上了V100,不过V100和P100架构基本一致,差异在于密度和V100上针对深度学习的Tensor Core):
Tesla Product Tesla K40 Tesla M40 Tesla P100 Tesla V100
GPU GK180 (Kepler) GM200 (Maxwell) GP100 (Pascal) GV100 (Volta)
SMs 15 24 56 80
TPCs 15 24 28 40
FP32 Cores / SM 192 128 64 64
FP32 Cores / GPU 2880 3072 3584 5120
FP64 Cores / SM 64 4 32 32
FP64 Cores / GPU 960 96 1792 2560
Tensor Cores / SM NA NA NA 8
Tensor Cores / GPU NA NA NA 640
GPU Boost Clock 810/875 MHz 1114 MHz 1480 MHz 1462 MHz
Peak FP32 TFLOPS1 5 6.8 10.6 15
Peak FP64 TFLOPS1 1.7 .21 5.3 7.5
Peak Tensor TFLOPS1 NA NA NA 120
Texture Units 240 192 224 320
Memory Interface 384-bit GDDR5 384-bit GDDR5 4096-bit HBM2 4096-bit HBM2
Memory Size Up to 12 GB Up to 24 GB 16 GB 16 GB
L2 Cache Size 1536 KB 3072 KB 4096 KB 6144 KB
Shared Memory Size / SM 16 KB/32 KB/48 KB 96 KB 64 KB Configurable up to 96 KB
Register File Size / SM 256 KB 256 KB 256 KB 256KB
Register File Size / GPU 3840 KB 6144 KB 14336 KB 20480 KB
TDP 235 Watts 250 Watts 300 Watts 300 Watts
Transistors 7.1 billion 8 billion 15.3 billion 21.1 billion
GPU Die Size 551 mm² 601 mm² 610 mm² 815 mm²
Manufacturing Process 28 nm 28 nm 16 nm FinFET+ 12 nm FFN -
P100架构
一颗GP100 芯片包括 6 个图形处理簇GPC(Graphics Processing Clusters),每个图形处理簇GPC包含5个纹理处理簇TPC(Texture Processing Clusters),每个纹理处理簇包含2个流多处理器Streaming Multiprocessors(所以共计有60个流多处理器)和 8 个 512 位内存控制器(总共 4096 位)。
如下图:
上图是全景图,我们来看下一个SM。
GP100 的一个SM (由2个处理块组成,每个处理块包含32个CUDA核心)包括 64 个单精度 CUDA 核心。而 Maxwell和Kepler 的 SM 分别有 128 和 192 个单精度 CUDA 核心。虽然每个SM包含的CUDA核心数量只有Maxwell SM中CUDA核心数的一半,但总的 SM 数目增加了,而且每个 SM 保持与上一代相同的寄存器组,所以总的寄存器数目增加了。那么GP100上的每个线程可以使用更多寄存器,比旧的架构支持更多线程、warp 和线程块数目。与此同时,GP100 总共享内存量也随 SM 数目增加而增加了,带宽显著提升不至两倍。
从架构上我们看到单位CUDA核心资源都是增加了,因此我们可以确信,P100的FP16能力肯定是提升不少的。另外FP16转成FP32时候直接是2:1的转换的非常高效,也提升了FP32的能力。 -
GPU互联
在当前机器中,一个CPU会对应2个或2个以上GPU,那么CPU与GPU之间的很容易成为瓶颈,因此Nvidia推出了nvlink来实现GPU与GPU之间的互联。8张卡互联的拓扑如下图: