Я хотел бы создать новый тип данных, который указывает только часть данных в классе или структуре.
Я уже знаю, как использовать 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 , чтобы указать только часть структуры для последующих сообщений?