CUDA遭遇勁敵? GPU計算OpenCL標(biāo)準(zhǔn)分析
在消費級市場,基于CUDA技術(shù)的PhysX物理加速和Badaboom視頻編碼所帶來的超強性能令人驚訝不已,而在專業(yè)級的科學(xué)、氣象、金融甚至是軍事領(lǐng)域,海量并行計算對性能的渴求永無止境,CUDA所帶來的超強運算能力正好符合科研工作者的需求,這也就是CUDA在近兩年來發(fā)展如此迅猛的根本原因!
面對前景如此廣闊的市場,IT巨頭們個個摩拳擦掌、欲大展身手,Intel、AMD、NVIDIA、IBM都紛紛致力于研發(fā)自己的通用并行計算平臺,乘市場未成熟之際搶占份額,一時間場面比較混亂,沒有統(tǒng)一的標(biāo)準(zhǔn)。
天下大勢,分久必合。這次關(guān)于開放式通用計算平臺的統(tǒng)一,發(fā)起于以“封閉”著稱的蘋果公司。這個新的標(biāo)準(zhǔn)被稱為OpenCL,英文全稱是Open Computing Language。他們將這個標(biāo)準(zhǔn)提交到了The Khronos Group,這是一個業(yè)界的標(biāo)準(zhǔn)化組織,目前管理著大名鼎鼎的OpenGL(圖形)和OpenAL(音頻)
OpenCL為基石 GPU通用計算行業(yè)標(biāo)準(zhǔn)誕生
負(fù)責(zé)推廣OpenGL等開放標(biāo)準(zhǔn)的行業(yè)組織Khronos Group日前正式宣布,將組建一個新的“計算工作組”,負(fù)責(zé)起草針對GPU、CPU并行計算進行編程的全免費開放行業(yè)標(biāo)準(zhǔn)。蘋果提出的OpenCL將成為該標(biāo)準(zhǔn)的奠基文檔。
OpenCL一經(jīng)提出就受到業(yè)界的大力支持
該工作組的首批成員包括:3Dlabs、AMD、蘋果、ARM、Codeplay、愛立信、飛思卡爾、Graphic Remedy、IBM、Imagination Technologies、Intel、諾基亞、NVIDIA、摩托羅拉、QNX、高通、三星、Seaweed、德州儀器和瑞典Ume 大學(xué)。工作組的目標(biāo)非常明確,將運算核心越來越多,性能越來越強的GPU從僅限于圖形運算領(lǐng)域的桎梏中解放出來,充分調(diào)動其運算能力。未來,該標(biāo)準(zhǔn)能夠提供給不同廠商的硬件提供一個通用的應(yīng)用程序接口,使計算機中的GPU和CPU共同發(fā)揮運算能力完成各類計算任務(wù),包括同為該組織標(biāo)準(zhǔn)的OpenGL、OpenGL ES API加速,以及諸如物理效果運算,圖像處理和圖像識別等等。
在WWDC蘋果開發(fā)者大會上,蘋果宣布預(yù)計明年發(fā)布的Mac OS X 10.6 Snow Leopard操作系統(tǒng)將引入名為OpenCL的新特性,通過基于C語言的編程接口實現(xiàn)GPU通用計算支持。Khronos工作組表示,他們歡迎成員企業(yè)和全球其他任何企業(yè)為開放通用運算標(biāo)準(zhǔn)提供內(nèi)容。但毫無疑問,蘋果提出的OpenCL已經(jīng)成了該標(biāo)準(zhǔn)的奠基石。甚至現(xiàn)在看來,蘋果當(dāng)初的命名想必也已經(jīng)考慮了成為行業(yè)標(biāo)準(zhǔn)的前景。未來該標(biāo)準(zhǔn)直接定名為OpenCL,從目前來看幾乎是一件順理成章的事情。
當(dāng)前,AMD和NVIDIA甚至Intel都有各自獨立的GPU通用計算計劃。而對消費者來說,一個開放的行業(yè)標(biāo)準(zhǔn)無疑要比各自為戰(zhàn)的企業(yè)標(biāo)準(zhǔn)親切的多。由于AMD、NVIDIA、Intel同為工作組成員,這一標(biāo)準(zhǔn)的提出為我們描繪了一個美好的未來:無需區(qū)分哪家廠商的產(chǎn)品,不分GPU、CPU,系統(tǒng)可以根據(jù)當(dāng)時的應(yīng)用需要,調(diào)動各個處理器的運算能力,以協(xié)同合作的方式最快速度完成工作。另外,Khronos Group還表示,該標(biāo)準(zhǔn)不僅面向桌面PC,還將針對嵌入式系統(tǒng)。從工作組名錄中出現(xiàn)的諾基亞、愛立信、摩托羅拉、三星、高通等名字也能看出端倪,移動設(shè)備的通用計算肯定也在工作組的計劃當(dāng)中。
OpenCL將統(tǒng)一管理一臺電腦上的所有計算資源,比如你的多核CPU,以及多個GPU。OpenCL將這些資源統(tǒng)一看待,算作計算單元,并配置各種級別的內(nèi)存:private、local和global。每個計算單元可以容納多個工作單元,類似CUDA里的thread概念。#p#page_title#e#
簡單說明下OpenCL和CUDA的不同:
- OpenCL提供統(tǒng)一的標(biāo)準(zhǔn),讓不同廠家的設(shè)備來支持,使得我們可以統(tǒng)一看待計算資源。這個計算資源不但包括GPU,也包括CPU。
- OpenCL更關(guān)注于多個計算資源的管理,不但在計算單元內(nèi)部可以實現(xiàn)并行,而且對于一臺宿主機上的所有計算設(shè)備的并行化進行管理。
雖然CUDA和OpenCL是兩種標(biāo)準(zhǔn)兩種概念,但其實兩者并不是對立的存在,不但不會產(chǎn)生利益沖突,反倒是一種互補互利的關(guān)系。因為NVIDIA不但是OpenCL標(biāo)準(zhǔn)的制定者之一,而且是蘋果的親密合作伙伴。比如蘋果新一代MacBook將會采用NVIDIA的GeForce 9400M GPU,這款整合顯卡擁有16個流處理器,既能運行基于CUDA的應(yīng)用程序以及對其進行編程,將來也能完美支持基于OpenCL API的并行計算程序。
AMD在內(nèi)部文檔中暗指NVIDIA的CUDA為“封閉技術(shù)”
此前AMD攻擊NVIDIA,稱CUDA為封閉的標(biāo)準(zhǔn),而AMD則大力支持完全開放的OpenCL。但目前來看NVIDIA兩手抓兩手都要硬的策略還是更加靠普,在OpenCL成型之前的真空期,CUDA已經(jīng)大展宏圖取得了驕人的戰(zhàn)績,待到OpenCL完善后NVIDIA也會無條件提供支持,將兼容性和效能發(fā)揮到最大。而對于AMD來說,GPU通用計算則要完全依賴OpenCL,因此目前AMD并行計算尚未正式進入實際應(yīng)用階段,只有等待OpenCL API成熟之后,才能在其基礎(chǔ)上進行二次開發(fā),無論運算效率還是軟件支持度都將會大打折扣!
針對CUDA與OpenCL之間錯綜復(fù)雜的關(guān)系,筆者咨詢了NVIDIA相關(guān)技術(shù)人員,分享給喜歡研究技術(shù)與關(guān)注行業(yè)動態(tài)的朋友們。
- NVIDIA已經(jīng)有了自家的CUDA平臺,為什么還要支持OpenCL標(biāo)準(zhǔn)?
答:當(dāng)然要支持。Apple是一家實力強勁的合作伙伴,他們宣布以GPU作為其操作系統(tǒng)以及應(yīng)用程序戰(zhàn)略的核心,這是對并行計算運動提供強有力的支持。我們已經(jīng)在CUDA身上投入了五年多的精力,而支持CUDA的NVIDIA GPU數(shù)量也超過了8000萬顆,NVIDIA不但是Windows平臺的最佳選擇,對與Mac OS X以及Linux等各種操作環(huán)境也極為重視。OpenCL標(biāo)準(zhǔn)的出臺有助于拓展GPU的功能及市場,NVIDIA沒有理由不支持。
- NVIDIA在OpenCL標(biāo)準(zhǔn)的制定過程中扮演著什么樣的角色?
答:作為GPU技術(shù)的行業(yè)領(lǐng)袖,我們有責(zé)任推動和發(fā)起并行計算運動。我們已經(jīng)在CUDA身上投入了五年多的精力,CUDA團隊將繼續(xù)支持我們所有的合作伙伴,幫助他們將并行GPU計算推向市場。NVIDIA在CUDA研發(fā)過程中的經(jīng)驗以及NVIDIA GPU龐大的市場占有率奠定了舉足輕重、不可或缺的角色!
- OpenCL是否基于CUDA而開發(fā)?兩者的異同?
答:CUDA包含編譯器、軟件工具以及應(yīng)用程序接口(API),是一款經(jīng)過精心調(diào)試與完善的編程環(huán)境和架構(gòu),對我們而言,OpenCL是進入CUDA并行編程架構(gòu)的另一種應(yīng)用程序接口。
針對OpenCL以及CUDA,編程人員可以使用相同的理念體系以及并行編程策略。二者在句法上非常相似,但是OpenCL更適用于OS X,而CUDA則基于標(biāo)準(zhǔn)的C語言,可適用于各種平臺。我們已經(jīng)設(shè)計出了軟件棧,因此對我們的硬件來說,OpenCL以及CUDA看上去是一樣的。它們只是通向GPU加速代碼的兩種不同途徑而已。
- CUDA與OpenCL能否互相兼容?
答:CUDA和OpenCL二者的應(yīng)用程序接口(API)有所不同,因此代碼也不會完全兼容。然而,它們在定義數(shù)據(jù)并行機制方面有類似的構(gòu)造,因此它們的代碼會非常相似,而且移植工作也會非常省力?,F(xiàn)在的情況是,CUDA已經(jīng)面世并且得到了包括OS X在內(nèi)的所有大多數(shù)操作系統(tǒng)的支持,這就意味著開發(fā)人員現(xiàn)在擁有了一個穩(wěn)定、普及的環(huán)境來開發(fā)gigaflop級浮點性能GPU應(yīng)用程序。這種開發(fā)環(huán)境在OpenCL發(fā)布時可通過OpenCL輕松地與OS X整合在一起。
- OpenCL是否會代替CUDA?NVIDIA是否支持將OpenCL指定為一種行業(yè)標(biāo)準(zhǔn)?
答:CUDA是不會被取代的,OpenCL實際上可利用CUDA驅(qū)動程序堆棧來在NVIDIA GPU上實現(xiàn)更高的性能。NVIDIA當(dāng)然支持OpenCL,我們支持所有的標(biāo)準(zhǔn)制定工作