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);
を実行するsizeof(edge)
と 12 バイトが取得されますが、実行すると 8 バイトしか取得されませんsizeof(PEDGE)
...なぜですか? これとは別に、PEDGE 型のいくつかの要素を型の配列に送信するコードedge
が失敗します。おそらく、この不一致が原因です。