2012-12-23 48 views
1

主站有一大組任務,它將任務分配給任何表示準備就緒的從站。異步MPI主 - 從模型

任務在計算時間上不相等,但都計算某個值。作爲輸出,主人需要計算所有任務的最小值。

這裏的問題是,我不希望使用同步發送-recv的調用來分配工作,因爲我不想等待一個進程來完成,發送作業到下一個之前。

那麼,我該如何收集結果呢?我需要知道每個返回值以返回最小值,但是我無法確定該值何時會發回給主服務器,或者按照什麼順序。

感謝您的幫助..

回答

2

使用非阻塞將在主/接收,並在奴隸阻擋的。基本上是:

站長:

  1. 發送作業通過非阻塞發送。
  2. 發佈非阻塞接收每個結果
  3. 定期檢查是否有任何結果都到了。如果是這樣,發送一份新的工作,併發佈一個非阻塞的接收。
  4. 重複步驟3.直到所有結果都到達。

奴隸:

  1. 等待與封工作收到
  2. 發送結果與阻塞發送
  3. 轉到1