Brook

Brook

Brook

Brook是[[Ian Buck]]在斯坦福大学博士期间发明的流编程语言,是[[CUDA]]的直接前身和灵感来源。它于2004年在SIGGRAPH大会上正式亮相,论文《Brook for GPUs: Stream Computing on Graphics Hardware》轰动一时。

核心概念

Brook是C语言的简单扩展,引入了三个核心概念:

  • streams(数据流):一个stream就像一个数组,但代表"需要相同计算的一组记录"——如粒子位置、像素值、矩阵元素。
  • kernels(内核函数):程序员只需编写一个kernel函数,GPU自动并行处理成千上万的数据元素。
  • reductions(归约操作):用于聚合计算结果。

示例代码

1
2
3
kernel void saxpy(float a, float4 x<>, float4 y<>, out float4 z<>) {
z = a * x + y;
}

历史意义

  • 开创[[GPGPU]]时代:Brook是通用GPU计算领域的第一道曙光,让普通程序员也能利用GPU进行非图形计算。
  • CUDA的技术原型:CUDA的C-like语法、流模型等核心设计理念直接继承自Brook。
  • 开源影响力:Brook开源后迅速吸引了上万用户,验证了GPU通用计算的巨大需求。
  • 虚拟化硬件限制:Brook的编译器和运行时自动处理纹理大小、输出通道、内存布局等硬件细节。

技术渊源

Brook的流模型基础直接来源于[[Ian Buck]]在[[WireGL]]项目中的集群经验——数据像河流般流动,计算并行爆发。同时,[[Merrimac超级计算机项目]]的纯流架构研究也深刻影响了Brook的设计理念。

分享到