2016-05-06 8 views
3

私は、そのプロセッサをオーバーサブスクライブ/オーバーコミットするMPIプログラムを持っています。すなわち、プロセッサよりも多くのプロセスがあります。MPIのビジーループの防止

ただし、これらのプロセスのうち、特定の時点でアクティブになっているのはほんのわずかなので、計算リソースの競合はないはずです。

しかし、これらのプロセスがコミュニケーションを待っているときには、「私のものか?私のものか?」と聞いて、ニョウのカモメの群れと同じです。

                                                                            Nemo Seagulls

私は(異なるマシン用)インテルMPIとOpenMPIの両方を使用しています。 両方ともはビジーループではないと私はどのように納得できますか?

私は速くて汚い解決策として、MPI_Iprobeをループでsleepコマンド(here参照)を使用していました。

+0

すべてのプロセスを単一のホストで実行していますか? –

+0

いいえ、それらは複数のホストに分散されている可能性があります。 – Richard

+0

どのような種類のネットワークがホストを接続していますか? –

答えて

1

これはしばらくお待ちいただいていますが、このpostにはお探しの答えがあるかもしれません。

MPIプロセスがMPIバリアで待機している場合は、I_MPI_WAIT_MODE = 1に設定して、INTELのMPIのビジーループを防ぐことができます。 OpenMPIについては、リンク先の記事を参照してください。