下载请点击:矩阵按行(列)求和CUDA并行算法
通过矩阵按行求和与按列求和两个示例介绍CUDA并行算法设计的思路,希望对大家有所帮助。很多公司CUDA工程师面试也会考察这个题目。
1. 矩阵按行求和
矩阵A[M][N],B[M];
B[i] =A[0]+A[1]+...+A[N-1];
串行代码:
#define A(i)(j) A[(i)*N+(j)]
void sum_row(T *A,T*B,int M,int N)
{
int i,j;
T tmp;
for(i=0; i<M; i++)
{
tmp=0;
for(j=0; j<N; j++)
tmp += A(i)(j);
B[i] = tmp;
}
}
CUDA程序设计:
每个block处理一行数据的求和,M设置为block数目,即
dim3 dimBlock(BLOCKSIZE, 1, 1);
dim3 dimGrid(M, 1, 1);
__global__ void sum_row_kernel(