2011-02-04 137 views
1

我使用下面的参数我的模拟在GeForce GT 220卡 -OpenCL的行为---需要澄清

数的计算单元= 6

局部尺寸= 32

全球规模= 32 * 6 * 256 = 49152

(一切是一维的)

但在视觉分析器,我看每计算单元工作组的该数目=这意味着它只使用2个计算单元。这是为什么?我如何确保所有的计算单元都很忙?我的意思是,理想情况下,我希望每个计算单元的49152 /(32 * 6)= 256个工作组。我对这种行为感到困惑。

+0

我与Nvidia的分析器合作过,说实话,我不太相信它的输出。这是我能给你的唯一建议。 – dietr 2011-02-06 12:18:28

回答

1

您不应该在意计算单位,即onyl HW特定。 只需关心本地大小和全局大小,并尝试尽可能使用最大的本地大小。

可能发生的事情是,您指定了一个非常小的本地大小。每一组本地大小的线程都被加载到一个计算单元中。而且只运行32个线程效率不高。因此,加载垃圾会降低性能,并可能使计算单元闲置很多时间。

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