Strassen 的矩阵乘法算法的理论性能为. 常规 MM 算法的性能为.
在某些大小的矩阵(让我们称之为),普通 MM 效果更好。但是,一旦大小被破坏,Strassen 的 MM 效果更好。
问题:在多大的矩阵下,Strassen 的 MM 算法效果更好?
谢谢 !
Strassen 的矩阵乘法算法的理论性能为. 常规 MM 算法的性能为.
在某些大小的矩阵(让我们称之为),普通 MM 效果更好。但是,一旦大小被破坏,Strassen 的 MM 效果更好。
问题:在多大的矩阵下,Strassen 的 MM 算法效果更好?
谢谢 !
其他人评论了它的机器依赖性。我想指出的是,Strassen 的算法只涉及密集矩阵,并且矩阵需要相当大才能值得。但是,这种情况在应用程序中并不经常遇到:
如果您的矩阵确实密集且大,那么您可能还会遇到各种其他问题。例如,您可能不只是将它相乘,还想计算主成分、特征值、逆等。加速矩阵向量乘积可能会对您有所帮助,但还有多个其他层的算法将被证明是大小的瓶颈在矩阵产品变得重要之前,您可以解决的问题。
矩阵矩阵产品一开始并不常见。大多数时候,我们认为矩阵是向量空间上的线性算子,所以当我们看到两个矩阵的乘积时,我们认为它是一个算子应用于向量,然后另一个算子应用于结果。与实际乘以运算符相比,在软件中反映这一点几乎总是更有效的方式。
非常大的问题通常用 Strassen 算法不适用的稀疏矩阵来表述。这对于来自偏微分方程(包括边界积分方程)的所有事物当然是正确的,但对于大多数基于图的算法(例如社交图,它们也是稀疏的)也是如此。
有关 Strassen 与传统矩阵乘法的相对较新的(2010 年)基准研究,请参阅:
http://www.ics.uci.edu/~fastmm/FMM-Reference/paoloA.ishp-vi.pdf
基本结论是,值得使用 Strassen 算法的点取决于机器,并且在任何情况下,作者都无法通过使用 Strassen 矩阵算法获得显着的性能改进(最好的改进仅为 15%)大小合理。
交叉点高度依赖于特定的机器和架构。对于现代线性代数库,对性能的最大影响是 CPU 内的缓存层次结构,因此它取决于您如何为任一方法构建和排序操作。除此之外,还有准确性问题,我记得,Strassen 的算法会产生更大的错误。