革命性DX11架構(gòu)!GTX480/470權(quán)威評(píng)測(cè)
第三章 DirectCompute:不止是通用計(jì)算
此前在測(cè)試階段,微軟將DirectX 11中包含的GPU通用計(jì)算稱為Compute Shader或DirectX Compute,而在正式版本中又改名為DirectCompute,一字之差何苦呢?顯然,微軟為了將GPU通用計(jì)算和主要是3D應(yīng)用的DirectX區(qū)別開,進(jìn)一步凸出DirectCompute的重要性并與OpenCL分庭抗力,由此足以見(jiàn)得微軟對(duì)GPU通用計(jì)算的重視程度。
DirectCompute主要針對(duì)GPU計(jì)算,但由此可以衍生出一些在圖形渲染方面的特殊應(yīng)用,因此筆者將其單列一章,對(duì)一些重要技術(shù)進(jìn)行詳細(xì)介紹。
第三章/第一節(jié) DirectCompute與Stream/CUDA/OpenCL的關(guān)系
提起GPU通用計(jì)算,自然會(huì)讓人想到NVIDIA的CUDA、ATI的Stream以及開放式的OpenCL標(biāo)準(zhǔn),再加上微軟推出的DirectCompute,四種技術(shù)標(biāo)準(zhǔn)令人眼花繚亂,他們之間的競(jìng)爭(zhēng)與從屬關(guān)系也比較模糊。
首先我們來(lái)明確一下概念:
1. OpenCL類似于OpenGL,是由整個(gè)業(yè)界共同制定的開放式標(biāo)準(zhǔn),能夠?qū)τ布讓又苯舆M(jìn)行操作,相對(duì)來(lái)說(shuō)比較靈活,也很強(qiáng)大,但開發(fā)難度較高;
2. DirectCompute類似于DirectX,是由微軟主導(dǎo)的通用計(jì)算API,與Windows集成并偏向于消費(fèi)領(lǐng)域,在易用性和兼容性方面做得更出色一些;
3. CUDA和Stream更像是圖形架構(gòu)或并行計(jì)算架構(gòu),NVIDIA和ATI對(duì)自己的GPU架構(gòu)自然最了解,因此會(huì)提供相應(yīng)的驅(qū)動(dòng)、開發(fā)包甚至是現(xiàn)成的應(yīng)用程序,通過(guò)半開放的形式授權(quán)給程序員使用。
其中ATI最先提出GPGPU的概念,Folding@Home和AVIVO是當(dāng)年的代表作,但在被AMD收購(gòu)后GPGPU理念擱淺;此后NVIDIA后來(lái)者居上,首次將CUDA平臺(tái)推向市場(chǎng),在這方面投入了很大的精力,四處尋求合作伙伴的支持,并希望CUDA能夠成為通用計(jì)算的標(biāo)準(zhǔn)開發(fā)平臺(tái)。
NVIDIA CUDA架構(gòu)示意圖
在NVIDIA大力推廣CUDA之初,由于OpenCL和DirectCompute標(biāo)準(zhǔn)尚未定型,NVIDIA不得不自己開發(fā)一套SDK來(lái)為程序員服務(wù),這套基于C語(yǔ)言的開發(fā)平臺(tái)為半開放式標(biāo)準(zhǔn)(類似與Java的授權(quán)形式),只能用于NVIDIA自家GPU。AMD始終認(rèn)為CUDA是封閉式標(biāo)準(zhǔn),不會(huì)有多少前途,AMD自家的Stream平臺(tái)雖然是完全開放的,但由于資源有限,對(duì)程序員幫助不大,因此未能得到大量使用。

OpenCL一經(jīng)提出就受到業(yè)界的大力支持
于是在2008由蘋果牽頭,以蘋果OpenCL草案為基礎(chǔ),聯(lián)合業(yè)界各大企業(yè)共同完成了標(biāo)準(zhǔn)制定工作。隨后Khronos Group成立相關(guān)工作組,工作組的26個(gè)成員來(lái)自各行各業(yè),且都是各自領(lǐng)域的領(lǐng)導(dǎo)者,具體包括3DLABS、Activision Blizzard、AMD、蘋果、ARM、Barco、博通、Codeplay、EA、愛(ài)立信、飛思卡爾、HI、IBM、Intel、Imagination、Kestrel Institute、摩托羅拉、Movidia、諾基亞、NVIDIA、QNX、RapidMind、三星、Seaweed、TAKUMI、德州儀器、瑞典于默奧大學(xué)。
OpenCL標(biāo)準(zhǔn)一經(jīng)成立,IT三巨頭Intel、NVIDIA和AMD都爭(zhēng)先恐后的加入支持。AMD由于自家Stream推廣不利、支持OpenCL并不意外;Intel潛心研發(fā)的Larrbee GPU一大賣點(diǎn)就是強(qiáng)大的計(jì)算能力,支持OpenCL有百利而無(wú)一害;NVIDIA雖然在大力推廣CUDA開發(fā)平臺(tái),但無(wú)奈勢(shì)單力薄,小有所成但前途未卜,OpenCL雖然與CUDA C語(yǔ)言有交集但并不沖突,是相輔相成的互補(bǔ)關(guān)系,NVIDIA自然也大力支持。
OpenCL組織中唯獨(dú)微軟不在其列,微軟有自己的如意算盤。經(jīng)過(guò)多年的發(fā)展,DirectX憑借快速更新?lián)Q代策略、相對(duì)輕松的開發(fā)與移植方式,在與OpenGL的交戰(zhàn)中已全面占據(jù)上風(fēng),OpenGL的傳統(tǒng)強(qiáng)項(xiàng)——專業(yè)繪圖領(lǐng)域也在被DirectX不斷的蠶食。因此微軟打算用相同的策略來(lái)對(duì)抗尚未站住根基的OpenCL,于是DirectCompute誕生了。
就如同GPU能同時(shí)支持DirectX與OpenGL那樣,NVIDIA和AMD對(duì)DirectCompute和OpenCL都提供了無(wú)差別支持,真正的GPU通用計(jì)算之戰(zhàn),不在CUDA與Stream之間,因?yàn)镾tream根本不是CUDA的對(duì)手,而是OpenCL與DirectCompute之爭(zhēng),DX11時(shí)代才剛剛開始……
關(guān)注我們


