Directcompute是一种用于GPU通用计算的 应用程序接口,由 Microsoft(微软)开发和推广,集成在Microsoft DirectX内。其中DirectX 10内集成Directcompute 4.0;DirectX 10.1内集成Directcompute 4.1;DirectX 11内集成Directcompute 5.0 。与Directcompute起到相同作用的还有 OpenCL和 CUDA。其中Directcompute和OpenCL是开放标准,CUDA是基于nVIDIA CUDA架构的私有标准。
支持DX10的GPU可以利用Directcompute的一个子集进行通用计算,支持DX11的GPU则可以使用完整的DirectCompute功能。nVIDIA CUDA技术和 ATI Stream技术(现在称为 AMD APP技术)均提供对Directcompute的支持。
Directcompute概览
1.GPU通用计算API
GPU通用计算技术,简单的说就是让GPU(显卡核心)处理图形数据之外的其他数据。
在过去的几年里,GPU一直以每年或每半年更新一代的速度发展,其发展速度已远把CPU抛在后面。随着DirectX 10规范的出现,GPU开始采用统一渲染架构,其性能与功能也变得更为强大,它能做的事情已不单只是运行3D游戏,不少科学计算领域已开始利用GPU的优势进行计算。ATI最先提出通用计算的概念,与斯坦福大学合作,在 Folding@Home研究项目中利用ATI Radeon X1900作运算加速。通过GPU来模拟蛋白质合成,进而找寻有关蛋白质的疾病。自ATI R520 GPU问世以来,基于它的可编程架构,ATI投入大量资源研究通用计算,也就是说用GPU处理非图形数据,处理一般在主流服务器和桌面处理器上运行的软件,性能比CPU高出10-30倍。
由于CPU与GPU在架构完全不同,软件要在GPU上运行,就必须通过特定的环境或接口。通俗来说,就
是需要一种工具,把程序员的语言翻译成GPU听的懂的语言。这个工具,就叫做GPU通用计算API。目前主流的通用计算API包括OpenCL 、Directcompute。当然还有nVIDIA CUDA架构和ATI Stream架构也可实现相同的功能 。
2.Directcompute简介
随着业界对GPU通用计算技术的认可与重视,不同的厂商开始提供不同的GPU通用计算API解决方案。其中nVIDIA最先提出CUDA,但是CUDA是一种基于CUDA架构的私有标准,非CUDA架构的GPU(例如AMD GPU)无法使用。除了CUDA外,还有OpenCL,他是由苹果提出的,得到业界多家厂商支持的开放标准。
但是OpenCL的成员中并不包括微软,作为业界的领军者,微软自己推出了DirectCompute,并集成在DirectX内。当然DirectCompute也是一种开放的标准,由于微软在业界的地位,nVIDIA和AMD均提供对DirectCompute 的支持。
另外,nVIDIA CUDA只是面向GPU通用计算,而OpenCL和Directcompute则在面向GPU通用计算的同时,还支持CPU+GPU异构运算。因此nVIDIA在不断发展自身CUDA的同时,也要同时兼顾对OpenCL和Directcompute的支持。因为任何私有标准都是没有前途的。
Directcompute是Windows 7操作系统里最重要的一个组成部分,在Windows 7中,CPU与GPU组成了协同处理环境。它们的分工是,CPU运算非常复杂的序列代码,而GPU则运行大规模并行应用程序。 因此,在Windows 7,CPU与GPU功能平衡,可以提供更快、更可视化的Windows 7体验。也标志着主流的桌面级操作系统开始迈向异构通用计算。
3.Directcompute技术的硬件支持
nVIDIA Geforce8系列,9系列,GT200系列,GT400系列,GT500系列 ,ION系列。AMD Radeon HD4000系列,HD5000系列,HD6000系列显卡均提供最Directcompute的硬件支持。
4.Directcompute的操作系统支持
Windows Vista(需更新
KB971512补丁,以便打开Vista的DirectX 11支持)、Windows 7、Windows Server 2008提供对Directcompute的支持。Windows XP以下和非Windows系统不在支持之列。
Directcompute技术的实际应用
1.视频处理
GPU在视频转码方面有着得天独厚的优势。Windows 7增加了
视频即时拖放转换功能,可以将电脑中的视频直接转换到移动媒体播放器上,如果你的GPU支持Directcompute,那么这一转换过程就将由GPU完成。其转换速度将达到CPU5-6倍。
Windows 7中的Windows Media Player和Windows Media Center增加了对H.264和Quicktime.mov.content高清播放的原生支持。Windows 7还增加了对由GPU支持的高清播放的in-the-box支持,可以流畅观看,同时CPU占用率很低。这一切都是借助Directcompute实现的。
CyberLink旗下软件最新版均提供Directcompute支持。
在AMD显卡上,通过ATI Stream技术实现,在nVIDIA显卡上,则通过CUDA技术实现。
2.物理加速
nVIDIA公司非常成功的将PhysX物理引擎,通过CUDA技术与Geforce显卡相结合,诞生了nVIDIA PhysX物理加速技术,但是PhysX物理加速技术是基于私有的CUDA标准。为了与之竞争,AMD推出了基于OpenCL和Directcompute的“ 开放物理计划”与之抗衡。开放物理计划联合了Havok、Bullet和Pixelux DMM三种物理引擎,基于ATI Stream、OpenCL和Directcompute,将AMD GPU中强大的并行计算能力运用到游戏中去加速物理计算。同时开放物理计划也贯彻了异构运算理念,由CPU+GPU联合进行物理计算,GPU负责柔性材料模拟、流体模拟、爆炸模拟等大计算量的物理模拟计算。任何支持Directcompute技术的显卡都将支持这一计划。
3.动态模拟
利用Directcompute技术,GPU可以对自然界的事物做动态模拟,达到以假乱真的效果。
右图是nVIDIA制作的DEMO,透过Directcompute技术,在GPU上运算快速傅里叶变换,展现了模拟的动态海洋。
随着技术的发展, 动态模拟越来越多的用到游戏中,为我们在游戏中带来栩栩如生的虚拟世界。
4.网页加速
Internet Explorer 9加入了对Directcompute技术的支持,可以调用GPU对网页中的大计算量元素做加速计算,从而减轻CPU的负担。 在AMD显卡上,通过ATI Stream技术实现,在nVIDIA显卡上,则通过CUDA技术实现。
5.办公软件
Excel2010、Powerpoint2010均提供Directcompute技术支持。在AMD显卡上,通过ATI Stream技术实现,在nVIDIA显卡上,则通过CUDA技术实现。
-
扩展阅读:
-
- 1
DirectCompute开启Windows7 GPU运算大门:http://www.pconline.com.cn/pcedu/softnews/dongtai/0907/1714191.html
- 2
DirectCompute测试工具:http://news.mydrivers.com/1/149/149663.htm
- 3
携手AMD CyberLink将全面支持DX11 DirectCompute:http://news.mydrivers.com/1/146/146098.htm