2013-02-27 15 views
0

我是NSIGHT和CUDA的新手。我試圖在CUDA內核代碼中設置一個斷點,但我不能 - 斷點設置在內核的末尾,而不是在我想要調試的特定行上。我不能在CUDA內核中設置斷點

  • 我正在使用VS2010(MFC項目)與NSIGHT 2.2和CUDA 4.2。
  • 我在調試模式下編譯。
  • 我在不是「StratUp項目」的項目中使用CUDA。
  • 我使用「生成主機的調試信息」與「是(-g)」
  • 我使用「生成設備的調試信息」與「是(-G)」

我目前通過運行程序Menu-> Nsight->啓動CUDA調試。 當我嘗試在不同的項目(這是「StartUp項目」)上設置斷點時,我確實成功了。 關於如何讓斷點作用於特定行,而不是整個內核的任何建議?

+1

idoo您的程序如果在啓動應用程序後執行Debug> Break All並打開CUDA Info窗口(Nsight> CUDA Info> CUDA Info 1),並將下拉菜單設置爲t ool窗口到模塊你看到一個有效的模塊?您是否能夠在其中一個CUDA SDK樣本中創建斷點? – 2013-02-28 03:40:33

+1

您是否正在編譯設備調試信息? (nvcc的-G選項) – alrikai 2013-02-28 05:40:32

+0

是的,我願意。我用「是(-g)」來使用「生成主機調試信息」。我正在使用「生成設備調試信息」和「是(-G)」 – idoo 2013-02-28 07:50:41

回答

1

我用了太多的線程(256X256)來激活我的內核。 爲dim3線程(256,256) (內核< < < ...,線程>>>

-2

重要的是要注意,調試CUDA時,在設備代碼中設置斷點,將無法正常工作,如果在覈心數量的如果CUDA線程的數量不能被核心數量平均分配,某些內核在最後一次迭代中將不會達到設備代碼斷點數

+2

真的,你有什麼來源? – Madhatter 2014-06-12 15:46:27