矩阵分块乘法

矩阵分块乘法
通常可以把一个矩阵分成多个块, 例如,

 (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];
                }
 
posted @   吴建明wujianming  阅读(311)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2023-10-07 半导体产业链各个模块分析
2022-10-07 谈谈DeepMind攻克50年数学难题-激光雷达-大芯片-动力电池
2021-10-07 TVM Operator Inventory (TOPI)简介
点击右上角即可分享
微信分享提示