Hello, I'm working on HPL (High Performance Linpack) and I have a question about MPI_Type_create_struct : int MPI_Type_struct( int count, int *array_of_blocklengths, MPI_Aint *array_of_displacements, MPI_Datatype *array_of_types, MPI_Datatype *newtype ) - Two processes A and B calls MPI_Type_create_struct with the same content of 'count', 'array_of_blocklengths' and 'array_of_types', but maybe *not* the same 'array_of_displacements' (due to private memory or custom stride of send/recv buffer) - Example : On process A : count = 3 dispA[0] = 0 - blen[0] = 1 - type[0] = MPI_INT => block0 dispA[1] = 16 - blen[1] = 2 - type[1] = MPI_DOUBLE => block1 dispA[2] = 2014 - blen[2] = 4 - type[2] = MPI_DOUBLE => block2 On process B : count = 3 dispB[0] = 8 - blen[0] = 1 - type[0] = MPI_INT dispB[1] = 24 - blen[1] = 2 - type[1] = MPI_DOUBLE dispB[2] = 128 - blen[2] = 4 - type[2] = MPI_DOUBLE - The question is : According to MPI, is this possible that two processes calls this MPI routine with their own different displacements ? (like example above - and also what HPL does) - If yes, at Receiver side, I suppose that further send/recv with this type will do : block0 from A at dispA[0] must be written to B on dispB[0] block1 from A at dispA[1] must be written to B on dispB[1] and block2 from A at dispA[2] must be written to B on dispB[2], aren't they ? Thank you for any response, Quan