プログラム内のクラスを表す MPI 派生型を作成する必要があります。このクラスはかなり単純ですが、大規模です (約 75 のデータ メンバー**)。すべてのデータ メンバーは、単一の値、1D 配列、または 2D 配列です。以下に例を示します。
class RestartData {
int dsr;
double firea2sorgn;
int ifwoody[NUM_PFT];
double rootfrac[MAX_ROT_LAY][NUM_PFT];
....
....
}
MPI_Type_struct
を使うのが適切だと思います。(例: http://www.open-mpi.org/doc/v1.5/man3/MPI_Type_struct.3.php )
そして、私は多かれ少なかれこの質問の例に従います: struct serialization in C and transfer over MPIですが、2D 配列の処理方法がわかりません。MPI_Type_struct
複数のを含むを作成できますかMPI_Type_vector
? MPI_Type_struct
2D 配列を含むを作成する例を見つけることができませんでした。私は正しいアプローチをしていますか?
前もって感謝します。
** 単一の大きなメッセージを渡すことで発生する可能性のある問題を理解していると思いますが、この場合、メッセージはまれに渡され、自然な同期ポイント (数値の処理が完了したときにスレーブがマスターにデータを送り返す) で渡されます。