c++ - Opencl:确定最佳的 local_item_size

标签 c++ c matrix opencl

我的代码就像二维矩阵乘法 ( 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 传递给它),驱动程序将自动选择它。不能保证它会选择最佳尺寸,但值得一试。

关于c++ - Opencl:确定最佳的 local_item_size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30593848/

相关文章:

c++ - 处理鼠标事件 SFML

c++ - 如何在 cocos2d-x 2.1.4 中复制 Sprite 的 Sprite

c - GCC链接器不链接标准库

c++ - 将 C++ 特征矩阵传递给 Matlab mex 输出

python - Python 中的二维数组是否存在别名?

math - SVG 矩阵到旋转度数

c++ - 如果我不给它提供命令行参数,为什么我的程序会崩溃?

c++ - 火力地堡 - future ::错误消息()

c - 从字符数组中提取一组字符/字符串

c - 移植 InterlockedExchange,仅使用 GCC 内部函数