【问题标题】:Breakpoint hit-count in CUDA applicationCUDA 应用程序中的断点命中计数
【发布时间】:2014-01-25 23:03:45
【问题描述】:

我目前正在尝试在 MSVS2012 Ultimate 中调试一些设备代码。我想在代码中指定的位置放置一个断点,并将其设置为仅在命中计数高于某个值时才中断。我通过设置断点并向其添加条件来了解如何执行此操作,但是当我使用 CUDA 进行调试时,它会在第一次迭代时停止并像非条件断点一样继续进行。命中数不会增加。我发现断点命中但命中数没有增加很奇怪。有什么建议吗?

__global__ void rkf5()
{
    for(int k = 0; k < numpoints; k++)
    {
        THIS IS WHERE I PUT MY BREAKPOINT.

        do 
        {
            stuff
        } while (condition);

    }

 }

【问题讨论】:

  • 对不起,我应该在几分钟前提到我在使用 CUDA 5.5 和 nSight 3.2.2。与 3.2.1 相同。 :(

标签: debugging visual-studio-2012 cuda


【解决方案1】:

如果您没有使用 CUDA 5.5 / nSight 3.2,请尝试升级。

一些早期版本的 CUDA 和 nSight 的发行说明说命中计数功能不起作用。但是,最新版本 (CUDA 5.5 / nSight 3.2) 的发行说明中并未提及这一点。

如果您仍然无法正常工作,您可以随时在设备代码中使用 assert 来解决此问题,例如:

assert(++my_hit_count != 100);

这将在断言为假时触发断点。仅在计算能力 >= 2.0 时受支持。有关详细信息,请参阅 CUDA C 编程指南中的断言部分。

【讨论】:

  • 谢谢,这正是我所需要的。我会跳出断言并查看变量的值。很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2010-10-18
  • 1970-01-01
  • 2017-07-15
相关资源
最近更新 更多