早在推出OpenCL标准之前,AMD/ATI从事流计算模型的研究和发已经有很长一段时间了。流计算(Stress Computing)是基于SIMD模式的并行计算模型,用户将处理的数据看做流(Stress),因此称之为流计算模型。
AMD为流计算专门开发一个接近硬件的驱动接口,CAL(Compute Abstraction Layer),程序员通过CAL可以访问硬件所提供的几乎所有特性,其中包括,
CAI支持用IL(Intermedia Language)编写的内核函数,也同样可以接受用硬件指令(ISA)直接来编写Kernel。
但是,CAL的内核编写十分繁琐,IL又是一种类似于汇编的语言,极难调试,因此对于C程序员来说,学习起来也不是特别的快,也不适合快速开发大型程序。为了克服这些缺点AMD推出了上层的应用程序接口Brook+。
Brook+为开发者提供了一个简便快捷的流计算开发接口。用户可以通过BrooK+在AMD/ATI的硬件进行流计算开发。Brook+的内核程序是由一种类C语言编写的,所以非常适合传统的C以及C++程序员。Brook+语言中引入了流-即数据流和内核程序的概念用来处理流计算。Brook+的内核函数通过Brcc(Brook Code Compiler)编译,然后Brook runtime再将编译好的kernel程序提交GPU或CPU执行。Brook+的内核程序的可调式性要远远开发复杂的项目高于CAL。
目前,最新的Book+的版本为1.4Beat。AMD已经停止了对它的开发和维护。Brook+开发时间不久,有很多限制,并且因为过多的封装,效率也不高。开发基于GPU小的测试程序还可以,但是如果开发复杂的项目,Brook+就有些力不从心了。
AMD于2009年10月中旬,发布了基于GPU和CPU的OpenCL解决方案,用于解决Brook+中遇到的诸多不足,随着OpenCL标准的不断完善和推广它必将成为并行计算领域中的一个重要规范。
ADM一直在x86处理器、GPU和高性能计算等领域保持自身的优势,它是OpenCL,标准的倡导者和支持者,在标准委员会中占有重要一席也是目前唯一能同时提供高性能x86和GPU技术的企业。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。