MCPLive > 杂志文章 > 管窥DirectX 11与通用计算技术

管窥DirectX 11与通用计算技术

2009-09-15陈可《微型计算机》2009年8月下

孪生兄弟:DirectX Compute与DirectX 11

通过上文的阅读我们已经知道,Compute Shader是DirectX 11渲染架构中新增的一个组成部分,也是DirectX 11的一项重要改进,那么它与现在热火的DirectX Compute又是什么关系呢?

二者都叫“计算”,却拥有完全不同的含义。从宏观上上,DirectX Compute是一个应用程序接口,它与DirectX 9.0c、DirectX 10、DirectX 11是同级的关系,而Compute Shader从某种意义上来说时实现通用计算所必需的功能组件。如果用类比的方法来介绍,DirectX Compute相当于通用计算API——OpenCL,而DirectX 11则相当于图形API——OpenGL,大家可以简单地如此类比。


DirectX Compute在支持DirectX 10的显卡上都可以运行

从功能上来讲,DirectX Compute由微软来主导,通过基于DirectX 10、DirectX 11的GPU来实现其通用计算的目的。目前使用成熟的应用便是视频转码操作,这也是Windows 7中一个非常特色的功能:用户将一段视频拖到移动设备上,系统会自动调用DirectX Compute API来进行视频压缩和转码工作。以前想要完成这项工作,我们先要安装转码软件,然后设置各项功能参数,后还要花上很长时间才能得到结果;而现在,一切都由DirectX Compute API来接手,并调用GPU的计算资源,只需要花以前几分之一甚至几十分之一的时间就可以完成。除此之外,DirctX Compute的应用领域还有很多,例如视频插值运算(提高画面质量)、三维网页浏览以及PC游戏的物理运算加速等等。


使用GPU的效率要数十倍于CPU

DirectX Compute在通用计算领域的增强,进一步提升了GPU通用计算的动能,同时也将对该领域产生微妙的影响。作为DirectX 11的合作开发者,AMD公司将首先从其中受益——AMD尽管一直都拥有顶级图形技术,但它并未构建属于自己的通用计算平台,如果用户想利用AMD流处理平台,那么不得不从硬件底层上对AMD GPU进行编程,难度巨大!而在DirectX Compute导入之后,这种局势有望得到一定的缓解,不过我们仍需保持清醒:DirectX 11的Computer Shader只是硬件上的计算着色器,即为GPU增加了一个新的计算单元,而不是导入一系列可直接实现GPU通用计算的API,换言之它只是增强了新一代GPU的通用计算硬件性能,从这个意义上讲,AMD的流处理平台可以因DirectX Compute获益,但幅度是比较有限的。


使用DirectX Compute可以实现很多以往想实现,但是没有办法做到的渲染,
途中所示为NVIDIA的“置换散射材质”演示DEMO。

DirectX Compute令GPU通用性变得更加强大,这对于OpenCL和NVIDIA的CUDA平台都将产生正面影响。OpenCL是GPU通用计算的API标准,它提供了并行计算API和一个扩展的编程语言,
DirectX Compute增强了GPU通用性能,但由于重点不同,它与OpenCL完全不是竞争关系,反而进一步增强了OpenCL的实用性——DirectX 11提升GPU通用性能,基于OpenCL的通用计算程序将更富效率。

与此类似,NVIDIA的CUDA平台也将获得来自DirectX Compute的强大推动。CUDA包括应用
API、开发环境以及编程语言,它的完整性比开放的OpenCL还要高得多。在过去几年间,CUDA非常成功并获得学术界与高性能计算行业的广泛采用,实际上奠定NVIDIA在GPU通用计算领域的王者地位。

目前CUDA发展到2.x版本,3.0版将在09年第四季度出台,当OpenCL 1.0在08年12月9日正式出台之后,NVIDIA CUDA就迅速提供支持,亦即将OpenCL的相关特性纳为子集;对于DirectX
Compute NVIDIA同样态度积极,将在年底推出的CUDA 3.0将对DirectX 11的Computer Shader提供支持,及时吸纳GPU领域的新成果,此举也将进一步增强CUDA的优势。鉴于NVIDIA的GPU通用平台已经在开发环境、应用API、编程语言和实际市场占用率中具有全方位优势,AMD、Intel等竞争对手要想在短时间内赶超是不现实的。

分享到:

用户评论

用户名:

密码: