在学习shader 语言的时候,经常会困惑为什么它会这样来设计?与我们接触的Java、javascript等其他语言没有什么共通之处,觉得难以理解这种设计。 这是因为shader语言是直接面向GPU的,与其他的语言(跑在CPU上)不同,了解一些GPU的特性,对我们理解和掌握shader语言会更有帮助。 深入GPU硬件架构及运行机制
Gpu与cpu的区别
Gpu是
GPU全称是Graphics Processing Unit,图形处理单元。它的功能最初与名字一致,是专门用于绘制图像和处理图元数据的特定芯片,后来渐渐加入了其它很多功能。
图形绘制。 这是GPU最传统的拿手好戏,也是最基础、最核心的功能。为大多数PC桌面、移动设备、图形工作站提供图形处理和绘制功能。
物理模拟。 GPU硬件集成的物理引擎(PhysX、Havok),为游戏、电影、教育、科学模拟等领域提供了成百上千倍性能的物理模拟,使得以前需要长时间计算的物理模拟得以实时呈现。
海量计算。 计算着色器及流输出的出现,为各种可以并行计算的海量需求得以实现,CUDA就是最好的例证。
AI运算。 近年来,人工智能的崛起推动了GPU集成了AI Core运算单元,反哺AI运算能力的提升,给各行各业带来了计算能力的提升。
其它计算。 音视频编解码、加解密、科学计算、离线渲染等等都离不开现代GPU的并行计算能力和海量吞吐能力。
这段话的意思是,由于 GPU 具有高并行结构(highly parallel structure),所
以 GPU 在处理图形数据和复杂算法方面拥有比 CPU 更高的效率。图 1 GPU VS CPU 展示了 GPU 和 CPU 在结构上的差异,CPU 大部分面积为控制器和寄存器, 与之相比,GPU 拥有更多的 ALU(Arithmetic Logic Unit,逻辑运算单元)用于 数据处理,而非数据高速缓存和流控制,这样的结构适合对密集型数据进行并行 处理。CPU 执行计算任务时,一个时刻只处理一个数据,不存在真正意义上的 并行(请回忆 OS 教程上的时间片轮转算法),而 GPU 具有多个处理器核,在一 个时刻可以并行处理多个数据。