我有一個附有2個cuda卡的桌面,我嘗試通過將一些斷點放入內核行來調試cuda代碼。不過,調試器僅顯示內核函數的入口和終端。它沒有提供在內核函數體上加載的能力。它只是無視。我已經讀過,要調試GPU內核,您需要將代碼運行到當前系統未使用的圖形卡上。在此基礎上,我還嘗試通過將我的活動GPU設置爲第二個(未由系統使用)來運行調試器,但仍然調試器忽略內核主體。我如何解決這個問題,使用CUDA調試器?否則,編寫複雜的cuda內核是非常痛苦的。在Ubuntu Nsight上調試cuda內核代碼?
可能與當前的304驅動程序版本相關聯,位於bumblebee optimus卡上?
您使用的是cuda-gdb嗎?還是Nsight EE?你正在編譯與-G開關?嘗試在內核入口處設置一個斷點(即發出'break mykernel'命令或任何內核名稱),然後查看是否在命中該斷點後,可以在內核代碼中設置斷點。 cuda-gdb手冊還提供了可以嘗試的示例練習。 – 2013-04-28 15:33:50
使用cuda-gdb作爲Nsight的默認設置。我也試着直接用cuda-gdb在終端上調試它,但仍然是同樣的問題。 – erogol 2013-04-28 15:53:00
如果您嘗試了我的建議,我無法從您的回覆中得知。你有沒有嘗試在內核名稱處設置一個斷點,然後運行,直到遇到該斷點,然後在內核中設置斷點?我建議在不驅動顯示器的GPU上執行此操作,並配置該GPU以便X不使用它(即不會顯示在「xorg.conf」文件中)。 – 2013-04-28 20:45:35