热点推荐
ZOL首页 > 显卡 > 评测 > 1000元以上 >

从计算到图形的回归

GPU大百科全书第三章:像素处理那点事儿

CBSi中国·ZOL 作者:中关村在线 顾杰 责任编辑:林光楠 【原创】 2011年07月23日 05:00 评论
在本页阅读全文(共12页)

  ● 从计算到图形的回归

  Shader Modle4.0是Shader Modle历史上的一大飞跃,它不仅让像素处理变得更加有效率,而且还让过去单纯处理像素的单元腾出手来处理图形之外的计算工作,使得整个GPU的用途和应用范围变得更加宽广,从任何角度来说这个版本都应该是史上最完美的了。如此完美的版本,难道程序员们终于可以摆脱自己悲催的命运了么?


GPU百科全书第三章 像素处理的那点事儿
苦中作乐的程序员

  雷锋同志的表现是极其稳定的,它为程序员们带来的DirectX 10以及Shader Modle4.0一如既往的从根本上解决了前一个版本所暴露出的一堆严重的问题,然后将另一堆同样严重的问题暴露给了程序员们,对程序员们来说,命运依旧是照旧轮回的,这次暴露给他们的东西包括了并行度和几何关联性问题。

GPU百科全书第三章 像素处理的那点事儿
并行kernel相对于串行的优势

  在我们对像素进行处理时,每一个像素都会对应一个线程。随着指令的日趋灵活和复杂,以及每代DirectX所带来的效率提升等效化之后的更多视觉效果,分支、跳转以及常规算术函数等等的日益增多,都让线程队列的执行效率问题变得越发重要起来,这种情况在Shader Modle4.0取消了对指令格式的机械限制之后变得更加明显了。大量的线程聚集成CTA,进而成为一个kernel,若干kernel形成队列,这些kernel由于待处理像素的不同以及内部线程的指令灵活度不同而变得不再同样“丰满”,如果kernel队列以顺序的方式一次一个的送入到GPU中,势必无法做到让整个GPU的所有ALU都满负荷工作。换句话说,Shader Modle4.0对指令的解放,就如同Vertex Shader和Pixel Shader出现时一样,在为我们解决问题的同时非常传统的再次为我们带来了一个新的麻烦,因为很不幸的,Shader Modle4.0对kernel的吞吐,刚好就是依顺序方式一个一个来的……如何让线程能够尽可能的充盈所有的ALU,减少ALU的等待周期并提高他们的重复负载率,是近两年GPU构架改进最重要的目的和任务。

GPU百科全书第三章 像素处理的那点事儿
Shader Modle4.0代码顽固的几何关联性

  除了kernel之外,Shader Modle4.0还存在计算性能难以释放的问题。对,我没说错,你也没有看错,Shader Modle4.0虽然是第一个允许程序员直接使用ALU的运算能力做像素处理之外的事情的Shader Modle版本,但他也确实存在计算性能难以使用的问题。

GPU百科全书第三章 像素处理的那点事儿
想要使用Shader Modle4.0的通用计算能力,你可能还要去学学fortran

  假如你是一个物理学家,想要用Shader Modle4.0带来的运算能力来为你解决某个刚体碰撞问题,硬件会告诉你没问题,你只需先学习图形相关的GLSL或者HLSL,了解图形处理过程以及整个图形流水线的特点,甚至还可能要跑去学点fortran什么的,然后将你所要运算的目标转化成图形线程,将之按照严格的几何关联性一一对应到图形过程,比如Vertex、Texture或者Z-buffer中去,最后再把弄好的你也不知道到底应该算是图形程序代码还是科学运算代码的东西打好包发给硬件。这样算是方便释放运算性能么?起码我不觉得是。

GPU百科全书第三章 像素处理的那点事儿

  有矛盾就要被解决,有困难就要找雷锋。于是在程序员们(这次还包括了大量非图形界的程序员)凄楚的目光注视下,微软再次拿出了解决上一个版本问题的全新版本——DirectX 11以及Shader Modle5.0。在Shader Modle5.0中,微软引入了两个重要的概念:并行kernel及Compute Shader,前者通过引入kernel并行执行的形式来解决ALU利用率的问题,而后者则通过打破几何关联性的方式将ALU的运算能力真正释放了出来。

GPU百科全书第三章 像素处理的那点事儿
Compute Shader实现的1000光源场景  

  并行kernel的作用和意义非常直白,就如同字面意思一样,并行kernel通过把不同的kernel以并行队列的方式发送给GPU,达到提升其处理效率的目的。相对于并行kernel来说,Shader Modle5.0引入的Compute Shader要重要得多。取消了几何关联的Compute Shader是史上第一个完全开放的数学指令型shader,Compute Shader可以透过并行管理方便的实现数据共享,可以透过树结构和延迟操作快速执行任意过程,虽然丧失了几何关联所带来的各种自动功能让Compute Shader看上去与大多数图形过程绝缘了,但事实却恰恰相反。Compute Shader的出现,不仅没有进一步的将通用计算和图形计算割裂开,反倒直接打破了传统的界限和束缚,将图形和通用计算彻底联系在了一起。有了Compute Shader,显卡的通用计算能力不仅可以以最直接的数学形态被释放出来以帮助需要计算量的领域,而且还能很方便的直接被用于特效的处理,使其成为图形计算能力,ALU在经历了Shader Modle4.0短暂的运算能力分离之后,终于在Shader Modle5.0完成了回归和升华。

上一页 1 ...5 6 7 8 9 ...12 下一页
频道热词:华硕主板  Intel  AMD  
视觉焦点
NVIDIA GeForce GTX 570
    显卡评测热点
    排行 文章标题