2

マスターには大量のタスクがあり、準備完了を通知するスレーブに配布します。

タスクの計算時間は同じではありませんが、すべて何らかの値を計算しています。出力として、マスターはすべてのタスクの最小値を計算する必要があります。

ここでの問題は、ジョブを次のプロセスに送信する前に、1 つのプロセスが終了するのを待ちたくないため、同期 send-recv 呼び出しを使用してジョブを配布したくないことです。

では、どうすれば結果を収集できますか? 最小値を返すためにすべての戻り値を知る必要がありますが、値がマスターにいつ返されるか、またはどのような順序で返されるかはわかりません。

助けてくれてありがとう..

4

1 に答える 1

4

マスターではノンブロッキング送受信を使用し、スレーブではブロッキング送受信を使用します。基本的:

主人:

  1. ノンブロッキング送信でジョブを送信します。
  2. 結果ごとにノンブロッキング受信を投稿する
  3. 結果が届いていないか定期的に確認してください。その場合は、新しいジョブを送信し、非ブロッキング受信を投稿します。
  4. すべての結果が到着するまで、手順 3. を繰り返します。

スレーブ:

  1. ブロッキング受信でジョブを待つ
  2. ブロッキング送信で結果を送信する
  3. 1に行きます。
于 2012-12-23T09:48:27.260 に答える