AMD HD5830上Nvidia的OpenCL oclHistogram

AMD HD5830上Nvidia的OpenCL oclHistogram,opencl,Opencl,我试图理解为什么来自AMD的带有256个存储箱的oclHistogram示例在我的HD5830上不起作用。在Nvidia卡(如GTX 580)上,也可以在AMD卡上运行64位示例。更多信息可在和中找到。这个例子也是,最后一篇帖子是我写的,但我还没有得到答案 据我所知:在Nvidia卡上我们有16 KB的本地内存,而在AMD上只有8 KB。因此直方图计算应适用于两种卡: 6次扭曲192个线程*256个计数器*4个字节/计数器==6KB 在GTX580上,我们也可以使用16个扭曲和16个子直方图,但

我试图理解为什么来自AMD的带有256个存储箱的oclHistogram示例在我的HD5830上不起作用。在Nvidia卡(如GTX 580)上,也可以在AMD卡上运行64位示例。更多信息可在和中找到。这个例子也是,最后一篇帖子是我写的,但我还没有得到答案

据我所知:在Nvidia卡上我们有16 KB的本地内存,而在AMD上只有8 KB。因此直方图计算应适用于两种卡:

6次扭曲192个线程*256个计数器*4个字节/计数器==6KB

在GTX580上,我们也可以使用16个扭曲和16个子直方图,但子直方图必须在最后合并,这是昂贵的。因此,仅使用6个扭曲比使用16个扭曲更快


AMD HD5830卡必须有另一个限制,因为它不能使用它。

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

尝试将工作组大小从256减少到64,这有助于我运行nBody示例。