当M不等于N时,平铺矩阵乘法?

时间:2017-04-22 19:09:15

标签: c algorithm matrix-multiplication

我遇到的每个算法总是使用方阵来平铺矩阵乘法。当两个矩阵的大小完全不同时,是否可以平铺MMM?

这是我目前正在使用的代码,我想尝试添加平铺以提高我的性能。

#pragma omp parallel shared(x, R, r, row) private(i, j, k, temp)
{
    #pragma omp for
    for (k = 0; k < x->n; k++){
        for (i = row; i < row+2; i++){
            temp = x->v[i*x->n+k];
            for (j = 0; j < R->n; j++){         
                r[i*R->n+j] += temp*R->v[k*R->n+j];
            }
        }
    }
}

变量x,R和r​​是矩阵结构,其中m,n和v被定义为保存大小和数据。矩阵x是一个旋转矩阵,因此它是一个带有两行数据的单位矩阵。这就是为什么我只将乘法限制为两行。

Matrix x的大小为2xn,R的大小为mxn。注意:已定义x的n始终为R的m,因此没有大小不匹配。

是否可以平铺这种不匹配的矩阵乘法并仍能获得性能提升?

0 个答案:

没有答案
相关问题