OpenCL:根据local_item_size

时间:2015-06-02 09:12:22

标签: c++ c matrix opencl

我的代码就像2d矩阵muliplication(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:WORKS:)(8更好的执行时间)。

  • 10000 X 10000矩阵& local_item_size = 8或16: CL_OUT_OF_RESOURCES

提前致谢,

1 个答案:

答案 0 :(得分:1)

关于你的第二个问题,这就是背后的原因:

  • 1000/8 = 125,确定
  • 1000/16 = 62.5,错了! INVALID_WORKGROUP_SIZE
  • 1000/10 = 100 ok,但10和10的倍数将永远不会完全使用GPU核心。
    • IE:如果你有16个经线,6个被浪费,如果你有32个,2个被浪费,等等。
  • 10000x10000 = 400MB(至少,如果使用浮点数)仅用于输入,因此内存变得太大,因此CL_OUT_OF_RESOURCES