On 25/10/2016 22:18, MM wrote:
In the latest boost, when dealing with a type with non MPI datatype,
each slot of the data transmitted through gatherv and scatterv is
serialized and sent individually (through packed_archive_send/recv)
through MPI_Send/Recv. (two pairs of those actually, one to send the
size and one to send the archive).
The proposed implementation does not use MPI_Send/Recv but only
global communication primitives. For a scatterv for example, the
root process serialize all the data in a single archive while
keeping track of each process data size, Dispatch those sizes
through a single MPI_Scatter, and dispatch the archive as a byte
array through a MPI_Scatterv.
Scatter and scatterv share the same implementation basically, since
a non MPI datatype does not usually have a fixed size anyway.
gather/gatherv as a similar implementation, but symmetrical.
So it basically replaces point to point communications with global
communication.
The usefulness of the whole thing is based on the hypothesis that
globals have a benefit other point to point (some clusters actually
have a different network for globals).
Also, it's expected to ease the non blocking versions of globals.
Alain
_______________________________________________
Boost-mpi mailing list
Boost-mpi@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-mpi
--
Alain Miniussi
Pole Génie Logiciel Scientifique
Observatoire de la Côte d'Azur
Blv de l'Observatoire, Nice