2011-10-20 28 views
1

我认为我的内核是内存绑定的(因为大多数GPGPU代码是内存绑定的),但我实际上并不知道。我怎么能为自己找到它。可能必须使用视觉轮廓仪,因为它取决于使用的GPU。如何找出内核是内存绑定还是计算绑定?

如果在CUDA编程指南或其他NVIDIA文档中对其进行了说明,请不要犹豫,只是发布带有页码的链接,以便我自己阅读它。

澄清

我宁愿是一般性的“规则”如何确定的限制因素,但在我的特殊情况下,你可以找到我的内核这里的细节:Using `overlap`, `kernel time` and `utilization` to optimize one's kernels

+0

您是否检查过CUDA占用率计算器的内核启动配置和属性?肯定会尝试。然后,分析也是一个好主意。源代码分析也很有用......你的算术强度是多少?您的全局内存访问是否合并?等等。 – Patrick87

回答

3

presentation从NVIDIA会谈关于通过修改源代码来选择性地禁用内核中的内存访问和算术运算,以确定其中一个是否限制了您的性能。

1

一个很好的特技无需任何修改源代码可用于与使用“--use_fast_math”标志可以很容易地增加\减少计算压力计算能力2.0及以上(基于answer here

编译的代码。

  • 如果设置此标志会带来很大的加速,那么这将表示一个计算限制的内核。

  • 如果设置此标志几乎没有加速,这将表明一个平衡\内存绑定的内核。

0

虽然我会在一个答案,即使有一个接受的答案,这个问题是旧的。

我的代码有类似的问题,虽然当时我不知道它。 我运行了Nvidia Visual Profiler(nvvp)并分析了我的程序。我发现Profiler发现我的程序在某种程度上受到了限制,并提出了一些建议。

一个伟大的工具,如果你不确定从哪里开始使用。