0

我目前正在尝试在 CUDA 中实现矩阵的产品:第一个矩阵是 3D 矩阵(N,M,Z),第二个是 2D 矩阵(M,L)。我看不出这个乘法的代码有什么问题。有人可以帮我解决这个问题吗?谢谢

这是我的内核:

__global__ void matrixMul(float * A, float * B, float * C,int N, int M, int Z, int L) {
int idx = blockIdx.x*blockDim.x + threadIdx.x;
int idy = blockIdx.y*blockDim.y + threadIdx.y;

for(int z=0; z<width; z++){
    C[idx*width+idy] +=  A[idy + idx*width ]*B[idx*width+idy+z*width*height];
}

}
4

1 回答 1

1

我看到的问题是行/列编号。

z应该在AB矩阵索引中。矩阵乘法规则规定:

(AB)ij = sum(k) Aik * Bkj

所以我假设你的例子会像

(AB)ij = sum(k,e) Aik * Bkje

于 2013-04-23T10:42:21.803 回答