opencl特性

工作组

opencl 使用工作组来组织工作项。工作组使用N维的网格作为索引,被称为NDRange;目前这个N维的索引维度可以是1、2或者3。

索引分为全局索引 (globale index) 个 局部索引 (loacl index);具体用如下:

  • 全局索引空间为(Gx, Gy)
  • 工作组空间为(Wx, Wy)
  • 局部索引空间为(Lx, Ly)
  • 全局坐标(gx, gy)
  • 工作组索引(wx, wy)
  • 局部坐标(lx, ly)

则有

// 工作组大小
Lx = Gx / Wx
Ly = Gy / Wy

// 工作组id与局部id转换为全局id
gx = wx * Lx + lx
gy = wy * Ly + ly

// 全局id转换为工作组id与局部id
wx = gx / Lx
wy = gy / Ly
lx = gx % Lx
ly = gy % Ly

在opencl的kernel内部获取这些信息:

int g0 = get_global_id(0);
int l1 = get_local_id(1);
int L0 = get_local_size(0);
int w1 = get_group_id(1);



Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • Qwen3-Next:下一代MoE模型架构解析
  • 端侧LLM硬件系列(一):内存带宽
  • CoreML踩坑记:慎用Conv1D
  • 深入 gpt-oss-20b 架构:MNN 移动端性能实践
  • 混元端侧模型分析