2016-04-26 131 views
-2

我想要计算矩阵行总和在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]; 

} 
+0

你有问题要问吗? – talonmies

+0

我想问一下如何在jcuda中完成矩阵行和。 – user3804161

回答

0

你的第一个代码示例看起来是正确的,只要矩阵尺寸足够小(比blockdim X gridDim)

对于第二个,你的矩阵需要一个浮动**,因为你将它解引用了两次。 然后,您需要使用行和列变量,或者将它们重命名为i和j。