热点推荐
ZOL首页 > 显卡 > 新闻 >

GPU内部通用计算代码运算过程

从Folding@home项目看GPU通用计算发展

CBSi中国·ZOL 作者:中关村在线 濮元恺 责任编辑:李鹏飞 【原创】 2010年05月28日 05:05 评论

    ● GPU内部通用计算代码运算过程

  在绘制图像时,GPU首先接收宿主系统以三角顶点形式发送的几何数据。这些顶点数据由一个可编程的顶点处理器进行处理,该处理器可以完成几何变换、亮度计算等任何三角形计算。接下来,这些三角形由一个固定功能的光栅器转换成显示在屏幕上的单独“碎片(fragment)”。在屏幕显示之前,每个碎片都通过一个可编程的碎片处理器计算最终颜色值。

  计算碎片颜色的运算一般包括集合向量数学操作以及从“纹理”中提取存储数据,“纹理”是一种存储表面材料颜色的位图。最终绘制的场景可以显示在输出设备上,或是从GPU的存储器重新复制到宿主处理器中。


从Folding@home项目看GPU通用计算发展
两向量相加的简单Brook代码示例

  图为执行两向量相加的简单Brook代码示例。Brook支持所有带附加流数据的C句法,流数据存储于GPU的存储器中,而核函数也在GPU上执行。可编程顶点处理器和碎片处理器提供了许多相同的功能和指令集。但是,大部分GPU编程人员只将碎片处理器用于通用计算任务,因为它通常提供更优的性能,而且可以直接输出到存储器。

  利用碎片处理器进行计算的一个简单例子是对两个向量进行相加。首先,我们发布一个大三角形,其所包含的碎片数量和向量大小(容纳的元素)相同。产生的碎片通过碎片处理器进行处理,处理器以单指令多数据(SIMD)的并行方式执行代码。进行向量相加的代码从存储器中提取两个待加元素,并根据碎片的位置进行向量相加,同时为结果分配输出颜色。输出存储器保存了向量和,这个值在下一步计算中可以被任意使用。

  可编程碎片处理器的ISA类似于DSP或Pentium SSE的指令集,由四路SIMD指令和寄存器组成。这些指令包括标准数学运算、存储器提取指令和几个专用图形指令。

上一页 1 ...4 5 6 7 8 下一页
频道热词:华硕主板  Intel  AMD  
视觉焦点
索泰 GTX480 极速版
显卡新闻热点
排行 文章标题
TOP10周热门显卡排行榜
  • 热门
  • 新品