共计 2194 个字符,预计需要花费 6 分钟才能阅读完成。
GPU 这一概念也是绝对于计算机系统中的 CPU 而言的,因为人们对图形的需要越来越大,尤其是在家用零碎和游戏发烧友,而传统的 CPU 不能满足现状,因而须要提供一个专门解决图形的外围处理器。
GPU 作为硬件显卡的心脏,位置等同于 CPU 在计算机系统中的作用。同时 GPU 也能够用来作为辨别 2D 硬件显卡和 3D 硬件显卡的重要依据。2D 硬件显卡次要通过应用 CPU 来解决个性和 3D 图像,将其称作软减速。
3D 硬件显卡则是把个性和 3D 图像的解决能力集中到硬件显卡中,也就是硬件加速。目前市场上风行的显卡多半是由 NVIDIA 及 ATI 这两家公司生产的。
问题一:GPU 设计目标和 CPU 截然不同
GPU 是并行编程模型,和 CPU 的串行编程模型齐全不同,导致很多 CPU 上优良的算法都无奈间接映射到 GPU 上,并且 GPU 的构造相当于共享存储式多解决构造,因而在 GPU 上设计的并行程序与 CPU 上的串行程序具备很大的差别。
GPU 次要采纳立方环境的材质贴图、硬体 T &L、顶点混合、凹凸的映射贴图和纹理压缩、双重纹理四像素 256 位的渲染引擎等重要技术。
因为图形渲染工作具备高度的并行性,因而 GPU 能够仅仅通过减少并行处理单元和存储器管制单元便可无效地进步解决能力和存储器带宽。
GPU 设计目标和 CPU 截然不同,CPU 是设计用来解决通用工作,因而具备简单的管制单元,而 GPU 次要用来解决计算性强而逻辑性不强的计算工作,GPU 中可利用的处理单元能够更多的作为执行单元。
因而,相较于 CPU,GPU 在具备大量反复数据集运算和频繁内存拜访等特点的利用场景中具备无可比拟的劣势。
问题二:GPU 应用形式
应用 GPU 有两种形式,一种是开发的应用程序通过通用的图形库接口调用 GPU 设施,另一种是 GPU 本身提供 API 编程接口,应用程序通过 GPU 提供的 API 编程接口间接调用 GPU 设施。
通用图形库:
通过通用的图形库的形式应用 GPU,都是通过 OpenGL 或 Direct3D 这一类现有的图形函数库,以编写渲染语言 (Shading Language) 的办法管制 GPU 外部的渲染器 (Shader) 来实现须要的计算。
目前业界公认的图形编程接口次要有 OpenGL 和 DirectX 这两种接口。OpenGL 是以后可用于开发可交互、可移植的 2D 与 3D 图形应用程序的首选环境,也是以后图形利用最宽泛的规范。
OpenGL 是 SGI 公司开发的计算机图形处理零碎,是图形硬件的软件接口,GL 为图形库(Graphics Library),OpenGL 应用程序不须要关注所在运行环境所处的操作系统与平台。
只有在任何一个遵循 OpenGL 规范的环境下都会产生一样的可视化成果。与 OpenGL 相似,DirectX (Directe Xtension)也是一种图形 API。它是由 Microsoft 创立的多媒体编程接口,并曾经成为微软视窗的规范。
为适应 GPU 利用的需要,DirectX 则依据 GPU 新产品性能的裁减与停顿及时地定义新的版本,它所提供的性能简直与 GPU 提供的性能同步。
GPU 本身编程接口:
GPU 本身提供的编程接口次要由提供 GPU 设施的两家公司提供,别离是括 NVIDIA 的 CUDA 框架和 AMD(ATI)公司于 2006 年提出了 CTM(Close To Metal)框架(备注,最后是 ATI 公司生产 GPU 设施,后被 AMD 收买)。
AMD 的 CTM 框架当初已不再应用,次要是 AMD(ATI)于 2007 年推出了 ATI Stream SDK 架构,2008 年 AMD(ATI)齐全转向了公开的 OpenCL 规范,因而 AMD(ATI)公司目前已没有独立的、公有的通用计算框架。
2007 年 NVIDIA 公司公布 CUDA (Compute Unified Device Architecture)专用通用计算框架。应用 CUDA 进行通用计算编程不再须要借助图形学 API,而是应用与 C 语言以非常相似的形式进行开发。在 CUDA 编程模型中,有一个被称为主机 (Host) 的 CPU 和若干个被称作设施 (Device) 或者协处理器 (Co-Processor) 的 GPU。
在该模型中,CPU 和 GPU 协同工作,各司其职。CPU 负责进行逻辑性较强的事务处理和串行计算,而 GPU 则专一于执行线程化的并行处理工作。CPU、GPU 各自领有互相独立的存储器地址空间主机端的内存和设施端的显存。个别采纳 CUDA 框架本人进行编程的都是一些大型的应用程序,比方石油勘测、流体力学模仿、分子动力学仿真、生物计算、音视频编解码、地理计算等畛域。
而咱们个别企业级的应用程序因为开发成本以及兼容性等起因,大多数都是采纳通用的图形库来进行开发调用 GPU 设施。
问题三:GPU 操作方法
GPU 对于通用计算和图形处理的外部组件次要有两局部,顶点处理器 (Vertex Processor) 和子素处理器(Fragment Processor)。这种处理器具备流处理机的模式,即不具备大容量的快存 / 存储器能够读写,只是间接在芯片上利用长期寄存器进行流数据的操作。
硬件显卡的心脏——GPU
当 GPU 用于图形处理时,此时 GPU 外部的顶点渲染、像素渲染以及几何渲染操作都能够通过流处理器实现。
从图中能够看出,此时 GPU 外部的所有流处理器相当于一个多核的处理器,数据能够很不便地在不同的流处理器之间的输出和输入之间挪动,同时 GPU 分派器和管制逻辑能够动静的指派流处理器进行相应的顶点,像素,几何等操作,因为流处理器都是通用的。