理解OpenCL中的工作组、工作项的索引
==============================================================
目录结构
1、工作组和工作项
2、一维数据的工作组和工作项
3、深度学习中二维图像的池化(Pooling)
4、参考
==============================================================
关键词:OpenCL 工作组 工作项 深度学习池化Pooling
本文第1节介绍了OpenCL中的工作组和工作项,摘抄自书本《OpenCL编程指南》,因其在并行计算中比较重要,特别作为重点从理论到实践理解。
第2节以核函数为例,该函数的输出是输入数组数据的两倍,同时输出各个工作项对应的全局ID和局部ID。
第3节以深度学习中的池化为例,介绍了2维图像的工作组和工作项ID,以及简单提及3维内容的工作组和工作项ID。
1、工作组和工作项
OpenCL运行时系统会创建一个整数索引空间,索引空间是N维的值网格,N为1、2或3,又称NDRange。
执行内核的各个实例称为工作项(work-item)。工作项在整个索引空间中由一个全局ID标识,就像学校给学生用学号标识。
工作项组织为工作组(work-group)。全局索引为工作组指定了工作组ID(就像学校给班级编号),工作组内又为工作项指定了局部ID(就像班级里又为学生编了号)。
所以,如何通过坐标方式找到工作项。
(1)可以通过工作项的全局索引
(2)先通过工作组索引号,再通过局部索引号
使用(gx,gy)表示工作项的全局ID,全局索引工具大小为(Gx,Gy)。
所以工作项的坐标范围为[(0,Gx-1), (0,Gy-1)]。
用w表示工作组ID,W工作组各个维度的维度大小。
把一