简单介绍一下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的架构的不同image-20230205170115496

如上图所示,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完成上次渲染任务后,便会从命令队列中再取一个命令执行它image-20230206160909761

​ 命令缓冲区的命令有许多种,DrawCall是其中一种

reference

Graphics processing unit - Wikipedia (jinzhao.wiki)

GPU编程与CG语言之阳春白雪下里巴人

Unity Shader入门精要

posted @   爱莉希雅  阅读(318)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
点击右上角即可分享
微信分享提示