У меня есть задание, которое требует от меня генерации матрицы Redheffer на графическом процессоре с использованием Cuda.создание матрицы рефефферов с использованием cuda
A Redheffer matrix1 is a matrix where each entry a[i][j] is defined by
a[i][j] =
1 if j = 1,
1 if j is divisible by i
0 otherwise.
Вот мой код
#define SIZE = 20000
#define BLOCK_WIDTH 16
/* Launch the CUDA kernel */
int numBlocks = ceil(SIZE/BLOCK_WIDTH);
dim3 dimGrid(BLOCK_WIDTH,BLOCK_WIDTH,1);
dim3 dimBlock(numBlocks,numBlocks,1);
redhefferMatrix<<<dimGrid, dimBlock>>>(d_M, SIZE);
У меня есть код, чтобы проверить, если выход правильно, то вернуть сообщение об ошибке, когда значение матричного элемента вычисляется не является правильным. Когда я запускаю свою программу, я получаю эту ошибку.
GPU number 0 is assigned to this job
Row 0 column 5000 is incorrect. Should be:1 Is actually: 0
Моя логика для вычисления значений является
int Row= blockIdx.y*blockDim.y + threadIdx.y;
int Col= blockIdx.x*blockDim.x + threadIdx.x;
.
.
if(i < 20000 && j < 20000)
{
{
if(j == 1 || j % i == 0)
d_M[i*SIZE+ j] = 1;
else
d_M[i*SIZE+ j] = 0;
}
}
Может кто-нибудь дать мне представление о том, где я мог бы быть неправильно. Заранее спасибо.
Благодарим вас за разъяснение. Это помогло. – Lasantos