- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白 clEnqueueNDRangeKernel() 中的 work_dim 是什么?
那么,work_dim=1 和 work_dim=2 有什么区别呢?
为什么工作项被分组到工作组中?
工作项或工作组是在设备上运行的线程(或两者都不是)?
先谢谢了!
最佳答案
work_dim
是 维数 为 clEnqueueNDRangeKernel()
执行。
如果您指定 work_dim = 1
,然后是 全局和 本地工作尺寸 是 一维 .因此,在内核内部,您只能访问 中的信息。第一维 ,例如get_global_id(0)
, 等等。
如果您指定 work_dim = 2
或 3
,那么您还必须指定 2 或 3维全局和 本地工作尺寸 ;在这种情况下,您可以在 中访问内核中的信息。 2 或 3维 ,例如get_global_id(1)
, 或 get_group_id(2)
.
在实践中,您可以在 中完成所有操作一维 , 但为了处理 二维 或 3D 数据,直接使用 可能更简单2/3 维核 ;例如,在 的情况下二维 数据,例如图像,如果每个线程/工作项处理单个像素,则每个线程/工作项可以处理坐标(x,y)
处的像素。 , 与 x = get_global_id(0)
和 y = get_global_id(1)
.
A 工作项是 线程 , 而 工作组是 工作项/线程组 .
我认为划分工作组/工作项与 GPU 和其他加速器(例如 Cell/BE)的硬件架构有关;您可以将工作组的执行映射到 GPU 流多处理器(在 NVIDIA 中)或 SPU(在 IBM/Cell 中),而相应的工作项将在 Stream 多处理器和/或 SPU 的执行单元内运行。拥有 work group size = 1
的情况并不少见如果您在 CPU 中执行内核(例如,对于四核,您将有 4 个工作组,每个工作组有一个工作项 - 尽管根据我的经验,工作组通常比 CPU 内核更多)。
检查 OpenCL引用手册,以及您正在编程的任何设备的 OpenCl 手册。 quick reference card也很有帮助。
关于opencl - NDRange 中的 Work_dim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6179471/
我正在尝试使用 OpenCL 复制图像: std::string kernelCode = "void kernel copy(global const int* image,
我不明白 clEnqueueNDRangeKernel() 中的 work_dim 是什么? 那么,work_dim=1 和 work_dim=2 有什么区别呢? 为什么工作项被分组到工作组中? 工作
我和我的同学第一次面对 OpenCL。正如预期的那样,我们遇到了一些问题。下面我总结了我们遇到的问题和我们找到的答案。但是,我们不确定我们是否做对了,所以如果你们能同时看看我们的答案和下面的问题,那就
我有一个使用 3 维 NDRange 调用的内核,但它只更改了输出缓冲区的一部分。 内核: __kernel void Kernel2( __global const float* K2BufIn,
我是一名优秀的程序员,十分优秀!