マスターワーカープログラムを実装しようとしています。
私の主人は労働者がやろうとしている仕事を持っています。労働者が仕事を完了するたびに、彼はマスターに新しい仕事を要求し、マスターはそれを彼に送ります。ワーカーは最小限のパスを計算しています。作業者は、取得したグローバル最小値よりも優れた最小値を見つけると、マスターを含むすべての人に送信します。
ワーカーとマスターがを使用してデータを送信することを計画していますMPI_ISEND
。また、受信はブロックする必要があると思います。マスターは、誰も仕事を求めていないか、最良の結果を更新していない場合は何の関係もないので、受信を待つことをブロックする必要があります。また、各労働者は、仕事を終えた後、新しいものを入手するためにレシーブを待つ必要があります。
それでも、非ブロッキング非同期送信を使用し、同期受信をブロッキングすることの影響についてはよくわかりません。
別の方法としてはを使用していると思いますがMPI_IPROBE
、これで最適化できるかどうかはわかりません。
私がしていることが正しいかどうかを理解するのを手伝ってください。これは正しい解決策ですか?