GPU工作原理与理解

来源:互联网 发布:淘宝如何上下架宝贝 编辑:程序博客网 时间:2024/06/10 17:38

本周看GPU看得有点儿乱,

    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) 像素着色器进行纹理采样以及其它象素级并行算法。

原创粉丝点击