Microsoft DirectCompute是一个
应用程序接口(API),允许
微软的Windows Vista、
Windows 7或更新版平台上运行的程序利用
图形处理器(GPU)进行
通用计算,DirectCompute是
Microsoft DirectX的一部分。虽然DirectCompute最初在DirectX 11 API中得以实现,但支持DX10的GPU可以利用此API的一个子集进行通用计算,支持DX11的GPU则可以使用完整的DirectCompute功能。
介绍
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架构也可实现相同的功能 。
技术硬件支持
nVIDIA Geforce8系列,9系列,GT200系列,GT400系列,GT500系列 ,GT600系列,ION系列。AMD Radeon HD4000系列,HD5000系列,HD6000系列显卡均提供最Directcompute的硬件支持。
操作系统支持
Windows Vista(需更新KB971512补丁,以便打开Vista的DirectX 11支持)、Windows 7、Windows Server 2008提供对Directcompute的支持。Windows XP以下和非Windows系统不在支持之列。
实际应用
视频处理
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技术实现。
物理加速
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技术的显卡都将支持这一计划。
动态模拟
利用Directcompute技术,GPU可以对自然界的事物做动态模拟,达到以假乱真的效果。
如图《动态模拟》所示是nVIDIA制作的DEMO,透过Directcompute技术,在GPU上运算
快速傅里叶变换,展现了模拟的动态海洋。
随着技术的发展, 动态模拟越来越多的用到游戏中,为我们在游戏中带来栩栩如生的虚拟世界。
网页加速
Internet Explorer 9加入了对Directcompute技术的支持,可以调用GPU对网页中的大计算量元素做加速计算,从而减轻CPU的负担。 在
AMD显卡上,通过ATI Stream技术实现,在nVIDIA显卡上,则通过CUDA技术实现。
办公软件
Excel2010、Powerpoint2010均提供Directcompute技术支持。在AMD显卡上,通过ATI Stream技术实现,在nVIDIA显卡上,则通过CUDA技术实现。
参见条目