OpenCL:根据local_item_size混淆结果

OpenCL: Confusing Results according local_item_size

本文关键字:结果 size item 根据 local OpenCL      更新时间:2023-10-16

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

My Hardware is: 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: WORKS:).

  • 1000 X 1000矩阵&

  • local_item_size = 10: WORKS:)(执行时间8时更好)。
  • 10000 × 10000矩阵&local_item_size = 8或16: CL_OUT_OF_RESOURCES

提前致谢

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

  • 1000/8 = 125, ok
  • 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