-4

我正在计算 200 x 200 维的矩阵乘法。我最多可以使用 8 个进程。我正在分叉子进程来计算行。我可以让一个进程执行 4 行并并行运行它们,或者我可以每个进程制作一行,即一次并行处理 5 行,然后通过重用相同的进程再并行处理 5 行。哪个效率更高?

4

1 回答 1

2

由于在这种情况下,所有作业都需要相同的努力(它们具有相同数量的乘法和加法),因此选择第一个选项(每个进程 4 行)会更有意义。第二个选项(每次每个进程 1 行)当作业在完成时间上是异构的或您需要低延迟时更有意义。您可以考虑每个选项的开销。

在第一个选项中,开销包括:

  • 分工。
  • 启动进程。
  • 收集结果。

在第二个选项中,开销是:

  • 分工。
  • 启动进程。
  • 当一个工人完成后,要求另一件。
  • 再收到一块。
  • 收集结果。

您可以看到在第二个选项中有更多开销。

至于第二种选择的可能架构,您可以使用服务器 - 客户端架构,一个进程将充当服务器,其余进程将充当客户端。服务器将负责划分工作,在需要时将其提供给客户端并收集结果。您可以在每个作业完成后或最后收集结果。一开始,服务器会创建客户端,给他们每个人一个工作,然后等到被要求做更多工作。当客户端完成给它的工作时,它会向服务器请求另一项工作,并将计算出的结果提供给服务器。这将重复,直到服务器没有更多的工作可以提供,此时它将通知客户端,以便他们可以退出。

于 2013-03-16T02:03:35.540 回答