[英]printf inside CUDA __global__ function
我目前正在GPU上編寫矩陣乘法並希望調試我的代碼,但由於我不能在設備函數中使用printf,我還能做些什么來查看該函數內部的內容。 這是我目前的功能:
__global__ void MatrixMulKernel(Matrix Ad, Matrix Bd, Matrix Xd){
int tx = threadIdx.x;
int ty = threadIdx.y;
int bx = blockIdx.x;
int by = blockIdx.y;
float sum = 0;
for( int k = 0; k < Ad.width ; ++k){
float Melement = Ad.elements[ty * Ad.width + k];
float Nelement = Bd.elements[k * Bd.width + tx];
sum += Melement * Nelement;
}
Xd.elements[ty * Xd.width + tx] = sum;
}
我很想知道Ad和Bd是否是我認為的,看看是否真的被調用了。
CUDA現在直接在內核中支持printf
。 有關形式描述,請參閱“ CUDA C編程指南”的附錄B.16。
編輯
為了避免誤導人們,正如M. Tibbits所指出的,printf可用於任何計算能力2.0及更高版本的GPU。
編輯結束
你有選擇:
關於你的代碼片段:
Matrix
結構(即cudaMemcpy
它們到設備,然后傳入設備指針),現在你沒有問題,但如果函數簽名變得非常大,那么你可能會達到256字節的限制 順便說說..
請參閱“CUDA C編程指南”的“格式化輸出”(當前為B.17)部分。
http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.