GPU挑战CPU地位!详解CUDA+OpenCL威力
分享
理清CUDA架构及OpenCL API之间的关系之后,再来研究下CUDA C语言与OpenCL之间的优劣,两者有很多相似之处,存在着竞争与互补的双重关系,但对于GPU硬件架构(如CUDA)来说是无差别的。
NVIDIA认为CUDA的基本理念因OpenCL的出现得到了增强。两者的根本原理都是一样的,但OpenCL是一种更底层的架构,需要开发人员自行编写内存管理等等功能的代码,而CUDA则可以让那些非专业编程人员如科研工作者更简单的编制GPGPU程序代码。
简言之,CUDA C语言与OpenCL的定位不同,或者说是用人群不同。CUDA C是一种高级语言,那些对硬件了解不多的非专业人士也能轻松上手;而OpenCL则是针对硬件的应用程序开发接口,它能给程序员更多对硬件的控制权,相应的上手及开发会比较难一些。
另外程序员的使用习惯也是非常重要的一方面,那些在X86 CPU平台使用C语言的人员,会很容易接受基于CUDA GPU平台的C语言;而习惯于使用OpenGL图形开发的人员,看到OpenCL会更加亲切一些,在其基础上开发与图形、视频有关的计算程序会非常容易。
所以说,CUDA C语言与OpenCL是各有所长,是互补而非竞争关系,不会发生一方取代另一方的情况。就拿成熟的X86 CPU架构来讲,各种开发语言不胜枚举,C、C++、Basic、Fortran、Java……,每种语言都有自己的特色、都能找到适合自己的领域。现在针对GPU架构的语言及API还不够多,目前仅有的CUDA C语言和OpenCL都还处在起步阶段,相信未来会有更多的语言/API移植到GPU上来,CUDA架构为此已经做好了充分的准备。
2人已赞