文章图片
文章图片
从上述两张图可以看到,GPU的ALU(运算单元)数量远多于CPU,但是GPU的Control要远远少于CPU,这使得GPU的单Core的自由度要远远低于CPU。
在设计目标上,CPU目标是是并行执行几十个线程,而GPU的目标是要并行执行几千个线程。因此,GPU将更多的晶体管用于数值计算,而不是缓存和流控(Flow Control)。
GPU每一行有多个ALU,却只有一个Control,这代表着多个Core同一时刻只能执行同样的指令,这种模式也称为 SIMT (Single Instruction Multiple Threads)。
从GPU的架构出发,我们会发现,因为Cache和Control的缺失,只有计算密集与数据并行的程序适合使用GPU。
- 计算密集:数值计算的比例要远大于内存操作,因此内存访问的延时可以被计算掩盖,从而对Cache的需求相对CPU没那么大。
- 数据并行: 大任务可以拆解为执行相同指令的小任务,因此对复杂流程控制的需求较低。
推荐阅读
- 深度学习|深度学习(GPU云服务器的租用)
- 机器学习|pytorch查看网络架构的几种方法
- 深度学习|深度学习开发环境搭建
- #|yolov5 优化方法(四)修改bbox损失函数(补充EIOU,SIOU)
- 向前端进军|【没对象怎么办(JavaScript-带你找对象】对象是什么,对象能干嘛,对象该怎么用,本篇带你了解js中的对象。)
- 神经网络|只需两行代码,2080Ti 就能当 V100用,这个炼丹神器真牛!
- 自然语言处理|横扫六大权威榜单后,达摩院开源深度语言模型体系 AliceMind
- 医学影像|Pair 智能标注神器,医生的好帮手
- Pytorch|Pytorch optimizer.step() 和loss.backward()和scheduler.step()的关系与区别