2013-03-12 168 views
0

我想要通过fork使用多个进程并使用共享内存来进行矩阵乘法,每个进程计算一行用于小型矩阵但具有较高大小的矩阵,但不可能为每个进程创建一个进程排。所以它应该计算一个由大小决定的行块。例如,最多10行应该为每个进程计算一行,之后对于20行应该计算每行4个行。我无法对它进行编程,因为我可以将行号作为进程数。假设我把进程数定义为8,那么每个块都有N/8行。但是矩阵的大小应该是8的倍数,并且进程的数量应该是可变的。假设它有6个CPU,我可以采取多少个进程是恒定的,即6。什么是正确的方法?我应该如何写它?C中的矩阵乘法多进程

+4

我觉得自己像一个小Googling在这里,因为这已经做过很多次会很长的路要走。 – 2013-03-12 23:35:31

+0

我在C中找不到任何示例矩阵乘法程序,它将使用进程和共享内存描绘矩阵乘法,并优化它的方式 – Lost 2013-03-12 23:41:12

回答

0

下面是演示矩阵mult的一些示例代码。在pthreads。我几乎立即在搜索引擎中发现它。它显示了一种做你描述的方法。
http://www.cs.arizona.edu/classes/cs422/spring13/examples/matmult-dyn.c

您可能需要对其进行微调以确定最佳方法。

你也许还应该看看这篇文章: http://aristeia.com/TalkNotes/PDXCodeCamp2010.pdf

+0

我使用的是进程而不是线程,并且我无法在搜索引擎上找到它... – Lost 2013-03-12 23:44:50

+0

当然可以。最初我没有接受。我怀疑线程是解决这个问题的一种更加容易处理的方式,也许为什么我第一次错过它。无论哪种方式,没有理由创建任何更多的进程(或线程),而不是让核心可用于运行它们。其余的就在头顶上。 – 2013-03-12 23:49:13

+0

所以我应该限制进程的数量为6?并使每个过程做N/6行? – Lost 2013-03-12 23:54:20