我需要创建一个 MPI 派生类型来表示我程序中的一个类。该类相当简单,但很大(大约 75 个数据成员**)。所有数据成员都是单值、一维数组或二维数组。这是一个例子:
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
s 的吗?我一直找不到创建MPI_Type_struct
包含二维数组的示例。我的方法正确吗?
提前致谢。
** 我想我理解传递单个大消息可能出现的问题,但在这种情况下,消息不经常传递,并且是在自然同步点(奴隶在完成处理数字后将数据发送回主人)