openCL行为---需要澄清

时间:2011-02-04 01:58:46

标签: opencl

我在Geforce GT 220卡上使用以下参数进行模拟 -

计算单位数= 6

本地尺寸= 32

全局大小= 32 * 6 * 256 = 49152

(一切都是一维的)

但是在Visual Profiler中,我看到每个计算单元的工作组数量= 768.这意味着它只使用了2个计算单元。这是为什么?如何确保所有计算单元都忙?我的意思是,理想情况下,我希望每个计算单元有49152 /(32 * 6)= 256个工作组。我对此行为感到困惑。

1 个答案:

答案 0 :(得分:1)

您不应该关心计算单位,即onyl HW特定的。 只需关注本地大小和全局大小,尽量使用最大的本地大小。

可能发生的是,您指定的本地大小非常小。每组本地大小的线程都在计算单元内加载。并且仅运行32个线程效率不高。因此,加载垃圾会降低性能,并且可能会使计算单元保持大量闲置时间。

我的推荐,使用非常高的本地大小。或者不要指定本地大小(OpenCL将选择最高的一个)