Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

GPU与GPGPU泛淡

GPU与GPGPU泛淡

GPU(Graphics Processing Unit),也即显卡,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上作图像运算工作的微处理器。它已经是个人PC和移动设备上不可或缺的芯片,有界面有显示的地方,一般就离不开它。高清电视、智能手机、个人电脑。

GPU的产生是为了解决图形渲染效率的问题,但随着技术进步,GPU越来越强大,尤其是shader出现之后(这个允许我们在GPU上编程),GPU能做的事越来越多,不再局限于图形领域,也就有人动手将其能力扩展到其他计算密集的领域,这就是GP(General Purpose)GPU。

考虑到当下,图形领域的技术人员对GPU已经是很熟悉了,其他那些关心GPU的,无非是向往GPU的强大并行运算能力,想利用它做通用计算的,因此,本文会特别提GPGPU。

架构与生态

GPU
第一行为图形引擎/算法库,
第二行为图形标准
第三行为不同型号的GPU

图形标准

开发者直接调用驱动接口是很不方便且不安全的,为此,需要有一套给上游应用开发提供的API,开发者使用这组API,去触发GPU的功能,这一套API就是图形标准。
如图所示:
api
作为开发者,自然非常希望这套API是统一的,不过很不幸,由于历史原因、性能问题及永恒的利益之争,统一似乎是不可能的事情。还好,主流的标准就那么几个,而且编程原理基本上一样,代码封一层去适应下,一般也就可以了。

图形渲染标准

个人PC一般是Windows系统,主要使用Direct3D,一般也支持OpenGL。
服务器、mac等一般是类unix系统(Ubuntu、Redit、macOS),支持开放标准OpenGL。
智能手机、机顶盒等嵌入式设备一般是类unix系统(iOS、Android、阿里云等),支持开放标准OpenGLES(OpenGL标准作裁剪而得),不过苹果觉得OpenGL效率太低,不能充分发挥自家GPU的优势,就搞了一个metal。后面 AMD 也这么认为,搞了一个mantle,到了最后khronos组织也一致这么认为了,就推出了vulkan。

Direct3D只适用于Windows,metal只适用于ios,mantle只适用于AMD的GPU,OpenGL/OpenGL ES及新推出的vulkan是通用开放标准,它们由khronos组织维护,理论上适用于任何操作系统,但需要GPU厂商去支持。

最早的图形标准是联合组织维护的OpenGL,后面微软觉得这个组织效率太低,于是结合自己的系统弄了Direct3D,在后续的较量中渐渐取得了绝对优势(率先推出shader是竞争拐点)。OpenGL在PC端渐渐不行的时候,苹果的iphone及一系列Android机又在移动端拯救了它(开放的好处,移动端只能用OpenGL)。但OpenGL这套标准实在是有硬伤,人们虽然将就着用,并且不断升级改良,也实在到了需要进一步突破的时候,于是就有了 vulkan。

如这篇文章所述:

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: android 架构模式MVC,MVP,MVVM

下一篇: Javascript之BOM与DOM讲解

精华推荐