我目前正在尝试调试MSVS2012 Ultimate中的一些设备代码。我想在我的代码中指出断点,并将其设置为仅在hitcount高于特定值时中断。我看到如何通过设置断点并向其添加条件来实现此目的,但是当我使用CUDA进行调试时,它会在第一次迭代时停止并继续像非条件断点一样。 hitcount不会增加。我觉得奇怪的是断点击中但是hitcount没有增加。有什么建议吗?
__global__ void rkf5()
{
for(int k = 0; k < numpoints; k++)
{
THIS IS WHERE I PUT MY BREAKPOINT.
do
{
stuff
} while (condition);
}
}
答案 0 :(得分:1)
如果您没有使用CUDA 5.5 / nSight 3.2,请尝试升级。
某些早期版本的CUDA和nSight的发行说明说命中计数功能不起作用。但是,最新版本(CUDA 5.5 / nSight 3.2)的发行说明中未提及。
如果仍然无法开始工作,您可以随时使用assert
设备代码解决此问题,例如:
assert(++my_hit_count != 100);
当assert为false时,这将触发断点。仅在计算能力&gt; = 2.0时受支持。有关详细信息,请参阅“CUDA C编程指南”中的“断言”一节。