OpenCL:令人困惑的结果 local_item_size
OpenCL: Confusing Results according 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,我需要了解发生了什么?
1000 X 1000 矩阵 & local_item_size = 16 : INVALID_WORKGROUP_SIZE.
1000 X 1000 矩阵 & local_item_size = 8 : 可行 :).
1000 X 1000 矩阵 & local_item_size = 10:可行 :)(8 时的执行时间更好)。
10000 X 10000 矩阵 & local_item_size = 8 或 16:CL_OUT_OF_RESOURCES.
提前致谢,
关于你的第二个问题,原因如下:
- 1000 / 8 = 125,好的
- 1000 / 16 = 62.5,错了! INVALID_WORKGROUP_SIZE
- 1000 / 10 = 100 可以,但是 10 和 10 的倍数永远不会完全使用 GPU 内核。
- IE:如果你有 16 个 warp,则浪费 6 个,如果你有 32 个,则浪费 2 个,依此类推。
- 10000x10000 = 400MB(至少,如果使用浮点数)仅用于输入,所以有些东西对于内存来说太大了,因此 CL_OUT_OF_RESOURCES
我的代码就像二维矩阵乘法 (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,我需要了解发生了什么?
1000 X 1000 矩阵 & local_item_size = 16 : INVALID_WORKGROUP_SIZE.
1000 X 1000 矩阵 & local_item_size = 8 : 可行 :).
1000 X 1000 矩阵 & local_item_size = 10:可行 :)(8 时的执行时间更好)。
10000 X 10000 矩阵 & local_item_size = 8 或 16:CL_OUT_OF_RESOURCES.
提前致谢,
关于你的第二个问题,原因如下:
- 1000 / 8 = 125,好的
- 1000 / 16 = 62.5,错了! INVALID_WORKGROUP_SIZE
- 1000 / 10 = 100 可以,但是 10 和 10 的倍数永远不会完全使用 GPU 内核。
- IE:如果你有 16 个 warp,则浪费 6 个,如果你有 32 个,则浪费 2 个,依此类推。
- 10000x10000 = 400MB(至少,如果使用浮点数)仅用于输入,所以有些东西对于内存来说太大了,因此 CL_OUT_OF_RESOURCES