Как создать тип данных MPI, который содержит только часть класса или структуры? - PullRequest
0 голосов
/ 07 апреля 2019

Я хотел бы создать новый тип данных, который указывает только часть данных в классе или структуре.

Я уже знаю, как использовать MPI_Type_create_struct для создания нового типа данных, который содержит все данные в классе:

class A {
public:
  double value_1;
  double value_2;
  int    value_3;
  char   value_4;
};

// Create a new data type called "MPI_derived_type"
int      count {3};
int      block_lengths[3] = {2, 1, 1};
MPI_Aint displacements[3];
displacements[0] = offsetof (A, value_1);
displacements[1] = offsetof (A, value_3);
displacements[2] = offsetof (A, value_4);
MPI_Datatype types[3] = {MPI_DOUBLE, MPI_INT, MPI_CHAR};
MPI_Type_create_struct (count, block_lengths, displacements, types, &MPI_derived_type);
MPI_Type_commit (&MPI_derived_type);

С кодом выше я могу отправлять и получать все данные в class A. Однако из-за некоторых проблем оптимизации мне нужно отправить только часть данных в классе. Например, мне просто нужно отправить value_1 и value_3.

  • Как создать новый тип данных, который содержит только value_1 и value_3, но не value_2 и value_4?
  • Можно ли использовать MPI_Type_create_struct , чтобы указать только часть структуры для последующих сообщений?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...