我为内核选择了每块(128个块)64个或更多线程,以将两个大小为8192的矩阵乘以8192。我得到的只是矩阵中的0。
你能告诉我原因吗?
__global__ void MatrixMulKernel (double* M, double* Q, double* P, int Width) {
int Row = blockIdx.y*blockDim.y+threadIdx.y;
// Calculate the column index of P and N
int Col = blockIdx.x*blockDim.x+threadIdx.x;
if ((Row < Width) && (Col < Width)) {
double Pvalue =0;
for (int k =0; k < Width; ++k) {
Pvalue += M[Row*Width+k]*Q[k*Width+Col];
}
P[Row*Width+Col] = Pvalue;
}
}
答案 0 :(得分:-2)
问题已解决。我超出了tesla40c的每个线程的块数,即1024。因此出现了问题。通过在x中发射64和在y中发射64,它的限制已超出。