CUDA與OpenCL之間的差異

CUDA和OpenCL都是實(shí)現(xiàn)計(jì)算機(jī)異構(gòu)并行計(jì)算架構(gòu),然而CUDA是針對(duì)NVIDIA公司的GPU,而OpenCL是一種通用的計(jì)算框架。兩者基本的差別為:

cuda vs opencl.jpg

1.硬件架構(gòu)

1.1 芯片結(jié)構(gòu)

CUDA和OpenCL的芯片結(jié)構(gòu)類(lèi)似,都是按等級(jí)劃分的,并逐漸提高等級(jí)。然而OpenCL更具通用性并使用更加一般的技術(shù),如OpenCL通過(guò)使用Processing Element代替CUDA的Processor,同時(shí)CUDA的模型只能在NVIDIA架構(gòu)的GPU上運(yùn)行。

OpenCL與CUDA芯片結(jié)構(gòu)

1.2 存儲(chǔ)結(jié)構(gòu)

CUDA和OpenCL的存儲(chǔ)模型如圖所示,兩者的模型類(lèi)型,都是將設(shè)備和主機(jī)的存儲(chǔ)單元獨(dú)立分開(kāi),它們的都是按等級(jí)劃分并需要程序員進(jìn)行精確的控制,并都能通過(guò)API來(lái)查詢?cè)O(shè)備的狀態(tài)、容量等信息。而OpenCL模型更加抽象,并為不同的平臺(tái)提供更加靈活的實(shí)現(xiàn),在CUDA模型的Local Memory在OpenCL沒(méi)有相關(guān)的概念。對(duì)于CUDA和OpenCL模型的類(lèi)似概念,通過(guò)表列出兩者對(duì)存儲(chǔ)單元命名的差異。

CUDA與OpenCL存儲(chǔ)模型
CUDA與OpenCL存儲(chǔ)器對(duì)比

2.軟件架構(gòu)

2.1 應(yīng)用框架

一個(gè)典型的應(yīng)用框架都包含有l(wèi)ibraries、API、drivers/compilies和runtime system等來(lái)支持軟件開(kāi)發(fā)。CUDA和OpenCL也擁有相似的特性,都擁有runtime API和library API,但具體環(huán)境下的創(chuàng)建和復(fù)制API是不同的,并且OpenCL可以通過(guò)平臺(tái)層查詢?cè)O(shè)備的信息;CUDA的kernel可以直接通過(guò)NVIDIA 驅(qū)動(dòng)執(zhí)行,而OpenCL的kernel必須通過(guò)OpenCL驅(qū)動(dòng),但這樣可能影響到性能。因?yàn)镺penCL畢竟是一個(gè)開(kāi)源的標(biāo)準(zhǔn),為了適應(yīng)不同的CPU、GPU和設(shè)備都能夠得到正常執(zhí)行;而CUDA只針對(duì)NVIDIA的GPU產(chǎn)品。

CUDA與OpenCL應(yīng)用框架

2.2 編程模型

1)開(kāi)發(fā)模型

CUDA和OpenCL應(yīng)用的開(kāi)發(fā)模型基本一致,都是由Host和Device程序組成。程序首先開(kāi)始執(zhí)行Host程序,然后由Host程序激活Device程序kernel執(zhí)行。其中兩者也存在一些差別,如表所示。

CUDA與OpenCL開(kāi)發(fā)模型比較

2)kernel編程

kernel程序是指Device設(shè)備上執(zhí)行的代碼,它是直接在設(shè)備上執(zhí)行,受具體設(shè)備的限制,具體兩者的差別,如表所示。

kernel編程差異

3)Host編程

Host端基本是串行的,CUDA和OpenCL的差別主要表現(xiàn)在調(diào)用Device的API的差異,所以表描述了兩者之間API的差異。

Host端可用的API比較
Host端可用的API比較

3.性能

本節(jié)根據(jù)學(xué)術(shù)上對(duì)CUDA和OpenCL的研究,比較兩者的性能,其中本文簡(jiǎn)單以[1-3]研究成功比較CUDA和OpenCL之間的性能差異,若需詳細(xì)了解CUDA和OpenCL之間的性能差異可以參考[4-15]。

3.1 AES實(shí)現(xiàn)

Wang[1]提出一種在XTS模式的AES實(shí)現(xiàn),并對(duì)OpenCL和CUDA性能進(jìn)行比較。總體性能CUDA要比OpenCL好10%~20%之間。

3.2 三維可視化加速模型

上海理工大學(xué)[3]提出合理設(shè)計(jì)內(nèi)核函數(shù)實(shí)現(xiàn)改進(jìn)的光線投射算法在GPU上并行和并發(fā)運(yùn)行的三維可視化加速模型,該模型實(shí)現(xiàn)代碼可不用修改在兩大主流顯卡平臺(tái)NVIDIA和AMD上任意移植,通過(guò)實(shí)驗(yàn)證明比較OpenCL與CUDA之間的性能。

3.3 MAGMA和DGEMM算法

作者[2]已經(jīng)在先前的版本中使用CUDA實(shí)現(xiàn)了MAGMA(Matrix Algebra on GPU and multicore architectures)和DGEMM算法,現(xiàn)在將其實(shí)現(xiàn)移植到OpenCL API,并對(duì)兩者的性能進(jìn)行比較。在NVIDIA處理器上進(jìn)行測(cè)試,其結(jié)果是CUDA的性能要高于OpenCL。

4.總結(jié)

CUDA與OpenCL的功能和架構(gòu)相似,只是CUDA只針對(duì)NVIDIA的產(chǎn)品,而OpenCL是一種通用性框架,可以使用多種品牌的產(chǎn)品,所以CUDA的性能一般情況下要比OpenCL的性能要高10%~20%之間。

