简介
早期的Brook编译效率很低,并且只能使用像素着色器进行运算。受GPU架构限制,Brook也缺乏有效的数据通信机制。AMD/ATI公司在其GPGPU通用计算产品Stream中采用了Brook的改进版本Brook+作为高级开发语言。Brook+的编译器的工作方式与Brook不同,提高了效率。
概念
Brook+语言中两个最关键的概念:
1.流。流就是一些类型相同的数据,他们可以被分配到不同的流处理器中进行处理。
2.内核。内核程序其实就是GPU硬件的行为程序,它指定了硬件的行为特性。
Brook+的内核函数是被Brcc(Brook Code Compiler)编译的,编译后生成三个文件,其中两个是.h和.cpp文件,就是定义了一些和函数相关的类,还有一个最关键的就是IL(IL是指AMD Intermediate Language。是一种汇编形式的语言)代码。有了这些文件,这三个文件再和用户的其他源文件一起编译,链接,从而生成可执行性文件。Brook+的程序在运行时,是需要Brook runtime的。Brook+的内核程序也可以被CPU执行,还可以进行调试。
Brook+的版本是1.4版本。已经被提交到了SourceForge上,应该是没有太多的维护了。由于Brook+还有一些限制,所以在灵活性方面并不如CUDA好。而且由
于过多的封装,效率也并不很高,不支持多GPU,rook+的kernel不支持高级的GPU命令,比如本地共享内存和原子操作等。唯一的好处就在于用Brook+开发比较简便