Opencl:确定最佳 local_item_size

Opencl: Determine the best local_item_size

我的代码就像二维矩阵乘法 (http://gpgpu-computing4.blogspot.de/2009/09/matrix-multiplication-2-opencl.html)。 矩阵的维度为(1000*1000 和 10000*10000 和 100000*100000)。

我的硬件是:NVIDIA Corporation GM204 [GeForce GTX 980](MAX_WORK_GROUP_SIZES:1024 1024 64)。

问题是:

什么是最好的 local_item_size 我可以使用?

size_t local_item_size[2], global_item_size[2];
global_item_size[0] = number_of_points; 
global_item_size[1] = number_of_points; 
local_item_size[0] = 10; 
local_item_size[1] = 10;

提前致谢,

在 nvidia 卡上,您应该使用 32 的倍数作为工作组中的总线程数(因此 8*8 应该没问题)。全局工作大小必须是每个维度中局部工作大小的倍数,因此也必须进行修改。

这可能也需要对内核代码进行一些修改,以处理超出范围的值(工作项可能多于数据)。

请注意,如果您未指定本地工作组大小(例如将 null 传递给它),驱动程序将自动选择它。不能保证它会选择最佳尺寸,但值得一试。