Hi I have noticed on my machine that a struct which i have defined as
typedef struct { short iSpeciesID; char sCapacityFile[SHORT_INPUT]; double adGParams[NUM_GPARAMS]; } tVStruct; (where SHORT_INPUT=64 and NUM_GPARAMS=4) has size 104 (instead of 98) whereas the corresponding MPI Datatype i created int aiLengthsT5[3] = {1, SHORT_INPUT, NUM_GPARAMS}; MPI_Aint aiDispsT5[3] = {0, iShortSize, iShortSize+SHORT_INPUT}; MPI_Datatype aTypesT5[3] = {MPI_UNSIGNED_SHORT, MPI_CHAR, MPI_DOUBLE}; MPI_Type_create_struct(3, aiLengthsT5, aiDispsT5, aTypesT5, &m_dtVegetationData3); MPI_Type_commit(&m_dtVegetationData3); only has length 98 (as expected). The size differences resulted in an error when doing tVegetationData3 VD; MPI_Send(&VD, 1, m_dtVegetationData3, 1, TAG_STEP_CMD, MPI_COMM_WORLD); and the corresponding tVegetationData3 VD; MPI_Recv(&VD, 1, m_dtVegetationData3, MPI_ANY_SOURCE, TAG_STEP_CMD, MPI_COMM_WORLD, &st); (in fact, the last double in my array was not transmitted correctly) It seems that on my machine the struct was padded to a multiple of 8. By manually adding some padding bytes to my MPI Datatype in order to fill it up to the next multiple of 8 i could work around this problem. (not very nice, and very probably not portable) My question: is there a way to tell MPI to automatically use the required padding? Thank You Jody