4.1 CUDA與OpenCL的相似點(diǎn)

  • 關(guān)注數(shù)據(jù)并行計(jì)算模型;
  • 將主機(jī)和設(shè)備的程序和存儲(chǔ)分離;
  • 提供定制和標(biāo)準(zhǔn)C語(yǔ)言對(duì)設(shè)備進(jìn)行編程;
  • 設(shè)備、執(zhí)行和存儲(chǔ)模型是現(xiàn)類(lèi)似的;
  • OpenCL已經(jīng)可以在CUDA之上進(jìn)行實(shí)現(xiàn)了。

4.2 CUDA和OpenCL主要的差異點(diǎn)

  • CUDA是屬于NVIDIA公司的技術(shù)框架,只有NVIDIA的設(shè)備才能執(zhí)行;
  • OpenCL是一個(gè)開(kāi)源的框架,其目標(biāo)是定位不同的設(shè)備;
  • CUDA擁有更多的API和幫助文檔;
  • CUDA投入市場(chǎng)的時(shí)間更早,所以得到更多的支持,并且在研究、產(chǎn)品和應(yīng)用都比OpenCL豐富;
  • CUDA有非常多的文檔,但也更加模糊。

References

1.Wang, X., et al. AES finalists implementation for GPU and multi-core CPU based on OpenCL. in Anti-Counterfeiting, Security and Identification (ASID), 2011 IEEE International Conference on. 2011: IEEE.

  1. Du, P., et al., From CUDA to OpenCL: Towards a performance-portable solution for multi-platform GPU programming. Parallel Computing, 2012. 38(8): p. 391-407.
    袁健與高勃, 基于 OpenCL 的三維可視化加速模型. 小型微型計(jì)算機(jī)系統(tǒng), 2015. 36(002): 第327-331頁(yè).

  2. Karimi, K., N.G. Dickson and F. Hamze, A performance comparison of CUDA and OpenCL. arXiv preprint arXiv:1005.2581, 2010.

  3. McConnell, S., et al. Scalability of Self-organizing Maps on a GPU cluster using OpenCL and CUDA. in Journal of Physics: Conference Series. 2012: IOP Publishing.

  4. Fang, J., A.L. Varbanescu and H. Sips. A comprehensive performance comparison of CUDA and OpenCL. in Parallel Processing (ICPP), 2011 International Conference on. 2011: IEEE.

  5. Oliveira, R.S., et al., Comparing CUDA, OpenCL and OpenGL implementations of the cardiac monodomain equations, in Parallel Processing and Applied Mathematics. 2012, Springer. p. 111-120.

  6. Harvey, M.J. and G. De Fabritiis, Swan: A tool for porting CUDA programs to OpenCL. Computer Physics Communications, 2011. 182(4): p. 1093-1099.

  7. 林樂(lè)森, 基于 OpenCL 的 AES 算法并行性分析及加速方案, 2012, 吉林大學(xué).

  8. 易卓霖, 基于 GPU 的并行支持向量機(jī)的設(shè)計(jì)與實(shí)現(xiàn), 2011, 西南交通大學(xué).

  9. 蔣麗媛等, 基于 OpenCL 的連續(xù)數(shù)據(jù)無(wú)關(guān)訪存密集型函數(shù)并行與優(yōu)化研究. 計(jì)算機(jī)科學(xué), 2013. 40(3): 第111-115頁(yè).

  10. 詹云, 趙新?tīng)N與譚同德, 基于 OpenCL 的異構(gòu)系統(tǒng)并行編程. 計(jì)算機(jī)工程與設(shè)計(jì), 2012. 33(11): 第4191-4195頁(yè).

  11. 王晗, 基于多核環(huán)境下的多線程并行程序設(shè)計(jì)方法研究, 2014, 中原工學(xué)院.

  12. 黃文慧, 圖像處理并行編程方法的研究與應(yīng)用, 2012, 華南理工大學(xué).

  13. 劉壽生, 虛擬現(xiàn)實(shí)仿真平臺(tái)異構(gòu)并行計(jì)算關(guān)鍵技術(shù)研究, 2014, 中國(guó)海洋大學(xué).

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,208評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,746評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,666評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,477評(píng)論 6 407
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,960評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,200評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,726評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,617評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,807評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,049評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,425評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,674評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,432評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,769評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容

  • CUDA和OpenCL都是實(shí)現(xiàn)計(jì)算機(jī)異構(gòu)并行計(jì)算架構(gòu),然而CUDA是針對(duì)NVIDIA公司的GPU,而OpenCL是...
    ai領(lǐng)域閱讀 18,031評(píng)論 0 4
  • CUDA從入門(mén)到精通(零):寫(xiě)在前面 本文原版鏈接: 在老板的要求下,本博主從2012年上高性能計(jì)算課程開(kāi)始接觸C...
    Pitfalls閱讀 3,633評(píng)論 1 3
  • 1. 介紹 首先讓我們來(lái)看看TensorFlow! 但是在我們開(kāi)始之前,我們先來(lái)看看Python API中的Ten...
    JasonJe閱讀 11,778評(píng)論 1 32
  • 1. CPU vs. GPU 1.1 四種計(jì)算機(jī)模型 GPU設(shè)計(jì)的初衷就是為了減輕CPU計(jì)算的負(fù)載,將一部分圖形計(jì)...
    王偵閱讀 20,965評(píng)論 3 20
  • 1. 簡(jiǎn)介 OpenCL(Open Computing Language),即開(kāi)放運(yùn)算語(yǔ)言,是一個(gè)統(tǒng)一的開(kāi)放式的開(kāi)...
    ai領(lǐng)域閱讀 6,602評(píng)論 2 5