On 25/10/2016 22:18, MM wrote:
I'm sorry I didn't follow the discussion, but how are the scatterv and gatherv you're proposing in your branch different from the ones already in latest boost ?
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.


Boost-mpi mailing list

Alain Miniussi
Pole Génie Logiciel Scientifique
Observatoire de la Côte d'Azur
Blv de l'Observatoire, Nice