GPU挑戰(zhàn)CPU地位!詳解CUDA+OpenCL威力
理清CUDA架構(gòu)及OpenCL API之間的關(guān)系之后,再來研究下CUDA C語言與OpenCL之間的優(yōu)劣,兩者有很多相似之處,存在著競爭與互補的雙重關(guān)系,但對于GPU硬件架構(gòu)(如CUDA)來說是無差別的。
NVIDIA認為CUDA的基本理念因OpenCL的出現(xiàn)得到了增強。兩者的根本原理都是一樣的,但OpenCL是一種更底層的架構(gòu),需要開發(fā)人員自行編寫內(nèi)存管理等等功能的代碼,而CUDA則可以讓那些非專業(yè)編程人員如科研工作者更簡單的編制GPGPU程序代碼。
簡言之,CUDA C語言與OpenCL的定位不同,或者說是用人群不同。CUDA C是一種高級語言,那些對硬件了解不多的非專業(yè)人士也能輕松上手;而OpenCL則是針對硬件的應(yīng)用程序開發(fā)接口,它能給程序員更多對硬件的控制權(quán),相應(yīng)的上手及開發(fā)會比較難一些。
另外程序員的使用習(xí)慣也是非常重要的一方面,那些在X86 CPU平臺使用C語言的人員,會很容易接受基于CUDA GPU平臺的C語言;而習(xí)慣于使用OpenGL圖形開發(fā)的人員,看到OpenCL會更加親切一些,在其基礎(chǔ)上開發(fā)與圖形、視頻有關(guān)的計算程序會非常容易。
所以說,CUDA C語言與OpenCL是各有所長,是互補而非競爭關(guān)系,不會發(fā)生一方取代另一方的情況。就拿成熟的X86 CPU架構(gòu)來講,各種開發(fā)語言不勝枚舉,C、C++、Basic、Fortran、Java……,每種語言都有自己的特色、都能找到適合自己的領(lǐng)域。現(xiàn)在針對GPU架構(gòu)的語言及API還不夠多,目前僅有的CUDA C語言和OpenCL都還處在起步階段,相信未來會有更多的語言/API移植到GPU上來,CUDA架構(gòu)為此已經(jīng)做好了充分的準備。
關(guān)注我們



