CUDA中的三维矩阵乘法

时间:2013-04-23 09:54:21

标签: matrix cuda implementation matrix-multiplication

我目前正在尝试在CUDA中实现Matrices的产品: 第一个矩阵是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];
}

}

1 个答案:

答案 0 :(得分:1)

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

z应该同时包含AB矩阵索引。乘法矩阵的规则说明:

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

所以我假设你的例子会像

一样

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

相关问题