Мне нужно создать тип, производный от 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)
И я более или менее следую примеру в этом вопросе: сериализация структуры в C и передавать через MPI, но я не знаю, как обращаться с 2D-массивами. Могу ли я создать MPI_Type_struct
, содержащий несколько MPI_Type_vector
? Мне не удалось найти пример создания MPI_Type_struct
, содержащего 2D-массивы. Я на правильном пути?
Заранее спасибо.
** Я думаю, что понимаю возможные проблемы с передачей одного большого сообщения, но в этом случае сообщение передается нечасто и в естественной точке синхронизации (ведомые отправляют данные обратно мастеру, когда они закончили обрабатывать числа)