矩阵运算为何高效

来从计算机的角度解释一下矩阵运算为何高效:
(以下计算均为粗略估算,并未严格考虑运行过程中的各种因素)
假设AxB=C,其中A,B,C均为一亿乘一亿的二维矩阵
则Cij=Σ(Aik x Bkj),
为了算出Cij需要 10^8 次乘法运算和 10^8-1 次加法运算
那么为了计算出矩阵C就需要 10^24 次乘法运算和 10^24-1 次加法运算
这在5GHz(每秒执行 5x10^9 次乘法或加法运算)的单核CPU上运行需要 4x10^14 秒(约为0.1亿年);
但C11和C12的计算过程互不干扰,那么可以让CPU的第一个核心计算C11,第二个核心计算C12,
以此类推,那么这个矩阵运算在线程撕裂者3990x(128个逻辑核心,4.5GHz的核心频率)上计算则需要 3.5x10^12 秒(约11万年);
若该运算在12块RTX3090的GPU上(核心频率1.7GHz,每块有10496个核心,共计125952个计算核心)运行的话大约需要9亿秒(不到三百年);
若在TPU(张量处理器,将乘法器和加法器串联,三千个周期即可算出两个2048x2048维度的矩阵乘法,硬件上加速了矩阵乘法运算)上计算的话,
将原矩阵分为 5w x 5w 维的矩阵,每个元素均为2k x 2k维的子矩阵,算出每个子矩阵的结果后,再将5w x 5w维的矩阵再次拆分分25x25维的矩阵,
重复以上计算,一共计算了 2.5x10^9 次 2k x 2k 维的矩阵乘法,
若该TPU的时钟频率为 1.5GHz,则每秒可执行五十万次 2k x 2k 维度的矩阵乘法,
那么计算出一亿为的矩阵乘法仅需要五千秒,不到一个半小时!
(来自某推文评论,侵删)

posted @ 2020-10-17 10:47  轩瑞  阅读(638)  评论(0编辑  收藏  举报
Live2d Test Env