● 异构计算应用环境之疑问
针对各家硬件厂商提出的融合处理器硬件架构,业内拥有大量可以用于实际工作的融合处理器应用软件和使用环境,这包含大量富含矢量操作的图形图像处理软件和影响力较为广泛的API应用程序接口。
OpenCL标准所提倡的CPU-GPU异构计算
首当其冲的是AMD努力倡导的OpenCL开放性编程环境。OpenCL (Open Computing Language,开放计算语言) 是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。
虽然有着完全开放的标准来保证高效的融合处理器编程,但是目前我们依然看到太多问题,笔者有一个观点:任何工作都能胜任的API什么都干不好。原因是OpenCL开放的编程环境还需要各家厂商针对自有硬件的编译器,而AMD在放弃Brook+之后暂时没有合适的编译器提出,所以纵然有OpenCL提供大环境,但是AMD依然没有获得较为广泛的厂商支持。
AMD艰难推广并行加速APP应用程序
目前我们能够看到的一些基于OpenCL的应用程序大多是基于ATI Stream整套解决方案开发的。ATI Stream技术定义程序可以被分为两种,也就是图中的库,以及第三方代码。库可以直接转化成brook+,第三方代码则需要通过stream编译一下。编译好的东西可以直接丢给CPU或者GPU算。
ATI Stream技术软件环境
其中绿色的是计算抽象层规则。这张图片说明ATI GPU可以通过计算抽象层规则直接运行程序,也可以通过OCL来支持应用程序,也就是说OCL只是其中一种选择。实际上AMD倒向OCL,应该也有打算让自己以第一的身份接近OCL制定者并影响对方甚至施压的意思。CUDA和Stream都是编译环境,而OpenCL跟DirectX都是API。
所以说OpenCL的又一大重要原因就是其开放性导致其对每一代的硬件系统没有制约性和指导性。我们研究微软的DirectX应用程序接口发展历程发现AMD和NVIDIA都小心翼翼地针对DirectX接口开发硬件,如果自己的硬件有不合理的设计则会导致效率低下。而OpenCL不对硬件提出要求,硬件厂商无法看到对其优化能带来任何性能提升,所以也没有支持欲望。
三秦IT网的官方微信:更多资讯请关注:三秦IT网官方微博