这篇文章主要介绍“GPU的内存带宽为什么与CPU的不同”,在日常操作中,相信很多人在GPU的内存带宽为什么与CPU的不同问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”GPU的内存带宽为什么与CPU的不同”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
但是考虑到GPU运算核心的数量。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的原因,除了改善访存延迟,也可以降低内存带宽压力。Nvidia和AMD都开始拥抱移动GPU常用的TBR(Tile Based Rendering)的绘制技术,内存带宽的压力也应该是重要的驱动因素。而作为软件人员,在设计算法的时候,我们要重视算法的运算强度,要充分利用片上内存包括硬件Cache和软件Cache(Shared Memory),以及注意内存的合并访问(Memory Coalescing)等等来优化内存带宽。
到此,关于“GPU的内存带宽为什么与CPU的不同”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。