【发布时间】:2011-04-11 11:59:59
【问题描述】:
我试图理解为什么来自Nvidia OpenCL SDK 的带有 256 个 bin 的 oclHistogram 示例在我的 AMD 的 HD5830 上不起作用。在 GTX 580 等 Nvidia 卡上运行没有问题(64 bin 示例也适用于 AMD 卡)。更多信息可以在OpenCL whitepaper 和CUDA whitepaper 中找到。这个例子也是discussed here,这是我的最后一个帖子,但我还没有得到答案。
据我所知:在 Nvidia 卡上,我们有 16 KB 的本地内存,在 AMD 上只有 8 KB。所以直方图计算应该适合两张卡:
6 warps (192 threads) * 256 counters * 4 bytes per counter == 6KB
在 GTX580 上,我们也可以使用 16 个 Warp 和 16 个子直方图,但子直方图必须在最后合并,这是昂贵的。因此,仅使用 6 个 warp 比使用 16 个 warp 更快。
AMD HD5830 卡必须有另一个限制,因为它不能与它一起使用。
【问题讨论】:
-
尝试将工作组大小从 256 减少到 64,这有助于我运行 nBody 示例。
标签: opencl