2017-03-16 49 views
-3

最近我開始建立其上的Visual Studio 2015年使用CUDA 8.0因爲我必須使用動態並行我不得不compute_20,sm_20(defualt)更改代碼生成到compute_35,sm_35應用。因爲我改變了它,所以在內核中調用printf()不會打印任何東西。 你知道我可以使用Dynamic Parallelism並從內核打印內容的方式嗎?不能用printf CUDA內核中

也許值得一提的是,我的顯卡是的GeForce GTX 760

+4

這不是'printf'在內核,或動態並行(DP)和'printf'的問題。您的代碼中很可能有一個錯誤,導致內核無法成功運行。任何時候你在使用cuda代碼時遇到問題,最好使用[適當的CUDA錯誤檢查](http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for -errors-using-the-cuda-runtime-api)並用'cuda-memcheck'運行你的代碼。在父內核代碼中,錯誤檢查方法甚至可以用於DP案例中的子代啓動內核。 –

回答

3

你的GeForce GTX 760 is of compute capability 3.0,不支持動態並行。

編譯爲虛擬compute_35架構會阻止您的內核完全運行,因爲虛擬架構需要小於或等於設備的計算能力。因此你在內核中看不到printf()的輸出。

正如羅伯特Crovella上面已經說過,你會以適當的錯誤檢查注意到這一點。

+0

謝謝你的回答。我是CUDA的新手,所以我不知道所有這些事情。 – hegendroffer