[Mpi-forum] Ask for detail about MPI_Type_create_struct specification
Minh Quan HO
hmquan89 at gmail.com
Thu Jul 18 07:11:08 CDT 2013
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpi-forum.org/pipermail/mpi-forum/attachments/20130718/da673585/attachment.html>
More information about the mpi-forum
mailing list