Я выбрал 64 или более числа потоков на блок (128 блоков) для своего ядра, чтобы умножить две матрицы размером 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;
}
}