0

我在安装了 2 个 M2050 卡的 SUSE Linux 机器上运行 CUDA 5.5,这两个卡都不用于运行 X11。我正在尝试通过使用 Nsight Eclipse 调试器专门仅使用设备 0 的内核。如果我在内核中设置(无条件)断点,调试器首先在块 0/线程 0 上中断,然后如果我继续执行,它将在不同块中看似随机的线程上再次在同一点中断 5 或 6 次,之前退出内核并继续下一个内核。内核中的程序执行正确并正确显示。主机代码调试没有问题。

如果我将相同的断点设为有条件的,如本文所述:

使用nsight进行调试

我看不出调试器的行为有什么不同。断点上的条件似乎被忽略了,调试器在退出内核之前会在 5 或 6 个随机线程上中断。这些行为对我来说似乎都没有多大意义。我认为无条件断点应该在线程 0 或所有线程上中断。而且我认为条件断点应该只在它所依赖的线程上中断。我已经查看了所有的 NVIDIA 文档、stackoverflow 等,此时似乎已经用尽了我的选择。我想知道是否有其他人看到过类似的行为或可能有一些指示。

4

1 回答 1

1
  1. 到达设备的每个新“批次”线程都会中断无条件断点。这是必需的,因此您可以探索所有线程。
  2. 由于一些技术问题,条件断点应该在你至少闯入内核一次之后设置。这将在 CUDA Toolkit 6.0 中修复。
于 2013-11-19T16:43:21.417 回答