CUDA和OpenCL有什么區別

CUDA和OpenCL有什么區別

CUDA和OpenCL有什么區別


從很多方面來看,CUDA和OpenCL的關系都和DirectX與OpenGL的關系很相像 。如同DirectX和OpenGL一樣,CUDA和OpenCL中,前者是配備完整工具包、針對單一供應商(NVIDIA)的成熟的開發平臺,后者是一個開放的標準 。雖然兩者抱著相同的目標:通用返前并行計算 。但是CUDA僅僅能夠在NVIDIA的GPU硬件上運行,而OpenCL的目標是面向任何一種Massively Parallel Processor,期望能夠對不同種類的硬件給出一個相同的編程模型 。由于這一根本區別,二者在很多方面都存在不同: 1)開發者友好程度 。CUDA在這方面顯然受更多開發者青睞 。原因在于其統一的開發套件(CUDA Toolkit, NVIDIA GPU Computing SDK以及NSight等等)、非常豐富的庫(cuFFT, cuBLAS, cuSPARSE, cuRAND, NPP, Thrust)以及NVCC(NVIDIA的CUDA編譯器)所具備的PTX(一種SSA中間表示,為不同的NVIDIA GPU設備提供一套統一的靜態ISA)代碼生成、離線編譯等更成熟的編譯器特性 。相比之下,使用OpenCL進行開發,只有AMD對OpenCL的驅動相對成熟 。2)跨平臺性和通用性 。這一點上OpenCL占有很大優勢(這也是很多National Laboratory使用OpenCL進行科學計算的最主要原因) 。OpenCL支持包括ATI,NVIDIA,Intel,ARM在內的多類處理器,并能支持運行在CPU的并行代碼,同時還獨有Task-Parallel Execution Mode,能夠更好的支持Heterogeneous Computing 。這一點是僅僅支持數據級并行并僅能在NVIDIA眾核處理器上運行的CUDA無法做到的 。3)市場占有率 。作為一個開放標準,缺少背后公司的推動,OpenCL顯然沒有占據通用并行計算的主流市場鍵好 。NVIDIA則憑借CUDA在科學計算稿世鉛、生物、金融等領域的推廣牢牢把握著主流市場 。再次想到OpenGL和DirectX的對比,不難發現公司推廣的高效和非盈利機構/標準委員會的低效(抑或謹慎,想想C++0x) 。很多開發者都認為,由于目前獨立顯卡市場的萎縮、新一代處理器架構(AMD的Graphics Core Next (GCN)、Intel的Sandy Bridge以及Ivy Bridge)以及新的SIMD編程模型(Intel的ISPC等)的出現,未來的通用并行計算市場會有很多不確定因素,CUDA和OpenCL都不是終點,我期待未來會有更好的并行編程模型的出現(當然也包括CUDA和OpenCL,如果它們能夠持續發展下去) 。
【CUDA和OpenCL有什么區別】

    猜你喜歡