GPU到底有多快?( 四 )


像Volta一样 , Turing SM被分为4个处理块 , 每个处理块都有一个单独的warp调度程序和调度单元 。图灵与Volta在两个周期内执行指令几乎相同 , 但其调度程序可以在每个周期内发出独立的指令 。此外 , Volta和Turing并非像Pascal这样的按线程分配 , 而是具有按线程调度的资源 , 它具有程序计数器和按线程堆栈的功能来跟踪线程状态 。
安培架构最新的CUDA架构称为Ampere , 可提供迄今为止最高的GPU性能 。我强烈建议其他人在这里进行了非常完整的审查 。
每个Ampere SM包含四个处理块 , 每个处理块具有用于数据缓存的L0高速缓存 , 一个扭曲调度程序 , 16个INT32 CUDA内核 , 16个FP32 CUDA内核 , 8个FP64 CUDA内核 , 8个LD / ST内核 , 用于矩阵乘法的Tensor内核以及一个 16K 32位寄存器文件 。每个SM具有192 KB的组合共享内存和L1数据缓存; 在GPU级别 , 它具有40MB的二级缓存以提高性能(比Volta中的V100大7倍) 。L2缓存分为两个分区以实现更高的带宽 。
GPU到底有多快?文章插图
> Ampere Streaming Multiprocessor. Source: NVIDIA.
GA100 GPU芯片由128个SM组成 , 但是主要是因为-行销-制造 , 所以不同的Ampere GPU将仅支持其中的一些 。例如 , A100 GPU仅公开108个SM 。无论如何 , 完整的GA100由8个GPC组成 , 每个GPC具有16个SM和6个HBM2堆栈 。对于A100 GPU , 这将以1555 GB / s的速度转换为40 GB的HBM2 DRAM内存 。
它还引入了第三代NVIDIA Tensor内核(仅次于Volta和Turing) , 使其能够计算每个时钟8×4×8混合精度矩阵乘法(将8×4矩阵与4×8矩阵相乘) 。例如 , 每个A100 Tensor Core每个时钟执行256个FP16 FMA(融合乘加)操作 。Ampere在其Tensor Core上支持许多数据类型 , 包括FP16 , BF16 , TF32 , FP64 , INT8 , INT4和Binary 。
最后 , 在Ampere上展示了第三代NVLink 。对于A100 GPU , 它具有12条NVLink链接 , 总带宽为600 GB / s , 用于进行多GPU计算 。关于PCIe连接 , A100 GPU支持PCIeGen 4 , 它提供每个方向31.5 GB /秒的带宽(对于x16连接) , 使PCIe 3的带宽增加了一倍 。
参考文献费米白皮书
开普勒白皮书
麦克斯韦白皮书
帕斯卡白皮书
伏打白皮书
图灵白皮书
安培白皮书
GPU上的并行算法
(本文翻译自Adrian PD的文章《How the hell are GPUs so fast? A HPC walk along Nvidia CUDA-GPU architectures. From zero to nowadays.》 , 参考:)