CUDA 與 OpenCL 區別

轉自:http://blog.csdn.net/babyfacer/article/details/6863572


根據網站資料,簡單地彙編一下CUDA與OpenCL的區別。如有錯誤請指出。

題外話: 美國Sandia國家實驗室一項模擬測試證明:由於存儲機制和內存帶寬的限制,16核、32核甚至64核處理器對於超級計算機來說,不僅不能帶來性能提升,甚至可能導致效率的大幅度下降。

什麼是OpenCL?

是由蘋果(Apple)公司發起,業界衆多著名廠商共同製作的面向異構系統通用目的並行編程的開放式、免費標準,也是一個統一的編程環境。便於軟件開發人員爲高性能計算服務器、桌面計算系統、手持設備編寫高效輕便的代碼,而且廣泛適用於多核心處理器(CPU)、圖形處理器(GPU)、Cell類型架構以及數字信號處理器(DSP)等其他並行處理器,在遊戲、娛樂、科研、醫療等各種領域都有廣闊的發展前景。

什麼是CUDA?

CUDA是一個基於Nvidia GPU的並行計算的架構。CUDA最主要的包含兩個方面:一個是ISA指令集架構;第二硬件計算引擎;實際上是硬件和指令集。 也就是說我們可以把CUDA看做是與X86或者cell類似的架構,但是是基於是GPU,而不是傳統的CPU。




OpenCL實際上是什麼?

  • OpenCL實際上是針對異構系統進行並行編程的一個全新的API,OpenCL可以利用GPU進行一些並行計算的工作。
  • OpenGL是針對圖形的,而OpenCL則是針對並行計算的API。
  • OpenCL開發的過程中,技術平臺均爲NVIDIA的GPU,實際上OpenCL是基於NVIDIA GPU的平臺進行開發的。另外OpenCL的第一次演示也是運行在NVIDIA的GPU上。
  • 從本質上來說,OpenCL就是一個相當於Windows平臺中DirectX那樣的技術。或者說,它是一個連接硬件和軟件的API接口。在這一點上,它和OpenGL類似,不過OpenCL的涉及範圍要比OpenGL大得多,它不僅是用來作用於3D圖形。如果用一句話描述,OpenCL的作用就是通過調用處理器和GPU的計算資源,釋放硬件潛力,讓程序運行得更快更好。

CUDA實際上是什麼?

  • CUDA架構是原生的,專門爲計算接口而建造的這樣的一個架構,這種硬件架構包括指令集都是非常適合於這種並行計算,爲異構計算而設計的一整套的架構。CUDA架構可以支持API,包括OpenCL或者DirectX,同時CUDA還支持C、C++語言,還包括Fortran、Java、Python等各種各樣的語言。



OpenCL與CUDA的關係是什麼?

  • CUDA和OpenCL的關係並不是衝突關係,而是包容關係。OpenCL是一個API,在第一個級別,CUDA架構是更高一個級別,在這個架構上不管是OpenCL還是DX11這樣的API,還是像C語言、Fortran、DX11計算,都可以支持。作爲程序開發員來講,一般他們只懂這些語言或者API,可以採用多種語言開發自己的程序,不管他選擇什麼語言,只要是希望調用GPU的計算能,在這個架構上都可以用CUDA來編程。
  • 關於OpenCL與CUDA之間的技術區別,主要體現在實現方法上。基於C語言的CUDA被包裝成一種容易編寫的代碼,因此即使是不熟悉芯片構造的科研人員,也可能利用CUDA工具編寫出實用的程序。而OpenCL雖然句法上與CUDA接近,但是它更加強調底層操作,因此難度較高,但正因爲如此,OpenCL才能跨平臺運行。
  • CUDA是一個並行計算的架構,包含有一個指令集架構和相應的硬件引擎。OpenCL是一個並行計算的應用程序編程接口(API),在NVIDIA CUDA架構上OpenCL是除了C for CUDA外新增的一個CUDA程序開發途徑。
  • 如果你想獲得更多的對硬件上的控制權的話,你可以使用OpenCL這個API來進行編程,如果對API不是太瞭解,也可以用CUDA C語言來編程,這是兩種不同編程的方式,他們有他們相同點和不同點。但是有一點OpenCL和CUDA C語言進行開發的時候,在並行計算這塊,他們的概念是差不多的,這兩種程序在程序上是有很大的相似度,所以程序之間的相互移植相對來說也是比較容易。
  • CUDA C語言與OpenCL的定位不同,或者說是用人羣不同。CUDA C是一種高級語言,那些對硬件瞭解不多的非專業人士也能輕鬆上手;而OpenCL則是針對硬件的應用程序開發接口,它能給程序員更多對硬件的控制權,相應的上手及開發會比較難一些。
  • 程序員的使用習慣也是非常重要的一方面,那些在X86 CPU平臺使用C語言的人員,會很容易接受基於CUDA GPU平臺的C語言;而習慣於使用OpenGL圖形開發的人員,看到OpenCL會更加親切一些,在其基礎上開發與圖形、視頻有關的計算程序會非常容易。


給點實例看看?


參考鏈接:

發佈了176 篇原創文章 · 獲贊 62 · 訪問量 160萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章