我有一些cuda代碼運行通過一些FFT和其他數學運算,它可以在用戶請求的2^n塊上運行。第一次運行時代碼運行良好,但運行足夠長時間後開始失敗。最終,如果我運行的任何塊大小大於2^ll,我都將無法返回數據(全爲零)。我已經通過修改內核代碼和我能告訴內核沒有執行完成了一些測試。我試圖找出爲什麼我的代碼在大塊大小的多次迭代後停止生成數據。cuda內核不執行或返回錯誤
這個問題乍一看是內存泄漏。我知道我必須運行多次處理才能導致錯誤。起初只有大的塊大小纔會停止工作,但是當我運行更多的迭代時,更小的塊大小也會開始失敗。我不確定問題的原因是內存是我的代碼將工作的塊大小低於2^11,無論我運行多少次迭代。如果這是一個簡單的內存泄漏,我會期望症狀逐漸變得更糟,直到我無法訪問卡上的任何內存。我也注意到較大的塊大小(大致相當於每個線程使用的內存量)往往會導致程序更快失敗。處理塊的數量增加(即Cuda線程的數量)似乎不會影響代碼何時開始失敗。
據我所知,沒有錯誤代碼正在返回,內核似乎根本沒有執行。
任何人都可以建議我是什麼導致這個問題?我會解決如何調試在GPU上運行的代碼或監視GPU內存可用性的任何見解。
'cuda-gdb'並檢查您的返回狀態 – Anycorn 2011-06-03 19:58:44
cuda 4.0?或舊版本? – 2011-06-03 21:44:41
我應該使用最新版本的cuda。我的術語也很sl sl。我正在增加我的塊大小,而不是我的線程大小。 – drew 2011-06-06 13:43:42