CUDA孪生弟兄!GPU计算OpenCL标准分析
分享
CUDA和OpenCL原理是一样的,都是基于C语言编程,但CUDA只能用于NVIDIA GPU(半封闭式),而OpenCL是完全开放的,可以支持任何GPU(DX9以上级别)。举个最简单的例子,基于CUDA技术的PhysX与Badaboom只能用于NVIDIA GeForce 8以上级别的显卡,而基于OpenCL/GL技术的PhotoShop CS4就能支持目前所有主流显卡。
简单说明下OpenCL和CUDA的不同:
- OpenCL提供统一的标准,让不同厂家的设备来支持,使得我们可以统一看待计算资源。这个计算资源不但包括GPU,也包括CPU。
- OpenCL更关注于多个计算资源的管理,不但在计算单元内部可以实现并行,而且对于一台宿主机上的所有计算设备的并行化进行管理。
虽然CUDA和OpenCL是两种标准两种概念,但其实两者并不是对立的存在,不但不会产生利益冲突,反倒是一种互补互利的关系。因为NVIDIA不但是OpenCL标准的制定者之一,而且是苹果的亲密合作伙伴。比如苹果新一代MacBook将会采用NVIDIA的GeForce 9400M GPU,这款整合显卡拥有16个流处理器,既能运行基于CUDA的应用程序以及对其进行编程,将来也能完美支持基于OpenCL API的并行计算程序。
此前AMD攻击NVIDIA,称CUDA为封闭的标准,而AMD则大力支持完全开放的OpenCL。但目前来看NVIDIA两手抓两手都要硬的策略还是更加靠普,在OpenCL成型之前的真空期,CUDA已经大展宏图取得了骄人的战绩,待到OpenCL完善后NVIDIA也会无条件提供支持,将兼容性和效能发挥到最大。而对于AMD来说,GPU通用计算则要完全依赖OpenCL,因此目前AMD并行计算尚未正式进入实际应用阶段,只有等待OpenCL API成熟之后,才能在其基础上进行二次开发,无论运算效率还是软件支持度都将会大打折扣!
0人已赞
关注我们



