必威体育Betway必威体育官网
当前位置:首页 > IT技术

GPU的介绍 以及原理的分析

时间:2019-10-29 15:15:44来源:IT技术作者:seo实验室小编阅读:76次「手机版」
 

gpu

1 GPU是什么

如图1所示,这台PC机与普通PC机不同的是这里插了7张显卡,左下角是显卡,在中间的就是GPU芯片。显卡的处理器称为图形处理器(GPU),它是显卡的“心脏”,与cpu类似,只不过GPU是专为执行复杂的数学和几何计算而设计的。

GPU计算能力非常强悍,举个例子:现在主流的i7处理器的浮点计算能力是主流的英伟达GPU处理器浮点计算能力的1/12。

图1 显卡与GPU

2 为什么GPU计算能力如此强悍?

图2对CPU与GPU中的逻辑架构进行了对比。其中Control是控制器、ALU算术逻辑单元、cache是cpu内部缓存、DRAM就是内存。可以看到GPU设计者将更多的晶体管用作执行单元,而不是像CPU那样用作复杂的控制单元和缓存。从实际来看,CPU芯片空间的5%是ALU,而GPU空间的40%是ALU。这也是导致GPU计算能力超强的原因。

图2 cpu和gpu硬件逻辑结构对比

那有人讲了,为什么cpu不像gpu那样设计呢,这样计算能力也强悍了!

为什么?CPU要做得很通用。CPU需要同时很好的支持并行和串行操作,需要很强的通用性来处理各种不同的数据类型,同时又要支持复杂通用的逻辑判断,这样会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂,计算单元的比重被降低了。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。因此GPU的芯片比CPU芯片简单很多。

举个例子,假设有一堆相同的加减乘除计算任务需要处理,那把这个任务交给一堆(几十个)小学生就可以了,这里小学生类似于GPU的计算单元,而对一些复杂的逻辑推理等问题,比如公式推导、科技文章写作等高度逻辑化的任务,交给小学生显然不合适,这时大学教授更适合,这里的大学教授就是CPU的计算单元了,大学教授当然能处理加减乘除的问题,单个教授计算加减乘除比单个小学生计算速度更快,但是成本显然高很多。

3 GPU编程

GPU计算能力这么强,被广泛使用!比如挖矿(比特币)、图形图像处理、数值模拟、机器学习算法训练等等,那我们怎么发挥GPU超强的计算能力呢?---编程!

怎么进行GPU编程呢?现在GPU形形色色,比如NVIDIAAMD、Intel都推出了自己的GPU,其中最为流行的就是Nvidia的GPU,其还推出了CUDA并行编程库。然而每个GPU生产公司都推出自己的编程库显然让学习成本上升很多,因此苹果公司就推出了标准opencl,说各个生产商都支持我的标准,只要有一套OpenCL的编程库就能对各类型的GPU芯片适用。当然了,OpenCL做到通用不是没有代价的,会带来一定程度的性能损失,在Nvidia的GPU上,CUDA性能明显比OpenCL高出一大截。目前CUDA和OpenCL是最主流的两个GPU编程库。

从编程语言角度看,CUDA和OpenCL都是原生支持C/C++的,其它语言想要访问还有些麻烦,比如java,需要通过JNI来访问CUDA或者OpenCL。基于JNI,现今有各种Java版本的GPU编程库,比如JCUDA等。另一种思路就是语言还是由java来编写,通过一种工具将java转换成C。

图3 GPU编程库

