免费网站平台,没有做网站能备案吗,crm客户管理系统排名,室内设计效果图制作教程1、CUDA、OpenCL与C AMP 其实在C AMP之前已经有了两个异构编程框架#xff1a;CUDA与OpenCL。CUDA#xff08;Compute Unified Device Architecture#xff09;是显卡厂商Nvidia于2007年推出的业界第一款异构并行编程框架。在Nvidia的大力支持下#xff0c;CUDA拥有良好的开… 1、CUDA、OpenCL与C AMP 其实在C AMP之前已经有了两个异构编程框架CUDA与OpenCL。CUDACompute Unified Device Architecture是显卡厂商Nvidia于2007年推出的业界第一款异构并行编程框架。在Nvidia的大力支持下CUDA拥有良好的开发环境丰富的函数库优秀的性能。但是CUDA只能被用于在Nvidia的显卡上进行异构编程有先天的局限性。OpenCL (Open Computing Language) 是业界第一个跨平台的异构编程框架。它是Apple领衔并联合NvidiaAMDIBMIntel等众多厂商于2008年共同推出的一个开放标准由单独成立的非营利性组织Khronos Group管理。与C AMP类似OpenCL作为一个开放的标准并不局限于某个特定的GPU厂商从这点上来看Nvidia自己独家的CUDA显得很封闭。我们可以把OpenCL在异构编程上的地位与OpenGL和OpenAL类比这两个标准分别用于三维图形和计算机音频。 因为CUDA与OpenCL比CAMP更接近硬件底层所以前两者的性能更好然而与C AMP的易编程性却要优于CUDA和OpenCL。与C AMP基于C语言特性直接进行扩展不同OpenCL是基于C99编程语言进行的相关修改和扩展因此C AMP比OpenCL拥有更高层次的抽象编程更加简单。在CUDA和OpenCL中kernels运行在GPU上的代码必须被封装成特定函数而在C AMP中代码看起来整洁的多我们只需要使用for循环中内嵌的lambda函数就能完成异构并行计算而且它的内存模型也在一定程度上被大大简化了。 那么在OpenCL、CUDA 与C AMP之间开发者该如何选择呢 1如果你只需要在Windows平台上进行异构编程并且看重易编程性的话C AMP无疑是最好的选择。依托于Visual Studio这个强有力的开发工具再加上基于C这一更高层抽象带来的先天优势C AMP将为Windows开发者进行异构编程提供良好的支持。 2如果你只需要在Nvidia的GPU卡上进行异构编程并且非常看重性能的话CUDA应该是第一选择在Nvidia的强力支持下CUDA在Nvidia硬件上的性能一直保持领先许多学术研究表明OpenCL与CUDA的性能相差不大在一部分应用中CUDA的性能稍微好于OpenCL。同时CUDA的开发环境也非常成熟拥有众多扩展函数库支持。 3如果你更注重不同平台间的可移植性OpenCL可能是目前最好的选择。作为第一个异构计算的开放标准OpenCL已经得到了包括IntelAMDNvidiaIBMOracleARMAppleRedhat等众多软硬件厂商的大力支持。当然C AMP本身也是一个开放的标准只是目前只有微软自己做了实现将来C AMP的跨平台支持能做到什么程度还是一个未知数。 其实从编程语言的发展来看易编程性往往比性能更加重要。从Java和.Net的流行到脚本语言的崛起编程效率无疑是最重要的指标。更不用说开发者往往可以通过更换下一代GPU硬件来获得更好的性能。从这点来看C AMP通过降低异构编程的编程难度实际上也是推进了异构编程的普及。下面我们需要看的就是C AMP是否能成为真正的业界标准而不仅仅局限于微软自己的平台微软这次开放C AMP标准的行为也正是为了推广C AMP在业界的普及。 参考http://www.2cto