Intel曾经用自己最强的CPU和NVIDIA的GPU做过性能对比。
两块Xeon 9282(五十六核处理器)的性能是与一块V100非常接近的,但是功率却是V100的两倍多。至于价格方面,据说9282的价格在2.5w-5w美元之间,两块的价格就是5w-10w美元了。
而V100的32GB版的价格约为1w美元(16GB版的大概7000美元),价格差距比能耗差距要大得多。
同等价格的CPU和GPU速度差可能在十倍以上;同等性能的CPU和GPU的价格可能也会接近十倍;
https://www.zhihu.com/question/273812506
CPU和GPU跑深度学习差别有多大?
上图是SGI公司1993年的一款显卡的模块图。可以看出,早期的显卡是一个具有固定流水线的专用芯片,只能处理特定任务,没有多少可编程的能力。
到了2005年左右,这些渲染流水线的功能被统一到一个叫做Shader Processor的可编程单元中。此后,显卡也被称为GPU(Graphics Processing Unit)。
无论是CPU,还是GPU,或者是现在比较火的NPU,一个Processing Unit,一般都是由上图所示的三部分组成:
Fetch/Decode。数据的输入/输出单元。
ALU(arithmetic and logic unit)。运算单元。
Execution Context。寄存器单元。
CPU强调单core的极致性能,因此广泛使用了如下技术:
Out-of-order control logic
Fancy branch predictor
Memory pre-fetcher
GPU不追求单core的性能,因此也没有那些复杂的控制逻辑。这样省下来的电路,可以变成更多的ALU。由于数据处理的局部性,通常可以若干ALU共享一套Fetch/Decode和Ctx。
当然,如果ALU非常多的话,就不能都共享一套了,这时可以采用下图所示的分组共享。
其中的每个组,被称为一个core。
有利就有弊,下面看看GPU是如何执行条件语句的。
上图展示了8个ALU并行执行条件语句的过程:
计算每个数据的条件,生成对应的标志。
执行True分支。
执行False分支。
可以看出,GPU对于条件语句的执行时间=True分支执行时间+False分支执行时间。而CPU只需要根据条件,执行一个分支就可以了。显然,GPU对于程序的控制能力,相对CPU简直弱爆了。GPU并不擅长做这些东西。
CPU的SSE、AVX之类的指令集,也借鉴了GPU的设计思想,但是CPU的core数,相对于GPU而言,差了10~1000倍。
VGPR:Vector general purpose register
SGPR:Scalar general purpose register
Two-Level Adaptive Branch Predictor
如今的亚马逊AI/ML总经理Kumar Chellapilla是最早吃到GPU螃蟹的学者。2006年,他使用英伟达的GeForce 7800显卡第一次实现了卷积神经网络(CNN),发现比使用CPU要快4倍。这是已知最早将GPU用于深度学习的尝试。
Sequential (von Neumann), Data Parallel (SIMD), Dataflow, Multi-threaded (MIMD, SPMD), …
Out-of-order execution, Vector processor, Array processor, Dataflow processor, Multiprocessor, Multithreaded processor, …
von Neumann model implemented by an OoO processor
SPMD model implemented by a SIMD processor (a GPU)
GPU虽然是一个SIMD机器,但是并没有采用SSE、AVX之类的SIMD编程模型,而是SPMD模型。
移动GPU和桌面GPU最核心的差别在于渲染流程不同。目前主流的移动GPU,无论ARM、高通还是Imagination,其GPU都是TBR(Tile Based Rendering)。而桌面GPU,无论NVIDIA、AMD还是Intel,都是Immediate Rendering。
所谓的Immediate Rendering,就是将一个图元(最常见的是三角形),从头到尾走完整个Pipeline,中间没有停止。这种结构,控制简单,容易实现。问题是在做blending的时候需要从存储单元中不断读回之前render的结果,因此在绘制一个大的场景时这个带宽消耗是比较大的。而桌面GPU都是有自身显存的,它不需要通过系统总线从系统的DDR memory中读回数据。所以开销比较小,这是完全可以接受的。
TBR的精髓就是一个Tile一个Tile的渲染。这样只需要给GPU配上一块很小的片上cache(足够装下一两个Tile的内容就行),就能实现高效的blending。移动GPU中有Tiler模块,将整个场景的图元信息(最主要的是位置)都保存下来,并且能在做光栅化时快速的检索出属于这个Tile的图元。
https://www.zhihu.com/question/20720436
移动GPU和桌面GPU的差距有哪些?
https://zhuanlan.zhihu.com/p/654389634
GPU帧缓冲内存:了解瓦片渲染TBR(tile-based rendering)
通用图形处理器(General-purpose computing on graphics processing units,简称GPGPU),是一种利用处理图形任务的图形处理器来计算原本由中央处理器处理的通用计算任务。这些通用计算常常与图形处理没有任何关系。
从市场宣传的角度,如果某家公司的产品定位为GPGPU,那么也就意味着该GPU没有图形能力。
上图展现了GPU和GPGPU之间的差异。
然而通用处理对于图形处理的侵蚀,或者说充分运用AI算力,简化图形专用硬件也是一大趋势。
如上图所示,先进图形标准中,崭新的、更加利用计算功能的mesh shader可以取代从vertex shader到geometry shader的着色器,从而在不减功能的前提下,将图形管线节点数大量减少,并移除一些连接节点的专用硬件。性能还可能因为mesh shader拥有的弹性,而有所提升。
AMD:RDNA
Imagination:PowerVR
Qualcomm:Adreno
ARM:Mali
RDNA是GPU架构,Navi是使用它构建的图形处理器的代号。同样,GCN是架构,而Vega和Polaris是代号。
https://www.expreview.com/68888.html
AMD RDNA显卡架构简析
https://zhuanlan.zhihu.com/p/459812380
AMD RDNA与GCN GPU架构之间的差异:AMD如何赶上NVIDIA
UMD,User Mode Driver。GPU的用户态驱动程序,例如CUDA的UMD是libcuda.so。
KMD,Kernel Mode Driver。GPU的PCIe驱动,例如英伟达GPU的KMD是nvidia.ko。
http://tieba.baidu.com/p/2250616047
史上最全桌面显卡天梯图
https://zhuanlan.zhihu.com/p/365926059
2021超全的显卡挑选指南
https://mp.weixin.qq.com/s/8HIZRhb-KJOtPnQtQ3GQVg
第一代芯片是CPU,第二代是GPU,第三代是什么?
https://mp.weixin.qq.com/s/qkpbKN62YV2f0W5HLnr7Dg
GPU是如何工作的?与CPU、DSP有什么区别?
https://mp.weixin.qq.com/s/Jof-u8oUuLR4v7t3jjXEmA
GPU和线下训练
https://mp.weixin.qq.com/s/HeoVktVtvOK4VgocyxuCXg
摩尔定律已死?GPU会取代CPU的位置吗?
https://mp.weixin.qq.com/s/zTO4UZ3zDLZL0GOjv0YqrQ
GPU加速深度学习
https://mp.weixin.qq.com/s/VysqrYVXG1JiNG86viQ6Xg
学深度学习的你有GPU了吗
https://mp.weixin.qq.com/s/fUl-YjMlfZs9XXZ1W4DFBQ
GPU历史系列(一):故事从20世纪70年代讲起
https://mp.weixin.qq.com/s/QuvpUYNhmf3htl0ea9TT8Q
GPU历史系列(二):改变游戏规则的3Dfx Voodoo
https://mp.weixin.qq.com/s/BisVJ3VDxcUpSMyoGmQicw
GPU历史系列(三):Nvidia一统江湖
https://mp.weixin.qq.com/s/5ahh8EihTefzMmCGSwmwHw
GPU历史系列(四):通用GPU的来临
https://mp.weixin.qq.com/s/iBgTyDiNNTUuuCgWJCyKig
深度报告:GPU产业纵深及国产化替代
https://zhuanlan.zhihu.com/p/463629676
从AI系统角度回顾GPU架构变迁–从Fermi到Ampere
https://zhuanlan.zhihu.com/p/446830540
GPU架构(上)—AI芯片设计入门
https://zhuanlan.zhihu.com/p/446837354
GPU架构(下)—AI芯片设计入门
https://www.cnblogs.com/timlly/p/11471507.html
深入GPU硬件架构及运行机制
https://zhuanlan.zhihu.com/p/576793055
Intel四十年显卡坎坷路
https://zhuanlan.zhihu.com/p/572302589
GPGPU流式多处理器架构之取指译码发射
http://www.cnblogs.com/geniusalex/archive/2008/12/26/1941766.html
CPU GPU设计工作原理
https://mp.weixin.qq.com/s/-Wg1GtVGUxfshJ5d5NDd-Q
聊聊GPU的计算能力上限
https://mp.weixin.qq.com/s/zdr7BfJxVepQL1TCDXQoJA
一文带你了解GPU的前生今世
https://www.zhihu.com/question/22219245
GPU不能完全取代CPU的最大原因是什么?
https://mp.weixin.qq.com/s/tyZXc_hz89SxERjb_c34_w
现代处理器分支预测技术
https://zhuanlan.zhihu.com/p/651179378
GPU内存概念浅析
https://zhuanlan.zhihu.com/p/377073683
GPU虚拟化,算力隔离,和qGPU
超长指令字(VLIW:Very long instruction word)和超标量(superscalar)都在同一个CPU中,集成了数套运算单元。
超标量用硬件来决定哪些指令可以并行执行,而VLIW采用软件来决定哪些指令并行,通过把指令调度的复杂度交给编译器来降低硬件复杂度。
VLIW的代表是Intel的Itanium处理器。当处理器的执行宽度(execution width),指令执行延迟时间,执行单元个数(function unit)改变时,VLIW需要重新编译程序来适应。但是Superscalar却不需要。
因此,VLIW在GPU中用的比较多。GPU程序并不直接生成GPU指令,而是通过厂商提供的DX/OpenGL库操作GPU。因此这些重新编译程序的任务已经由厂商完成,对于使用者透明。
https://mp.weixin.qq.com/s/OQ3KUAi6HMyOS8k3J_1e6g
关于超长指令集VLIW的一些讨论
https://www.zhihu.com/question/430177243
CPU长指令(VLIW)失败的主要原因是什么,VLIW真的无药可救吗?
https://blog.csdn.net/do2jiang/article/details/4545889
流水线、超流水线、超标量技术对比
https://blog.csdn.net/edonlii/article/details/8755205
单发射与多发射
https://mp.weixin.qq.com/s/FJX9eeRkxS5nJ4XIhRVwkg
从ServerSwitch到SONiC Chassis:数据中心交换机技术的十年探索历程
https://mp.weixin.qq.com/s/MCYocOY2pHHqiLhcE4SXyg
为什么苹果M1芯片这么快?
https://zhuanlan.zhihu.com/p/358167791
Vector的前世今生(1):从辉煌到低谷
https://zhuanlan.zhihu.com/p/368640768
Vector的前世今生(2):ARM SVE简述
https://zhuanlan.zhihu.com/p/594532014
一文搞懂Cortex-A77(ARMv8架构)工作原理
您的打赏,是对我的鼓励
请访问这里提交评论