2014-01-25 16 views
0

我目前正在嘗試調試MSVS2012 Ultimate中的一些設備代碼。我想在我的代碼中指出一個斷點,並且只有在hitcount高於某個值時才設置斷點。我看到了如何通過設置斷點並向其添加條件來實現這一點,但是當我使用CUDA進行調試時,它會在第一次迭代時停止並像非條件斷點一樣進行。計數不會增加。我覺得奇怪的是,斷點的命中,但hitcount並沒有增加。有什麼建議麼?CUDA應用程序中的斷點計數

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

     do 
     { 
      stuff 
     } while (condition); 

    } 

} 
+0

對不起,應該提到我幾分鐘前在CUDA 5.5和nSight 3.2.2上。與3.2.1相同。 :( –

回答

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編程指南中有關斷言的部分。

+0

謝謝,這只是我需要它,我只是走出斷言,看看我的變量的值,非常有幫助。 –