メッセージの順序のコンテキストでこれを言及するのは少し奇妙です。あなたを引用:
私が理解している限り、非ブロッキングポイントツーポイントMPIメッセージ(IsendおよびIrecv)が受信される順序は、それらが送信される順序と一致しています。
ここで指摘する価値があるのは、MPIがその一致のみを保証することです。するのは、プロセス間メッセージが送信された順序で受信されることです。このタイプの順序を変更したくない場合は、コードが理解しやすくなり、アプリケーションプログラマとしての負担が大きくなります。
ただし、異なるタグでメッセージを送信すると、一致基準が変更され、最初のメッセージより先に2番目のメッセージを簡単に受信できます。詳細については、規格の関連部分の 2番目の例を参照してください。同時に送信する2つのコードがある場合、タグを使用して粗いメッセージと細かいメッセージをすでに分離しており、メッセージの順序に加えて独自のプロトコルを実装しようとしないことを願っています。これは、私が知っているほとんどのMPIプログラマにとって2番目の性質です。
とにかく、あなたがそうしていると仮定すると、大まかなメッセージを送信したいときに、大量の細かいメッセージがネットワークを詰まらせてしまうのではないかと心配しているでしょう。これに関する私の一般的なアドバイスは、実際に測定できるのがパフォーマンスの問題ではない場合は、まだ対処する必要がないということです。上記のコメントの1つで、まだ問題ではないことを確認しているようです。
あなたは一つの可能な解決策かもしれない考える粗大相はその解決策を送信するために行われ、準備ができていることを皆に知らせるためにBCASTやバリアのような非ブロックの集合(NBC)を用いることであろう。おそらく、NBCトラフィックが優先されることはありませんが、通知されたプロセスは、粗い送信が完了するまで、細かい解決策の塊の送信を少なくとも停止できます。NBC はMPI-3になりますか、それほど長く待てない場合はlibNBCを使用してみてください。
繰り返しになりますが、これはまだパフォーマンスの問題ではないように思えない何かのための多くの作業のようです。