首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCL clEnqueueNDRangeKernel work_dim与global_work数组元素

OpenCL clEnqueueNDRangeKernel work_dim与global_work数组元素
EN

Stack Overflow用户
提问于 2015-11-08 19:42:31
回答 1查看 369关注 0票数 0

我是OpenCL的新手,我试着理解这段代码:

代码语言:javascript
复制
size_t global_work1[3]  = {BLOCK_SIZE, 1, 1};
size_t local_work1[3]  = {BLOCK_SIZE, 1, 1};

err = clEnqueueNDRangeKernel(cmd_queue, diag, 2, NULL, global_work1, local_work1, 0, 0, 0);

因此,在指定内核的clEnqueueNDRangeKernel 2维(work_dim字段)中,这意味着:

  • 维度0内核的线程数等于BLOCK_SIZE,并且只有一个组(我猜可以用这种方式计算组数=> ( global_work1[0] ) / ( local_work1[0] ) )。
  • 维度1内核的线程数等于1,并且只有一个组。

以及为什么当三个维度是global_work1local_work1中的元素时,队列指令中指定的维度为2。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-09 11:16:14

您正在告诉CL:“在这个队列中,使用2D和这些全局/本地大小运行这个内核”

CL只是得到了论点的前两个维度,而忽略了第三个维度。

关于一维和二维的区别。根本就没有。由于OpenCL内核作为1D启动,在get_global_id(1)get_global_id(2)调用中不会失败。他们只会返回0。因此,除了暗示内核可能支持更大的二维参数(即: 512x128)之外,没有任何区别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33598204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档