printf dentro de la función __global__ de CUDA

Actualmente estoy escribiendo una multiplicación matricial en una GPU y me gustaría depurar mi código, pero como no puedo usar printf dentro de una función del dispositivo, ¿hay algo más que pueda hacer para ver qué sucede dentro de esa función? Esta es mi función actual:

__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;
}

Me encantaría saber si Ad y Bd es lo que creo que es, y ver si esa función se llama realmente.

Respuestas a la pregunta(4)

Su respuesta a la pregunta