2013-03-12 121 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),对于较大的矩阵而言,这可能相当大。

注意:通常高阶是指系列扩展中的扩展项,多项式中的更多项等,通常不是方形矩阵的大小。