简单介绍一下GPU
什么是GPU?
"A graphics processing unit (GPU) is a specialized electronic circuit designed to manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device."
意思是GPU是专用的电子电路,用于操纵和改变存储器,来加速在帧缓冲区中创建图像,该帧缓冲区用于输出到显示设备。也就是说,GPU是专门用于生成图像的计算单元。GPU 主要用于嵌入式系统、电话、pc、工作站和游戏机
为什么需要GPU?CPU不可以吗
CPU也可以生成图像,但它的效率不高。现在生成图像需要的计算量十分大,尤其是要做到实时的效果
先来看看GPU 和 CPU的架构的不同
如上图所示,CPU大部分由控制器
和寄存器
构成,而GPU大部分为ALU
,它具有高并行结构
.所
以 GPU 在处理图形数据和复杂算法方面拥有比 CPU 更高的效率
什么是ALU呢?ALU(Arithmetic Logic Unit)称为逻辑运算单元,用于数据处理,正因为GPU有大量的ALU,因此它十分适合对密集型数据进行并行处理
CPU执行指令时,一次只能处理一个数据,不存在真正意义上的并行,但GPU有多个处理器核,在一个时刻可以并行处理多个数据
GPU采用流式并行计算,可对每个数据进行独立的并行计算
(流内任意元素的计算不依赖于其他同类型的数据
).也就是说,一个数据单独执行的时间和多个数据并行一起运算的时间是一样的
既然GPU那么牛,不可以取代CPU吗?
虽然GPU这种并行处理的方式运算速度的确非常快,但因为任一元素的计算不依赖于其他同类型的数据,所以GPU需要依赖"知晓数据间相关性
"的算法,这在CPU上实现十分便捷,但GPU很困难
而且,GPU在控制流
方面不如CPU。GPU的控制器少于CPU,而控制器的功能就是取指令且指出下一条指令在内存中的位置,以此协调计算机各个部分按部就班的工作
CPU和GPU如何并行工作?
若没有渲染流水线,CPU需要等到GPU完成上一个渲染任务才能再次发送渲染命令,很显然这种方式渲染效率低下,并不是并行的。那么如何让他们进行并行工作呢?解决之道是使用命令缓冲区(Command Buffer)
命令缓冲区包含一个命令队列,由CPU向其添加命令,由GPU从中读取命令,这两个步骤是相互独立的。当CPU需要渲染对象时,便向命令缓冲区添加命令,而当GPU完成上次渲染任务后,便会从命令队列中再取一个命令执行它
命令缓冲区的命令有许多种,DrawCall是其中一种
reference
Graphics processing unit - Wikipedia (jinzhao.wiki)
GPU编程与CG语言之阳春白雪下里巴人
Unity Shader入门精要
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库