0

我想通过 fork 使用多个进程进行矩阵乘法,并使用共享内存,每个进程为小型矩阵计算一行,但对于较大的矩阵,不可能为每一行创建一个进程。所以它应该计算一个由大小决定的行块。例如,最多 10 行它应该计算每个进程的一行,然后说对于 20 行,一个进程应该计算每个进程 4 行。我无法对其进行编程,因为我可以将行号作为进程数。假设我将进程数设为 8,那么每个块将有 N/8 行。但是矩阵的大小应该是 8 的倍数,进程数应该是可变的。假设它有 6 个 CPU,我可以采用进程数吗保持不变,即 6。什么是正确的方法?我应该怎么写?

4

1 回答 1

0

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

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

您可能还应该阅读这篇文章: http ://aristeia.com/TalkNotes/PDXCodeCamp2010.pdf

于 2013-03-12T23:37:37.630 回答