Yes

Keep It Simple, Stupid.

LearnGameEngine-b3

Posted at — Nov 25, 2020

计算机通用知识

显卡

显卡也就是GPU。
CPU全称是 Central processing unit 中央处理器,而GPU全称是Graphics processing unit 图形处理器,在过去电脑是没有独立显卡的,后来发现有一种并行的方法,可以提升帮助CPU加速绘图,就设计出了并行绘图的加速硬件GPU,在过去叫它图形加速卡。

CPU能做的事情GPU大多数能做,GPU能做的CPU都能做,显卡只是图形加速卡,这也是为什么很多电脑不安装显卡也能显示图形的原因。

CPU和GPU的关系

运行模式例子1:

老师(CPU1号核心): 我手里是做好的试卷,发给同学们(GPU)批改下,从前往后传递试卷,随便拿谁的试卷都行,批改完了最后座位的同学收上来。
CPU老师负责规划和指派任务,同学们都是GPU, 负责做并行计算,2000个同学一起(并行)批卷,来加速老师的工作。总耗费时间可能只有单次批卷的时间,远比CPU老师批卷速度快,同学们比老师强吗?并不,但是部分场景可以让同学们算会非常的快。

运行模式例子2:

他们之间的关系又像老师和幼儿园小朋友们的关系。
8核CPU相当于8个老师,8个老师知道要先画上线条再上色,但还是要一个点一个点的画在画布上(显示器上),过程依然很慢,后来人们想到了个好办法,让老师指挥2000个的小朋友画各自的任务,是的,GPU有上千个核心,但是每个核心都是幼儿园小朋友的智力水准,需要CPU和程序员指挥得当。

运算速度例子1:

老师(单个CPU核心)在计算2+3+4+….+11的时候会用 (上底+下底) x 高 / 2的方式也就是:
高 = size(2..11) = 11-2+1 = 10
结果 = (2+11) x 10 / 2 =65

而单个gpu核心(幼儿园水准),算东西可能会慢成这样: 2+3+4+5+6+7+8+9+10+11 = 65

术语

并行:大家同时一起干活,不需要等一个人干活完再干下一个活,与之对应是串行。
串行:等待干完这件事情,别人(或自己)接着去干。

切10个萝卜是并行的,10个机器一起切。
炒菜和切萝卜是并行的,可以一边热锅一边操作切萝卜。
吃饭和炒菜是串行的,炒完才能吃。

opengl

文章开头的时候说了研究出了一种并行的算法给GPU去做,这样的算法是什么样的东西呢?
Shader,在特效美术行业,基本美术人员都知道它。
Shader是专门为并行的硬件设计出来的语言,用Shader语言可以开发出各种2D 3D的特效,你们看到电视上的火焰炸弹等等都是用的它。 Shader语言不止一家公司在做,比较出名的是微软商业DirectX的HLSL,和免费Opengl的GLSL。
后面我们将会使用Opengl的GLSL进行开发。

日常Tips

GPU不会让你的电脑卡,一般很少有程序利用GPU进行加速,大家都认为GPU是做游戏和做3D美术用的,白白浪费了GPU庞大的算力。
后面我们开发程序全部都是基于GPU,不会让你的GPU除了打游戏,躺在角落一无是处。这个GPU加速APP的理念将会在未来的5~10年里普及。
Tips: GPU制暖效果堪比空调,冬天我们可以不使用空调,写一段代码调用GPU运转就足够暖和了。

最后附加一张显卡图片[图1]