2012-12-23 47 views
1

主站有一大组任务,它将任务分配给任何表示准备就绪的从站。异步MPI主 - 从模型

任务在计算时间上不相等,但都计算某个值。作为输出,主人需要计算所有任务的最小值。

这里的问题是,我不希望使用同步发送-recv的调用来分配工作,因为我不想等待一个进程来完成,发送作业到下一个之前。

那么,我该如何收集结果呢?我需要知道每个返回值以返回最小值,但是我无法确定该值何时会发回给主服务器,或者按照什么顺序。

感谢您的帮助..

回答

2

使用非阻塞将在主/接收,并在奴隶阻挡的。基本上是:

站长:

  1. 发送作业通过非阻塞发送。
  2. 发布非阻塞接收每个结果
  3. 定期检查是否有任何结果都到了。如果是这样,发送一份新的工作,并发布一个非阻塞的接收。
  4. 重复步骤3.直到所有结果都到达。

奴隶:

  1. 等待与封工作收到
  2. 发送结果与阻塞发送
  3. 转到1