Я нахожусь в процессе преобразования этого последовательного вычисления в вычисление CUDA. Это вычисление представляет собой двумерную релаксацию Якоби на сетке NxN, где N неизвестно. N равномерно делится на 32.
Jacobi(float *a,float *b,int N){
for (i=1; i<N+1; i++){
for (j=1; j<N+1; j++) {
a[i][j]=0.8*(b[i+1][j]+b[i+1][j]+b[i][j+1]+b[i][j+1]);
}
}
}
Я распараллеливаю внешние два цикла, и каждый поток должен вычислять только один элемент. Цель состоит в том, чтобы распараллелить его, чтобы использовать циклическое распределение в измерениях x и y. Может ли кто-нибудь помочь мне в реализации Jacobi_GPU, который имеет соответствующие функции индексации в CUDA, что приводит к следующему распределению?
dim3 dimGrid(N/32,N/32);
dim3 dimBlock(32,32);
Jacobi_GPU<<<dimGrid,dimBlock>>>(A,B,N)