2017-04-17 1 views
0

CでOpenMPIを使用する。同じ関数でMPI_Barrierを2回呼び出すのは大丈夫ですか?

は私が

main() 
{ 
MPI_Init(); 

//// Important Program Region 

MPI_Barrier(MPI_COMM_WORLD); 

// do something here 

MPI_Barrier(MPI_COMM_WORLD); 

//// 
MPI_Finalize(); 
} 

を持っているだと言うこの悪い習慣ですか?このように障壁を2回強制的に強制的に同期させることはできますか?これを行うのに不利な点はありますか?

+0

これはどのように同じコード行ですか? 'MPI_Barrier'を呼び出す2つのコード行があります。なぜあなたは最初にそこに障壁が必要だと思いますか? – Zulan

+0

うわー、それを指摘してくれてありがとう、今私の答えのために? – user26763

答えて

1

上記のプログラムはそのまま動作します。 MPI_Barrierを1回または2回だけ強制するのではなく、必要な回数だけ強制的に強制的に同期をとることができます。このことから、MPI_Barrierの主な欠点は、プログラムのスケーラビリティが、呼び出す回数が増えるほど大幅に少なくなることです。

注:タイトルに示唆されている「同じ行」(ただし質問自体ではない)で呼び出すと、2番目の障壁は事実上ノーオペレーションです。すでに同期ポイントに達しました。第二の障壁は何をするつもりですか?

+0

申し訳ありませんが、 "ライン"のものはタイプミスでした。 – user26763

関連する問題