Jos*_*ega 24 c c++ cuda gpu-programming
我目前正在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;
}
Run Code Online (Sandbox Code Playgroud)
我很想知道Ad和Bd是否是我认为的,看看是否真的被调用了.
M. *_*its 74
CUDA现在printf
直接在内核中支持s.有关形式描述,请参阅" CUDA C编程指南"的附录B.16 .
Tom*_*Tom 17
编辑
为了避免误导人们,正如M. Tibbits所指出的,printf可用于任何计算能力2.0及更高版本的GPU.
编辑结束
你有选择:
关于你的代码片段:
Matrix
通过指针传递结构(即cudaMemcpy
它们到设备,然后传入设备指针),现在你没有问题,但如果函数签名变得非常大,那么你可能会达到256字节的限制