LWJGL (http://www.lwjgl.org/)

JOCL (http://www.jocl.org/)

JCUDA (http://www.jcuda.de/)

Aparapi (http://code.Google.com/p/aparapi/)

JavaCL (http://code.google.com/p/javacl/)

4 CUDA程序流程

图4 CUDA程序流程

5 实践---以图像处理为例

假设我们有如下图像处理任务,给每个像素值加1。并行方式很简单,为每个像素开一个GPU线程,由其进行加1操作。

图5 例子

图6 核函数

图7 主流程函数

6 GPU加速效果

下图是我实现的基于CUDA的P&D DEM图像预处理算法使用GPU的加速效果,GeForce GT 330是块普通台式机上的显卡,现在价格也就500人民币左右,用它达到了20倍的加速比,Tesla M2075是比较专业的显卡,价格一万左右,用它达到了将近百倍的加速比,这个程序i7 CPU单进程单线程要跑2个小时,而用Tesla M2075 GPU只花了一分多钟就完成计算。

图8 P&D DEM图像预处理算法加速效果

GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。

  由于GPU具有高并行结构(highly parallel structure),所以GPU在处理图形数据和复杂算法方面拥有比CPU更高的效率。图1 GPU VS CPU展示了GPU和CPU在结构上的差异,CPU大部分面积为控制器和寄存器,与之相比,GPU拥有更多的ALU(Arithmetic Logic Unit,逻辑运算单元)用于

数据处理,而非数据高速缓存和流控制,这样的结构适合对密集型数据进行并行处理。CPU执行计算任务时,一个时刻只处理一个数据,不存在真正意义上的并行,而GPU具有多个处理器核,在一个时刻可以并行处理多个数据。

        

  GPU采用流式并行计算模式,可对每个数据进行独立的并行计算,所谓“对数据进行独立计算”,即,流内任意元素的计算不依赖于其它同类型数据,例如,计算一个顶点的世界位置坐标,不依赖于其他顶点的位置。而所谓“并行计算”是指“多个数据可以同时被使用,多个数据并行运算的时间和1个数据单独执行的时间是一样的”。

                             图2  GPU上的矩阵加法

  

         图3 GPU渲染管线

上图3是一张典型的可编程GPU的流水线示意图,其中可编程的顶点处理器(Vertex shader)负责处理顶点数据流(包括位置、颜色,光照等)。因为顶点处理操作都是在空间的几何点上进行,因此Vertex Shader对于通用计算而言非常适合于几何操作类的计算。可编程片段着色器(Fragment Processor)在几何处理和转换完成后,负责为每个象素“画”上正确的色彩,它的ISA(系统体系结构)类似于DSP或SSE指令集,由Folat4的SIMD执行单元和寄存器组成,处理的时候接受先从存储器中取出2个待加元素,根据片段的位置进行向量相加,向量和以颜色的形式被保存到存储器中,可以当作结果输出或在下一步运算中直接被使用。处理的一般为4个单元的向量,因为RGB三种色彩加上alpha通道数据正好是4。片段着色器包含的TMU(Texture MAPPing Unit)单元能以贴图的形式存取显存,因此可以被看作一个只读存取界面。

补充:下面为我看到的文章中写的。。先记录下

像素着色器负责纹理采样和其它高级逐像素处理,在NVIDIA SDK 9.5 的示例 VideoFilter 中, 运用像素着色器的并行计算能力对视频进行多种高级图像处理技术。 诸如: 模糊、锐化、 视频混合等.

相关实现步骤如下:

(1) 创建视频纹理管理对象;

(2) 载入视频文件, DirectShow 负责管理调度视频数据;

(3) 关联 DirectShow 视频数据与 Direct3D 纹理对象;

(4) GPU 初始化, 关联 CPU 顶点数据与 GPU 外部变量, 特别是 DirectShow 处理完的帧数据与 GPU 中的纹理数据关联;

(5)顶点着色器进行纹理坐标转换和其它基于顶点的并行算法;

(6) 像素着色器进行纹理采样以及其它象素级并行算法。

文章最后发布于: 2018-06-04 16:43:08

相关阅读

C# list介绍

转载连接: https://www.cnblogs.com/lgx5/p/6271098.html 一、LIST概述 所属命名空间:System.Collections.Generic     publ

复制粘贴文件后鼠标右击取消粘贴功能的简单方法介绍

复制粘贴文件或图片之类的东西后回到桌面右击还是会有粘贴,有时会不小心点到很麻烦,那么该如何解决呢?今天给大家推荐一种方法,其实也

介绍PS工具“仿制图章工具”和“图案图章工具”

介绍PS工具“仿制图章工具”和“图案图章工具” (作者:何少军 撰写时间:2019年1月16日) 一、了解“仿

天猫店铺和淘宝店铺有什么区别?详细介绍

天猫平台跟淘宝平台都是购物APP,有很多人都不是很明白有什么区别,那么今天小编就来介绍一下他们之间有没有什么区别。天猫店铺的装

2018天猫密令红包密语玩法详细介绍!

天猫密令的玩法到现在有几年了,那么在2018年当中,这个红包谜语要怎么去玩呢?这是一个问题,因为每年的玩法稍微有一点不一样的,下面是

分享到:

栏目导航

推荐阅读

热门阅读