CUDA分析器相当粗糙,提供的有用信息不多。如果您已经选择了最佳算法,严肃微调代码的唯一方法是深入了解GPU架构,特别是关于使用共享内存、外部内存访问模式、寄存器使用、线程占用率、线程束等方面。
也许您可以在这里发布您的内核代码并获得一些反馈?
nVidia CUDA开发者论坛也是解决此类问题的好地方。
我没有回答,因为我不是CUDA专家,而且其他答案已经很好了,如果代码已经非常接近最优,那么这些答案就足够了。但是根据我的经验,这是一个大的假设,验证一下也无妨。
要进行验证,您需要找出代码是否确实没有做任何它不必要做的事情。以下是我可以看到的验证方法:
在普通处理器上运行相同的代码,并获取stackshots,或使用Oprofile或RotateRight/Zoom等分析工具,以获得等效信息。
在CUDA处理器上运行它,并尽可能地执行相同的操作。
您要查找的是在调用堆栈上具有高占用率的代码行,如包含它们的堆栈样本的分数所示。这些是您的“瓶颈”。定位它们并不需要很多样本。