OpenCL中全局工作量是否需要是工作组大小的倍数?

Jun*_*ier 10 gpu gpgpu matrix opencl

您好:OpenCL中全局工作量(维度)是否需要是工作组大小(维度)的倍数?

如果是这样,是否有一种处理矩阵的标准方法而不是工作组维度的倍数?我可以想到两种可能性:

动态地将工作组维度的大小设置为全局工作维度的因子.(这会产生查找因子的开销,并可能将工作组设置为非最佳大小.)

将全局工作的维度增加到工作组维度的最接近倍数,保持所有输入和输出缓冲区相同但检查内核中的边界以避免segfaulting,即对所需输出超出工作项的任何操作.(这似乎是更好的方式.)

第二种方式会起作用吗?有没有更好的办法?(或者它是否没有必要,因为工作组维度不需要划分全球工作维度?)

谢谢!

Jun*_*ier 7

Thx为链接Chad.但实际上,如果您继续阅读:

如果指定了local_work_size,则global_work_size [0],... global_work_size [work_dim - 1]中指定的值必须可以被local_work_size [0],... local_work_size [work_dim - 1]中指定的相应值整除.

所以,是的,本地工作规模必须是全球工作规模的倍数.

我也认为将全局工作大小分配到最接近的倍数并注意边界应该有效,我会在我尝试它时发表评论.