新手求教opencl计算work group size和local size的问题

gg_664MT 2014-04-07 02:35:15
这两天在学习opencl,不理解里面的groupsize的概念,
kernelInfo.kernelWorkGroupSize和自己规定的groupsize是什么关系?前者如何得到的
我是学图像处理的,举个例子,如果我想算计算一个目标区域与搜索的区域的相关系数,
总共需要计算M*N个相关系数,那么NDRang定义的索引空间应该是M*N,那么work group size呢?
是和目标区域col*row大小一样吗?
[size=18px]

By the way,我看到有的文章上推荐计算相关系数时,把整个搜索区域的数据放到共享内存中
这种做法能够减少传送数据时间,那么如何让不同item的Kernel函数同时访问这块内存



...全文
1430 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcwyylcwyy 2014-04-07
  • 打赏
  • 举报
回复 1
groupsize是一个和显卡芯片硬件有点关联的概念,是一个计算子网格中同时运行多少workitem,有三个维度。另外共享内存是片上存储,有一定的大小限制,AMD一般为32k,NV的卡在CUDA中可以配置不同尺寸。共享内存是由一个group中workitem都能够访问且共享数据的存储空间。 group本身对应的是显卡芯片上一组计算单元组成的计算单位,具体的可以看看基础的CL书籍,理解一下显卡是如何进行计算的有助于理解groupsize。其一般和显卡一个计算组中的计算单元个数不一致,应是一个倍数关系。 相关系数的问题,一般情况下应该和col*row大小不一致,二维的NDRange中,groupsize也是二维,应该在行上能够整除M,列上能够整除N。 kernelInfo.kernelWorkGroupSize中的是每个维度上最多能运行多少个workitem。但每个维度不是乘数关系而是因子关系,也就是说一共能运行的workitem在CL上应该不超过256个,这256个好像要分配到三个维度上。

603

社区成员

发帖
与我相关
我的任务
社区描述
异构开发技术
社区管理员
  • OpenCL和异构编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