再谈GPU的内存带宽

商务办公
我们谈到GPU相比CPU有更大的内存带宽,此言不虚,这也是众核GPU有源源不断数据弹药供给,能够发挥强大算力的主要原因。

[[414529]]

 本文转载自微信公众号「GPU and Computing」,作者GPUComputing  。转载本文请联系GPU and Computing公众号。

在先前的文章中《近距离看GPU计算(2)》,我们谈到GPU相比CPU有更大的内存带宽,此言不虚,这也是众核GPU有源源不断数据弹药供给,能够发挥强大算力的主要原因。如下表所示(GDDR和HBM都是GPU的显存规格),基本上GPU的内存带宽要比CPU多一个数量级。

但是考虑到GPU运算核心的数量,平均下来显存带宽真的足够富裕吗?参考资料1的《Memory bandwidth》文章提供了很有趣的视角,我们在这里介绍下。MOS 6502发布于1975年,是微型计算机发展史上非常重要的一块芯片。6502一般运行在1M时钟频率,每个时钟可以访问1Byte内存数据,6502的一条指令需要花费3~5个时钟,所以平均下来每条指令大概可以获得4B内存数据。

与此相对照,Intel的Core i7-7700K是一款目前比较主流的桌面CPU,运行频率4.2G,内存带宽大概50GB/s。i7-7700K一共有4个处理核心,所以每个核心大概可以均摊到12.5GB/s的内存带宽,也就是每个时钟可以访问约3B的内存数据。该CPU的IPC(Instruction Per Clock)为1,极优化的代码可以达到的IPC为3,按此计,每条指令可得1B的内存数据,跟老前辈6502相比,已经落后不少。更进一步,现代CPU支持256位长度的SIMD指令,每个时钟最多执行3条指令,类比GPU,我们以32位为一个通道作为单独执行线程,这样每个时钟我们一共有24条指令执行,所以每条指令可以访问0.125B内存数据或者说每8条指令得到1B内存数据。

我们再回过头来看看GPU的情形。以NVidia GeForce GTX 1080Ti为例,内存带宽484GB/s,处理单元工作频率为1.48G,所以对整个GPU来说,每个时钟大概可以访问327B内存数据。这个GPU一共有28个SM(类似CPU的处理核心),每个SM有128个SP,所以总共有3584个SP(类似先前SIMD32位通道)。这样每个SM一个时钟大概可以访问11.7B的内存数据,平均到128个SP,一个SP一个时钟得到0.09B数据,换个好听的说法就是每11条指令可以得到1B内存数据,比CPU的指标还恶劣。

需要再次重申的是,因为设计目标的问题,CPU其实更关注访存延迟指标,所以相形之下,内存带宽的压力对GPU更为显著。这也是为什么我们先前说过的GPU也开始配置多级Cache的原因,除了改善访存延迟,也可以降低内存带宽压力。另外我们在《GPU历史之二三事》里也提到Nvidia和AMD都开始拥抱移动GPU常用的TBR(Tile Based Rendering)的绘制技术,内存带宽的压力也应该是重要的驱动因素。而作为软件人员,在设计算法的时候,我们要重视算法的运算强度(见《Roofline模型初步》),要充分利用片上内存包括硬件Cache和软件Cache(Shared Memory),以及注意内存的合并访问(Memory Coalescing)等等来优化内存带宽。

主要参考资料:

https://fgiesen.wordpress.com/2017/04/11/memory-bandwidth/

 

责任编辑:武晓燕 来源: GPU and Computing
相关推荐

2017-08-28 15:32:52

内存DDR4DDR3

2024-09-18 05:30:00

GPU内存人工智能

2009-07-09 22:26:39

网络带宽实测300M带宽51CTO评测

2013-04-18 17:07:36

2009-08-28 10:14:45

C#内存泄露

2022-06-17 10:46:55

HBM

2010-06-17 16:27:26

WAP协议

2010-09-28 15:30:39

3550配置dhcp

2012-05-17 10:02:02

2020-07-16 10:48:42

DDR5内存宽带

2022-01-12 07:06:42

DPU网卡GPU

2017-09-28 11:20:59

深度学习内存带宽计算能力

2017-09-14 16:57:06

深度学习内存带宽计算量

2018-11-01 15:31:37

服务器共享带宽独享带宽

2010-06-18 23:01:16

IT管理安防产业H3C

2010-06-21 21:35:28

运维管理安防行业H3C

2014-03-19 10:03:56

2011-07-29 10:12:12

JavaScript

2022-09-14 08:22:50

AlloyDB高性能高可用性

2012-12-27 10:37:21

开发设计架构设计电子商店
点赞
收藏

51CTO技术栈公众号