【问题标题】:OpenCL oclHistogram from Nvidia on AMD HD5830Nvidia 在 AMD HD 5830 上的 OpenCL ocl 直方图
【发布时间】:2011-04-11 11:59:59
【问题描述】:

我试图理解为什么来自Nvidia OpenCL SDK 的带有 256 个 bin 的 oclHistogram 示例在我的 AMD 的 HD5830 上不起作用。在 GTX 580 等 Nvidia 卡上运行没有问题(64 bin 示例也适用于 AMD 卡)。更多信息可以在OpenCL whitepaperCUDA 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


【解决方案1】:

在 OpenCL 的介绍中(我不记得是哪个 :-() 提到不打算使用整个内存。一些额外的数据可能会被放入内存中,这是程序员无法控制的。编译器可能会使用本地内存进行优化,其他内核也可能分配内存。一般建议不要使用超过一半的内存。也许这就是这里发生的事情。

【讨论】:

    猜你喜欢
    • 2012-07-03
    • 2012-02-16
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2017-03-20
    相关资源
    最近更新 更多