当前位置:   article > 正文

一道很烧脑的面试题?在Android中能否用CPU代替GPU?

android cpu推理和gpu推理 谁的功耗更高
02每日一题

在Android中能否用CPU代替GPU


640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=gif第二天

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

「小新」的回答,面试官并不是很满意。那这个问题该怎么回答呢?先来了解下 CPU 与 GPU 的相同点与区别?


CPU 即中央处理器,GPU 即图形处理器。


相同之处:两者都有总线和外界联系,有自己的缓存体系,以及数字和逻辑运算单元。一句话,两者都为了完成计算任务而设计。


两者的区别:存在于片内的缓存体系和数字逻辑运算单元的结构差异。


CPU 虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件。


GPU 的核数远超 CPU,被称为众核(NVIDIA Fermi有512个核)。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(GPU 初始时在浮点计算上一直弱于 CPU)。


从结果上导致 CPU 擅长处理具有复杂计算步骤和复杂数据依赖的计算任务,如分布式计算,数据压缩,人工智能,物理模拟,以及其他很多很多计算任务等。


GPU 由于历史原因,是为了视频游戏而产生的(至今其主要驱动力还是不断增长的视频游戏市场),在三维游戏中常常出现的一类操作是对海量数据进行相同的操作,如:对每一个顶点进行同样的坐标变换,对每一个顶点按照同样的光照模型计算颜色值。GPU 的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行。


在 2003-2004 年左右,图形学之外的领域专家开始注意到 GPU 与众不同的计算能力,开始尝试把 GPU 用于通用计算(即GPGPU)。之后 NVIDIA 发布了 CUDA,AMD 和 Apple 等公司也发布了 OpenCL,GPU 开始在通用计算领域得到广泛应用,包括:数值分析,海量数据处理(排序,Map-Reduce等),金融分析等等。


简而言之,当程序员为 CPU 编写程序时,他们倾向于利用复杂的逻辑结构优化算法从而减少计算任务的运行时间,即 Latency。


当程序员为 GPU 编写程序时,则利用其处理海量数据的优势,通过提高总的数据吞吐量(Throughput)来掩盖 Lantency。目前,CPU 和 GPU 的区别正在逐渐缩小,因为 GPU 也在处理不规则任务和线程间通信方面有了长足的进步。另外,功耗问题对于 GPU 比 CPU 更严重。


「小新」的总结:GPU 由于拥有的核数多,能够处理海量数据;而 CPU 拥有的核数少,更倾向于处理复杂的逻辑运算。


640?wx_fmt=png

扫一扫 关注我的公众号

想了解更多趣味面试题吗~

PS:每日人品红包,请长按小程序识别。


640?wx_fmt=png


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/851396
推荐阅读
相关标签
  

闽ICP备14008679号