C M不'时的分片矩阵乘法;t等于N?
我遇到的每一种算法都使用一个平方矩阵来平铺矩阵乘法。当两个矩阵的大小完全不同时,是否可以平铺MMM 这就是我目前正在使用的代码,我想尝试添加平铺来提高性能C M不'时的分片矩阵乘法;t等于N?,c,algorithm,matrix-multiplication,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++){
#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];
}
}
}
}
#pragma omp并行共享(x,R,R,row)私有(i,j,k,temp)
{
#pragma omp for
对于(k=0;kn;k++){
对于(i=行;i<行+2;i++){
温度=x->v[i*x->n+k];
对于(j=0;jn;j++){
r[i*r->n+j]+=temp*r->v[k*r->n+j];
}
}
}
}
变量x、R和R是矩阵结构,定义了m、n和v来保存大小和数据。矩阵x是一个旋转矩阵,因此它是一个单位矩阵,数据分为两行。这就是为什么我将乘法限制为仅两行
因此,矩阵x的大小为2xn,而R的大小为mxn。注:已定义x的n始终是R的m,因此没有大小不匹配
是否有可能平铺这种类型的不匹配矩阵乘法,并仍然获得性能增益