GPU不能完全取代CPU的最大原因是什么?

haaooh

GPU取代不了CPU,这是因为它们的功能定位就不一样,前面也有回答说过,CPU擅长做些复杂的事,如分支预测,GPU擅长做些量大的事,如并行计算。其实换个角度还可以这么想,GPU为什么能按照它们的方式工作?

GPU的图形驱动程序为程序员提供了一个接口,我们通过如DirectX、CUDA、OpenGL、OpenCL、Metal等API进行编程。这个驱动程序有多复杂就不说了,可是你想过没有,它是在哪上面运行的?

没错,就是CPU,即使是GPU能完成全世界上所有的计算,它仍然需要一个CPU来运行GPU驱动,这个驱动会号令GPU该去做些什么。或许你说,怎么不在GPU上加一个小CPU来做这些事呢?确实,AMD有自己的APU,它是一个内置了GPU的CPU,英特尔也有自己内置了GPU的CPU,但是它们都没有一台只有GPU而不需要某种CPU的计算机。

如果真的只有一个GPU,那么如何将GPU连接到网络,如何将GPU连接到打印机,如何让GPU接受键盘输入的指令等等,这些任务都需要操作系统来运行其它相应的硬件驱动程序,并且此类代码和交互都需要一个CPU型的处理器来帮助运行。

所以说,GPU不能完全取代CPU的最大原因是,它只有依靠CPU才能实现自己的远大前程。


超能网

楼主问颠倒了,不是GPU能取代CPU,而是CPU可以取代GPU。

从功能上来说,CPU可以干GPU的活,而GPU不可以干CPU的活。最早初,就是没有GPU显卡这东西的。

在最早期,例如DOS时代,全是命令行,或者图形界面刚刚成形的时候,计算与图形显示全是由CPU来干的。那个时候,图形界面比较简单,CPU一边计算一边显示还并不太累。

后来,随着图形界面越来越复杂,软件UI、视频、3D演示、图片、图形设计、游戏等等显示应用越来越复杂。这个时候CPU一个人干两样活就比较吃力了。为了给CPU减负,于是将GPU独立了出来。

GPU,即图形处理器。专门来处理显示图形。这样,CPU就能专心干计算这种最核心的活了。

GPU如果能干计算,就不叫GPU了而是直接成CPU了;而CPU本来是可以干GPU的活的,只是为了效率,而将GPU独立了出去。楼主明白了吗?

或许,随着科技发展,CPU有了更大的发展,二级缓存都能达到2G以上的话,连内存条都可以省了呢。GPU也可能再被集成进来。


全球华人第一神探

GPU集群

GPU擅长的是并行运算,就像搬运东西,人多力量大,同样的东西100个人搬,肯定比一个人搬来的快。所以在科学领域,GPU通常用来做那些需要海量运算的科研项目。


2010年排名世界第二的"星云"超级计算机,集成了9280颗因特尔至强X5650和4640颗NVIDIATeslaC2050专用GPU,兼顾速度和精度

CPU擅长的是浮点运算

,追求的是运算的精确度,我们还是用前面的搬运来举例,CPU是一个体格强壮的巨人,力量很大,但是同一时间它只能搬运一个东西,哪怕这个东西很笨重。所以在同一时间内,CPU的能力再强,也是比不过GPU的多核心并行运算速度的。

当下的情况是,GPU和CPU两者相互补充,谁也不能替代谁。GPU有并行运算优势,速度快,但是精度差于CPU,适用于云服务和大数据处理;CPU特长在于浮点运算,运算精度很高,但是受核心数的限制,单位时间数据处理能力远低于GPU,适用于国防和航空航天等需要精确控制的领域。

以上属个人观点,如有不足,还望指正。


科技骑兵

1.GPU是大量运算单元构成的协处理器.这就意味着GPU擅长高密度并行计算.但程序不是你想并.想并就能并...

a+b=c c+d=e 这种运算不能并...因为第二个式子的一个运算数是第一个式子的结果..必须等第一个算完才能算第二个...

a+b=c d+e=f 这种运算可以并行...因为前后两式无关...

实际情况中..程序中99%的部分无法并行..想要利用并行...需要毁三观重新学习并行计算的思路...

以交换a b值的功能为例...常规版本就是 int c=a a=b b=c 三步完成...并行版本是int c=a int d=b a=d b=d 两步完成...

这非常反人类.人类的计算机财富和发展就是应用软件的累积.想要重写所有代码适应并行计算...不可能的...并且即使做了并行优化...效率提高也远没有成倍那么理想...

但图形图像处理略微不同...并行程度十分高...GPU输入输出是以纹理为单位...就是物体的一个面的图...当光慢慢变亮变暗...都是这些纹理上的一个一个点在+1-1...非常具有可并行性....

也就是说...GPU作为通用处理器毫无优势...但可作为专用处理器替代CPU完成高密度简单并行计算....

2.实际上CPU的并行计算能力更强...无论是通用还是专用...Xeon E5 48线还是Xeon E7 96线...乃致用超级计算机用的都是通用处理器...性能并不是GPU可以比拟的...但GPU在完成擅长的专用计算的性价比也不是这些CPU可以比拟的....

3.GPU只是一个协处理器...他没有主动去储存器拉数据的权限和能力...必须CPU喂他数据和操作指令...而完成各种内部储存器、外部储存器、各种设备的协调调度能力等这些CPU的标准功能...并不是一朝一夕的技术实力可以完成的...GPU和CPU虽然名字上有两个字母相同...但实际上GPU只是CPU中极小的一部分协处理器的扩展模块...根本不具备替代的可操作性...


ACME63610374577

不过现在的需求完全不一样了,除了单片机和最简单的那种逻辑电路之外,完整的计算机系统肯定是有独立的图形计算单元的,哪怕现在有些电脑没有独立显卡,但负责图形计算的GPU也是集成在CPU核心内的,也是独立的GPU计算单元,因为现在对图形渲染的需求完全变了,各种3d游戏啊,影音剪辑啊,都是涉及到复杂的图形计算,所以基本上不在由CPU兼任这个任务,都设置了单独的图形计算单元,为的是提高CPU的效率。而且经过多年的发展,现在GPU(就是你们俗称的独显)其成本也超过了CPU,这也是计算机主流发展的结果。
所以回到题主的问题,不是GPU取代CPU,而是GPU本来就是CPU的一种。


su27水煮蛋

gpu处理器很简单的。cpu上的算法极少部分可以使用gpu达到类似效果,绝大多数算法gpu做不到的。如果你想深入了解就看看gpu结构和计算机原理,还有一篇图灵的论文,说计算机出现可能性的,被视为计算机的数学基础。看过了,下次就不会问这些问题了。还有不要说什么gpu算法,程序员会排队掐死你的。


灌木丛里的蜈蚣

CPU的特点:单个任务算的快,但是只能同时算少量几个任务。擅长处理各种逻辑计算。

GPU的特点:单个任务算的非常慢,但是能同时执行大量过程相同,数据不同的运算。擅长处理各种简单的数学运算。


平常用电脑绝大多数都是逻辑运算,要求尽快得到结果,这些活只能CPU来干。


分享到:


相關文章: