当然API和C语言进行开发是有些不同的,API作为编程接口,它的核心是函数库和应用程序开发的一个硬件接口,它有一个好处就是可以访问比较低层次的硬件,对于硬件有比较好的控制权,很多的东西特别是像内存的管理,是需要开发者自己来进行管理的。而在利用CUDA C语言来编程的时候,很多东西是由开发环境来进行管理的,比如内存他是用runtime进行管理的,相对来说要容易得多。两者的关系有点像低级语言和高级语言间的关系。
不管是用OpenCL还是用CUDA C语言来编程,最终它们都是需要通过一个驱动程序来变成一个PTX的代码,PTX相当于CUDA指令集,然后交给图形处理其或者交给硬件来进行执行。
OpenCL对开发者、业界人员和消费者来说都是一个非常好的API,它可以使得开发者很容易的开发出跨平台的GPU计算程序,充分利用GPU强大的计算能力然后应用在各种领域。对于NVIDIA来说,在CUDA架构上除了C语言以外,现在新增加了OpenCL或者DX11这样的API,提供了更多的GPU计算开发环境选择。如果开发者对API很熟悉的话,肯定会乐意看到OpenCL或者新的API的加入,对于他们来说很容易利用这些API开发出各种各样GPU计算程序。
简单的说,OpenCL只是一个API,一个编程接口,它是对CUDA架构的有益补充,实际上OpenCL是利用CUDA驱动程序堆栈来在NVIDIA GPU上实现高性能计算,OpenCL标准的出台,CUDA更是如虎添翼。
目前NVIDIA CUDA的用户超过了25000名,应用程序数量超过100个,应用范围也日趋广泛,相反AMD Stream加速的实际应用暂时是凤毛麟角。OpenCL有助于拓展GPU的功能及市场,难怪NVIDIA和AMD都会积极参与到其中。
|