2013-03-12 119 views
0

我正在嘗試在C中使用多個進程執行矩陣乘法,每個子進程正在計算矩陣的一行。但是,如果它的順序是200,那麼將有200個進程對於2 3個CPU來說效率不高。如果我想將進程數保持爲10或12,那我該如何繼續進行。計算順序是否會有變化?高階矩陣乘法

+0

你使用什麼編程語言?在C#中,例如,您可以輕鬆地運行具有指定並行度的並行循環。 – 2013-03-12 18:51:58

+1

如果您對提高性能感興趣,則按輸出行拆分計算並不是一個好主意。你應該閱讀[參考地點](http://en.wikipedia.org/wiki/Locality_of_reference)。此外,網上搜索_「並行矩陣乘法的參考地點」_出現了很多很好的材料。 – 2013-03-12 18:53:47

回答

1

在矩陣乘法中利用多個進程的一種方法是從遞歸算法開始。例如,Strassen algorithm遞歸地將問題分解成可以卸載到任意數量處理器的更小和更小的乘法。此外,正態矩陣乘法的階數爲O(N^3),但Strassen算法可將其降至O(N^2.8),對於較大的矩陣而言,這可能相當大。

注意:通常高階是指系列擴展中的擴展項,多項式中的更多項等,通常不是方形矩陣的大小。