Programmable Graphics Processing Unit(GPU),可编程图形处理单元,可编程图形硬件。
98年NVIDIA的modern GPU研发成功,使用晶体管(transistors)进行计算。
自03年起,可编程图形硬件正式诞生,GPU编程也宣告诞生。
目前最新的可编程图形硬件已经具备了如下功能:
1. 支持 vertex programmability 和 fragment programmability;
2. 支持 IEEE32 位浮点运算;
3. 支持 4 元向量, 4 阶矩阵计算;
4. 提供分支指令,支持循环控制语句;
5. 具有高带宽的内存传输能力( >27.1GB/s);
6. 支持 1D、 2D、 3D 纹理像素查询和使用,且速度极快;
7. 支持绘制到纹理功能( Render to Texture, RTT)。
由于 GPU 具有高并行结构( highly parallel structure),所以GPU 在处理图形数据和复杂算法方面拥有比 CPU 更高的效率。
所谓“并行计算”是指“多个数据可以同时被使用,多个数据并行运算的时间和1个数据单独执行的时间是一样的”。
虽然 GPU 采用数据并行处理方式极大加快了运算速度,但正是由于“任意一个元素的计算不依赖于其它同类型数据”,导致“需要知道数据之间相关性的”算法,在 GPU 上难以得到实现(但在 CPU 上则可以方便的实现),一个典型的例子是射线与不规则物体的求交运算。
此外, GPU 在控制流方面弱于CPU,在图中可以看到, GPU 中的控制器少于 CPU,而控制器的主要功能是取指令,并指出下一条指令在内存中的位置, 控制和协调计算机的各个部件有条不紊地工作。
——摘自《GPU 编程与CG 语言之阳春白雪下里巴人》
总结:
- 由于GPU的高并行性,对像素的处理无需像C++等高级语言一样进行遍历操作
- GPU不仅在处理图形数据方面效率更高,在处理“不依赖其他同类型数据”的复杂算法方面也有更高的表现
- GPU提供顶点编程和像素编程能力