我必须将许多 type: 元素转移
typedef struct
{
float w;
int a, b;
} edge;
到不同的进程,因此我正在创建一个 MPI 派生类型,如下所示:
unsigned int typecount;
MPI_Datatype PEDGE, types[2] = { MPI_FLOAT, MPI_INT };
MPI_Aint offsets[2], extent;
int blocklen[2] = { 1, 2 };
typecount = 2;
offsets[0] = 0;
MPI_Type_extent(MPI_FLOAT, &extent);
offsets[1] = (1*extent);
MPI_Type_struct (typecount, blocklen, offsets, types, &PEDGE);
MPI_Type_commit(&PEDGE);
当我执行 a 时sizeof(edge)
,我得到 12 个字节,但执行时我只得到 8 个字节sizeof(PEDGE)
……这是为什么呢?除此之外,我将一些 PEDGE 类型的元素发送到类型数组的代码edge
失败了,可能是因为这种不匹配。