好像一不小心说了七条,但似乎并没能涵盖所有情况...
问题:输入两个 的矩阵 ,计算矩阵乘积
实际用的算法:
直接法,一个一个老老实实乘。利用硬件的乘加融合、SIMD、Tensor Core,有明显的优化效果。
Strassen算法:
三个维度都对半切 , ,
如果是直接法,就用左边的8个小矩阵块,可以通过4次小矩阵块的加法和8次小矩阵块的乘法,算出右边4个小矩阵块
而Strassen算法把计算公式变形,变成18次矩阵加法( )和7次矩阵乘法(递归的 ),具体看这篇文章
Strassen算法的两个问题:
目前已知的渐进复杂度的极限:
把上面的数字一般化,每个方向分成 份,变成 次矩阵乘法,复杂度变成
考虑更大的 。比如 时, 不一定是 。因为两层合到一起以后有更多的公式变形机会,乘法次数有可能更少,渐进复杂度更低;但是公式变形的代价是加法更多,低阶项更大,有可能精度更低。
目前已知的渐进复杂度的极限是令 ,取 得到的极限。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有