gpt4 book ai didi

opencl - NDRange 中的 Work_dim

转载 作者:行者123 更新时间:2023-12-04 13:24:40 25 4
gpt4 key购买 nike

我不明白 clEnqueueNDRangeKernel() 中的 work_dim 是什么?

那么,work_dim=1 和 work_dim=2 有什么区别呢?
为什么工作项被分组到工作组中?
工作项或工作组是在设备上运行的线程(或两者都不是)?

先谢谢了!

最佳答案

work_dim维数 clEnqueueNDRangeKernel()执行。

如果您指定 work_dim = 1 ,然后是 全局本地工作尺寸 一维 .因此,在内核内部,您只能访问 中的信息。第一维 ,例如get_global_id(0) , 等等。

如果您指定 work_dim = 23 ,那么您还必须指定 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com