DirectCompute
DirectCompute
集成在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的支持。
GPU通用計算API
在過去的幾年裡,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架構也可實現相同的功能。
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體驗。也標誌著主流的桌面級操作系統開始邁向異構通用計算。
Directcompute技術的硬體支持
nVIDIA Geforce8系列,9系列,GT200系列,GT400系列,GT500系列,ION系列。AMD Radeon HD4000系列,HD5000系列,HD6000系列顯卡均提供最Directcompute的硬體支持。
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技術實現。
物理加速
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技術實現。