MPI уменьшить с помощью mpi_datatype

Как можно свести к первому K результаты указанного MPI_Type, который представляет собой структуру указателей на матрицы / векторы с различными размерами? Я знаю, что не могу передать адрес между процессами, но мне действительно нужно передавать или указывать размер матриц при уменьшении или только копировании данных в действии?

Моя структура:

//vector/vector of vector can be translated by static vector
struct reg{
std::vector< std::vector<int> > A; //have exactly NxN
RegTD *TD; //have exactly 1 << N
int N;
std::vector<int> Basin; //max 1<<N
std::vector< std::vector<int> > BasinInfo; //max Bsize.size() * Bsize.size()
float Entropy;
};

0

Решение

Вы можете посмотреть на Boost :: MPI. Boost будет сериализовать и десериализовать типы для вас. Это может быть не совсем то, что вы хотите. Другой подход, который использует Boost, описан здесь: http://www.boost.org/doc/libs/1_62_0/doc/html/mpi/tutorial.html#mpi.skeleton_and_content где вы посылаете «скелет», описывающий структуру, а затем «контент», описывающий фактические данные.

0

Другие решения

Других решений пока нет …