什么是最好的矩阵乘法算法?

gue*_*est 12 algorithm math matrix matrix-multiplication

什么是最好的矩阵乘法算法?什么对我来说意味着什么?它意味着最快,为今天的机器做好准备.

如果可以,请提供伪代码链接.

Ant*_*lli 12

BLAS是最好的即用型高效矩阵乘法库.有许多不同的实现.这是我在具有双核Intel Core 2 Duo 2.66 GHz的MacBook Pro上进行的一些基准测试:

替代文字

还有其他商业实现,我没有在这里测试:


Ste*_*non 8

最好的矩阵乘法算法是具有详细建筑知识的人已经为您的目标平台手动调整的算法.

有许多好的库提供调优的矩阵乘法实现.使用其中之一.


San*_*uja 7

可能有更好的,但这些是我的头脑(比标准立方复杂度算法更好).

Strassen's - O(N ^ 2.8)

铜匠Winograd - O(N ^ 2.376)

  • 它们具有比"标准"O(N ^ 3)算法更好的渐近复杂度,但对于中等大小的矩阵,常数(至少对于Coppersmith-Winograd而言)是非常大的.请参阅mathoverflow上的这篇文章:http://mathoverflow.net/questions/1743/what-is-the-constant-of-the-coppersmith-winograd-matrix-multiplication-algorithm (2认同)

Jim*_*som 6

为什么伪代码?为什么要自己实施呢?如果您关注速度,那么可以使用高度优化的算法,包括针对特定指令集的优化(例如SIMD),实现这些算法并不能带来任何真正的好处(除了可能的学习),

看看不同的BLAS实现,例如:

http://www.netlib.org/blas/

http://math-atlas.sourceforge.net/