cuda gdb
編譯:nvcc -g -G -o foo foo.cu
啓動:cuda-gdb foo
列表:list(縮略的指令l,以查看源代碼第81行附近的指令行。 l 81
設置斷點:break 函數名 b office2007_kernel
break 文件:行號 b office2007_gpu.cu:60
運行:run 參數 r t1.txt
下一步:next,按enter執行上一步的next 縮略指令n
打印:print a,打印a的值 p blockIdx
(print /x x) p threadIdx
p gridDim
p blockDim
繼續運行:continue(c),在一個斷點之後繼續運行程序
監視某個表達式:watch block0
查看某一個線程的數據:thread <<<170>>>,線程號爲170 ???
cuda thread 10 可行
刪除斷點:delete b or d b
退出gdb:quit
CUDA-GDB提供了諸多CUDA專用的指令:
thread – 顯示現有重點主機和CUDA線程;
thread <<<(TX,TY,TZ)>>> - 轉換到在指定座標的CUDA線程
thread <<<(BX,BY),(TX,TY,TZ)>>> -轉換到在指定座標的CUDA塊和線程
info cuda threads – 顯示GPU上現有所有CUDA線程的全面總結
info cuda threads all – 顯示GPU上現有線程的列表。這個列表可能非常之長。
info cuda state – 顯示有關現有CUDA狀態的信息。
Next and step 指令的特殊語義:
在warp 等級,執行被推進,在同一個warp裏的所有線程,被當作現有CUDA線程,將進
行運算。
一個特殊情況就是:步入線程阻礙調用,__syncthreads(), 這就導致在阻礙之後立即
會設定一個隱式斷點。所有的線程都被延續到這個__syncthreads()之後的斷點。