2011-10-17 166 views
3

當我嘗試調試任意CUDA應用程序時,例如來自Nvidia的GPU計算SDK 4.0的矩陣乘法或convolutionSeparable樣品,我總是得到相同的輸出:CUDA Nvidia NSight調試:「CUDA網格啓動失敗」


Parallel Nsight Debug 
CUDA grid launch failed: CUcontext: 2059192 CUmodule: 348912936 Function: _Z9matrixMulILi32EEvPfS0_S0_ii 
…… 
…… 

而且具有以下內容的文件被顯示出來:


    Parallel Nsight CUDA Debugger 

應用貝因g使用Nexus CUDA調試器進行調試,無法找到任何關聯的源代碼 。這可能是由於多種原因:

1)CUDA尚未初始化。 確保cuInit已被調用,並返回成功的結果。

2)沒有創建CUDA上下文。 創建上下文後,可以在上下文中檢查內存。每個上下文 在Visual Studio線程視圖中顯示爲單個「線程」。 (調試| Windows |主題)

3)在任何情況下都沒有活動的CUDA網格。 必須啓動一個網格才能達到斷點。

4)您已在Visual Studio線程視圖中選擇「默認上下文」。 當上下文沒有可用的實際CUDA 時,此上下文是一個佔位符。它不顯示真實的數據。

5)沒有加載CUDA模塊。 您可以通過顯示 Visual Studio模塊視圖來查看哪些模塊已加載到每個CUDA上下文中。 (Debug | Windows | Modules)

6)未找到加載的.cubin的符號。 該模塊需要使用調試信息進行構建。建築時請指定 -G0開關。

7)運行內核時網格啓動失敗。


相應的「.CU」文件中的每個斷點在運行過程中完全被忽略。當我只運行應用程序時,如果沒有Nsight Debugging,程序將毫無問題地執行。

我能做些什麼來解決這個問題?

我的設置:

  • 1xIntel GPU和1x NV 570GTX,我想使用本地調試選項
  • 贏7專業版64位
  • 開發信封:VS2008或VS2010
  • CUDA 4.0 & Parallel Nsight 2.0
  • NV驅動程序Vers。:285。38
  • WPF是禁用
  • TDR被禁用
  • Windows上運行的基本模式(無航空)
  • 項目Propertys:CUDA運行時API - > GPU->生成GPU調試信息 - >是(-G0)

回答

2

首先,您需要確保您的顯示器由英特爾集成顯卡驅動,而不是NVIDIA GPU。這是因爲當你在CUDA代碼中出現斷點時,你會拖延整個GPU,所以如果使用相同的GPU進行顯示,那麼你的系統會自然鎖定。

注意,hardware requirements並行Nsight表明你需要兩個支持的GPU的,而你只有一個,但if I understand correctly有可能使用非英特爾GPU顯示(我沒試過)。

假設上述工作正常,您應該首先嚐試使用Parallel Nsight附帶的示例。您可以在開始菜單的Parallel Nsight菜單組中找到它們。

+0

我的顯示器目前由intel設備驅動,這肯定是因爲否則這會導致一些其他NSight錯誤消息。我知道,因爲我已經嘗試過了。據我所知,需要一個額外的任意圖形設備,在我看來這聽起來很合理。 – Impulse

+0

@Impulse您是否嘗試過Parallel Nsight示例(而不是CUDA SDK示例)? – Tom

+0

是的,我嘗試過SDK樣本,並且使用Parallel Nsight提供了matrixMul樣本。 輸出爲這個特殊的例子: 並行Nsight調試 CUDA網格發射失敗:CUcontext:46427088 CUmodule:139693888功能:_Z9matrixMulPfS_S_ii – Impulse

2

CUDA Grid Launch有各種各樣的原因。這可能是訪問超出其分配的大小的數組。 x86世界中的什麼被稱爲分段錯誤。我通過有選擇地註釋掉正在測試的內核部分來調試這些錯誤,直到錯誤消失。 (我們以前稱之爲狼圍欄調試)。網格啓動失敗的另一個原因是如果內核執行時間太長(1或2秒)。

調試器沒有幫助的原因是調試器只停止1塊中的1個線程!您的訪問錯誤即將到來。也不能使用printf來查找錯誤,因爲在網格啓動失敗的情況下輸出不會返回。

+1

但是奇怪的是,內核是沒有調試選項normaly運行。 – Impulse

0

對此的答案絕對是使用正確的驅動程序來安裝Parallel NSight。對於最新版本(當前爲2.1 RC2),這是驅動程序版本285.86。對於當前的穩定版本2.0,這是驅動程序版本270.81,另一個海報提到。

1

要在已有的答案之上添加潛在解決方案,避免錯誤的一種方法是使用管理員權限運行NSight監視器。

+0

這對我來說沒有任何改變,調試失敗,而沒有調試內核的執行沒有問題。 – user2965003