11
當我調用一個參數設置不正確的內核時(例如,每個塊有512個以上的線程),或者內部操作需要比我的設備提供的更多的操作時(例如太多寄存器)內核根本不被執行。沒有異常或返回值來表示發生了什麼。驗證內核的方式是在CUDA中執行的
我想知道是否有方法來驗證內核是否被執行。
當我調用一個參數設置不正確的內核時(例如,每個塊有512個以上的線程),或者內部操作需要比我的設備提供的更多的操作時(例如太多寄存器)內核根本不被執行。沒有異常或返回值來表示發生了什麼。驗證內核的方式是在CUDA中執行的
我想知道是否有方法來驗證內核是否被執行。
試試這個
kernel<<<blocks, threads>>>(params);
cudaError_t err = cudaGetLastError();
if (err != cudaSuccess)
printf("Error: %s\n", cudaGetErrorString(err));
這應該給你出了什麼問題詳細的錯誤。
編輯:下面是關於如何在CUDA正確檢查錯誤更詳細的解答:
而且你可以從內核打印的東西。這對於調試可能很有用。
謝謝這是我的問題! – nirvanaswap
非常感謝! – Raza