cuda中的矩阵行和

时间:2016-04-26 08:28:41

标签: matrix cuda

我正在尝试计算cuda中的矩阵行和。因为cuda用于并行处理所以不需要循环。我已完成矩阵求和操作,代码为

__global__ void MatAdd(int A[][N], int B[][N], int C[][N]){
int i = threadIdx.x;
int j = threadIdx.y;

C[i][j] = A[i][j] + B[i][j];
}

但在相同的情况下无法将其转换为矩阵行和。我试过以下代码

__global__ void rowSums(float* matrix, float* sums, int rows, int cols)
{
int row = blockIdx.y * blockDim.y + threadIdx.y;
int col = blockIdx.x * blockDim.x + threadIdx.x;
        if (i < N && j < M)
              sums[j] += matrix[i][j];

 } 

1 个答案:

答案 0 :(得分:0)

只要矩阵大小足够小(比blockdim x gridDim)

,您的第一个代码示例看起来是正确的

对于第二个,你的矩阵需要是一个浮动**,因为你取消引用它两次。 然后你需要使用row和col变量,或者将它们重命名为i和j。