2015-11-05 149 views
2

到目前爲止,我一直在研究一個相當廣泛的程序,而且我目前正處於必須利用矩陣乘法的地步。事情是,對於這個特定的程序,速度是至關重要的。我很熟悉一些矩陣設置,但我想知道哪種方法運行速度最快。我做了大量的研究,但結果很少。下面是我熟悉的矩陣乘法算法的列表:矩陣乘法的最快方法是什麼?

  • 迭代算法
  • 分而治之算法
  • 子立方算法
  • 共享內存並行

如果有人需要澄清我列出的方法或一般問題,隨時提問。

+1

答:由專家開發的手動庫,具有執行代碼的處理器體系結構的詳細知識和經驗;換句話說,不要推出自己的產品,請求借用或竊取實施。哦,或者實際上買一個。 –

+1

這個問題太廣泛了。你的矩陣可以是大的,小的,稀疏的,密集的......對於每個上下文都沒有最好的算法。請注意,共享內存並行性不是一種算法,根據您所處的並行體系結構,有些算法的性能會更好或更差。 – coincoin

+1

看看[相關文章](http://stackoverflow.com/questions/4455645/what-is-the-best-matrix-multiplication-algorithm?rq=1) –

回答

2

Strassen算法和天真的(O(n^3))算法在實踐中使用最多。

更復雜的具有更緊密漸近界限的算法未被使用,因爲它們的益處僅在極大矩陣中才是顯而易見的,因爲它們的複雜性,例如, Coppersmith算法。

正如其他人指出的,您可能需要使用像ATLAS這樣的庫,它會根據您正在執行的平臺的特性自動調整算法,例如, L1/L2緩存大小。

+0

Je suis UN pamplemousse! – coincoin

+1

mon francais est est terrible !!! – igon

+0

OP(或其他人)提供的答案中的第一條語句的證據是什麼? –

2

最快的方法可能是使用已經優化的現有庫,您不必每次都重新發明輪子。