Parallel processing OpenCL中完全独立计算的工作尺寸

Parallel processing OpenCL中完全独立计算的工作尺寸,parallel-processing,opencl,gpgpu,Parallel Processing,Opencl,Gpgpu,我有一个2D矩阵,我想通过应用一个函数来修改每个值,这个函数只依赖于矩阵中的坐标和编译时设置的值。由于每次计算之间不需要同步,因此在我看来,工作组的大小实际上可能是1,并且工作组的数量等于矩阵中的元素数量 我的问题是,这是否真的会产生预期的结果,或者是否有其他力量在这里发挥作用,可能使这些值的不同设置更好?我的建议:只需将全局大小设置为2D矩阵大小,将局部大小设置为NULL。这将使编译器为您选择最佳的局部大小 在您的特定情况下,局部大小不需要有任何形状。事实上,任何价值观都会起作用,但性能可能会

我有一个2D矩阵,我想通过应用一个函数来修改每个值,这个函数只依赖于矩阵中的坐标和编译时设置的值。由于每次计算之间不需要同步,因此在我看来,工作组的大小实际上可能是1,并且工作组的数量等于矩阵中的元素数量


我的问题是,这是否真的会产生预期的结果,或者是否有其他力量在这里发挥作用,可能使这些值的不同设置更好?

我的建议:只需将全局大小设置为2D矩阵大小,将局部大小设置为NULL。这将使编译器为您选择最佳的局部大小


在您的特定情况下,局部大小不需要有任何形状。事实上,任何价值观都会起作用,但性能可能会有所不同。您可以为不同的硬件手动调整它。但是让编译器为您完成这项工作更容易。而且它更便于携带。

Hmm,这会对获取整体矩阵中的坐标产生什么影响。get_global_id()将始终返回全局id。无论本地大小如何。get_local_id()将返回本地id,它取决于编译器选择的本地大小。在这种情况下,可以使用get_local_size()获取运行时使用的本地大小。但是,您声明您的工作项不需要本地同步,因此根本不需要本地同步。