矩阵分块乘法 通常可以把一个矩阵分成多个块, 例如,
(6-4)
可以将其划分为 4个块:(6-5)
(6-6)
分块后的矩阵记为: (6-7) 分块矩阵乘法如下所示:(6-7)
划分不一定需要完全等间隔, 只需要满足子矩阵乘法规则即可, 如图6-27所示。 图6-27 子矩阵划分不一定需要完全等间隔, 只需要满足子矩阵乘法规则 给定一个的矩阵切分为 行 列。(6-8)
另一个的矩阵切分为行列。(6-9)
则它们的乘积计算如下:(6-10)
相应的乘法循环,代码如下。 for (int m = 0; m < M; m += Mtile) //在M维上迭代for (int n = 0; n < N; n += Ntile) //在N维上迭代
for (int k = 0; k < K; ++k)
for (int i = 0; i < Mtile; ++i) // 计算一个图块
for (int j = 0; j < Ntile; ++j) {
int row = m + i;
int col = n + j;
C[row][col] += A[row][k] * B[k][col];
} 标签:分块,int,矩阵,乘法,col,row From: https://www.cnblogs.com/wujianming-110117/p/18449868