年度DX11大作!異形大戰鐵血戰士測試
● DirectCompute:不止是通用計算
DX11另一項關鍵技術要數DirectCompute了,此前在測試階段,微軟將DirectX 11中包含的GPU通用計算稱為Compute Shader或DirectX Compute,而在近期的正式版本中又改名為Direct Compute,一字(X)之差何必呢?顯然,微軟為了將GPU通用計算和主要是3D應用的DirectX區別開,進一步凸出Direct Compute的重要性并與OpenCL分庭抗力,由此足以見得微軟對GPU通用計算的重視程度。
DirectCompute主要針對GPU計算,但由此可以衍生出一些在圖形渲染方面的特殊應用,而這項技術在異形大戰鐵血戰士中也得到了應用,下面就對它做一下詳細介紹。
● DirectCompute與Stream/CUDA/OpenCL的關系
提起GPU通用計算,自然會讓人想到NVIDIA的CUDA、ATI的Stream以及開放式的OpenCL標準,再加上微軟推出的DirectCompute,四種技術標準令人眼花繚亂,他們之間的競爭與從屬關系也比較模糊。
首先我們來明確一下概念:
-
OpenCL類似于OpenGL,是由整個業界共同制定的開放式標準,能夠對硬件底層直接進行操作,相對來說比較靈活,也很強大,但開發難度較高;
-
DirectCompute類似于DirectX,是由微軟主導的通用計算API,與Windows集成并偏向于消費領域,在易用性和兼容性方面做得更出色一些;
-
CUDA和Stream更像是圖形架構或并行計算架構,NVIDIA和ATI對自己的GPU架構自然最了解,因此會提供相應的驅動、開發包甚至是現成的應用程序,通過半開放的形式授權給程序員使用。
其中ATI最先提出GPGPU的概念,Folding@Home和AVIVO是當年的代表作,但在被AMD收購后GPGPU理念擱淺;此后NVIDIA后來者居上,首次將CUDA平臺推向市場,在這方面投入了很大的精力,四處尋求合作伙伴的支持,并希望CUDA能夠成為通用計算的標準開發平臺。
在NVIDIA大力推廣CUDA之初,由于OpenCL和DirectCompute標準尚未定型,NVIDIA不得不自己開發一套SDK來為程序員服務,這套基于C語言的開發平臺為半開放式標準,只能用于NVIDIA自家GPU,因此并未得到業界的認可,AMD認為CUDA是封閉式標準,不會有多少前途,AMD自家的Stream雖然是完全開放的,但由于資源有限,對程序員幫助不大,因此未能得到大量使用。
于是在去年由蘋果牽頭,以蘋果OpenCL草案為基礎,聯合業界各大企業共同完成了標準制定工作。隨后Khronos Group成立相關工作組,工作組的26個成員來自各行各業,且都是各自領域的領導者,具體包括3DLABS、Activision Blizzard、AMD、蘋果、ARM、Barco、博通、Codeplay、EA、愛立信、飛思卡爾、HI、IBM、Intel、Imagination、Kestrel Institute、摩托羅拉、Movidia、諾基亞、NVIDIA、QNX、RapidMind、三星、Seaweed、TAKUMI、德州儀器、瑞典于默奧大學。
OpenCL標準一經成立,IT三巨頭Intel、NVIDIA和AMD都爭先恐后的加入支持。AMD由于自家Stream推廣不利、支持OpenCL并不意外;Intel即將發布的Larrbee GPU一大賣點就是強大的計算能力,支持OpenCL有百利而無一害;NVIDIA雖然在大力推廣CUDA開發平臺,但無奈勢單力薄,小有所成但前途未卜,OpenCL雖然與CUDA C語言有交集但并不沖突,是相輔相成的互補關系,NVIDIA自然也大力支持。
OpenCL組織中唯獨微軟不在其列,微軟有自己的如意算盤。經過多年的發展,DirectX憑借快速更新換代策略、相對輕松的開發與移植方式,在與OpenGL的交戰中已全面占據上風,OpenGL的傳統強項——專業繪圖領域也在被DirectX不斷的蠶食。因此微軟打算用相同的策略來對抗尚未站住根基的OpenCL,于是DirectCompute誕生了。
就如同GPU能同時支持DirectX與OpenGL那樣,NVIDIA和AMD對DirectCompute和OpenCL都提供了無差別支持,真正的GPU通用計算之戰,不在CUDA與Stream之間,而是OpenCL與DirectCompute之爭,DX11時代才剛剛開始……
關注我們



