我想创建一个仅在类或结构中指定部分数据的新数据类型。
我已经知道如何使用 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
的新数据类型?