都有这么一种说法:cpu是大学教授,做的是高数难题;gpu是一群小学生,做的是普通加减乘除,你出小学数学gpu当然算的快,你出高数gpu就懵了。
其实有必要更深入去思考一下的差异。
gpu的起源,与其说是从cpu分裂出去,不如说是从专用到通用的改变。
在计算机初始的年代,一开始gpu的概念也不存在,显示芯片主要意义在于输出视频信号。
就连2d兴起的时候,显示芯片的运算能力也没有得到重视——那时候的2d,你在java里弄个一下不也差不多?
直到3d时代来临,一个物体要在空间里经过变换,还要进行光照处理,数学运算能力的重要性才得以体现;而且一开始这些运算也是在cpu上完成的,显卡更大的意义在于光栅化,当时的opengl1.x跑在cpu上也是很正常的情况。
gpu这个词是rce256时提出的,当时内部集成了硬件固化的t&l(光影转换)单元,故名思意就是做空间变换与光照处理,至此,gpu的浮点运算能力算是有了开端。
虽然此时显卡(gpu)的地位被稳固下来,但在很长时间以来也没有人想要拿进行对比,毕竟gpu不仅仅是运算那么简单,几何体的变换裁剪,光栅化,纹理的读取,后期aa……这些功能过于专用化,cpu只能模拟,显然是吃亏的。
当时的处理方案是显卡把运算单元划分给顶点和像素两个阶段,不同显卡为两者分配的计算资源比例不同,也使其在不同游戏下表现出不同的性能。
而到现在还能看到图形api流水线里的vs、ps阶段,一直到前几年dx10开始,gpu的架构迈入通用架构,流处理器的概念被提出,gpgpu开始兴起,gpu这才终于有了和cpu比较的基础。
从此,gpu的核心数越来越多,几十几百甚至上千。
核心多的gpu就是适合做并行量大的工作,渲染一帧画面,多边形数上百万,互不影响(理想条件),最终画面达到1080p,像素数上百万,也互不影响(理想条件),这种良好的并行负载使得gpu的架构能发挥出巨大实力。
但是cpu也并非没有这种使用场景,不然也不会从单核到双核又到四核。
……
事实上两者的单精度运算能力的确差不多,但是换成几乎完全不能并行化的工作负载,例如48个在做不同工作的线程时,结果就不一样
…。。本站若有图片广告属于第三方接入,非本站所为,广告内容与本站无关,不代表本站立场,请谨慎阅读。
Copyright © 2020 五八书阁 All Rights Reserved.kk