如何确定内核是内存绑定还是计算绑定?

时间:2011-10-20 17:00:18

标签: cuda

我认为我的内核是内存绑定的(因为大多数GPGPU代码是内存限制的),但我实际上并不确定。我怎么能为自己找到它。可能必须使用视觉分析器,因为它取决于使用的GPU。

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

澄清

我更喜欢一般的“规则”如何确定限制因素,但在我的特殊情况下,您可以在此处找到有关我的内核的详细信息:Using `overlap`, `kernel time` and `utilization` to optimize one's kernels

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

没有任何源代码修改的好技巧可用于使用计算能力2.0及更高版本编译的代码(基于answer here

使用“--use_fast_math”标志可以轻松增加\降低计算压力。

  • 如果设置此标志会产生较大的加速,则表示计算绑定内核。

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

答案 2 :(得分:0)

即使有一个已接受的答案,我也会在答案中提出答案,这个问题已经过去了。

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

如果您不确定从哪里开始,可以使用一个很棒的工具。