Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix cuda中的矩阵行和_Matrix_Cuda - Fatal编程技术网

Matrix cuda中的矩阵行和

Matrix cuda中的矩阵行和,matrix,cuda,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* mat

我试图在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];

 } 
\uuuu全局\uuuuu无效行和(浮点*矩阵、浮点*和、整数行、整数列)
{
int row=blockIdx.y*blockDim.y+threadIdx.y;
int col=blockIdx.x*blockDim.x+threadIdx.x;
if(i
只要矩阵大小足够小(比blockdim x gridDim小),您的第一个代码示例看起来是正确的

对于第二种情况,您的矩阵需要是一个float**,因为您取消了对它的引用两次。
然后需要使用行和列变量,或者将它们重命名为i和j

你有实际问题要问吗?我想问一下在jcuda中矩阵行和应该怎么做。。