[Beowulf] MPI programming question: Interleaved MPI_Gatherv?

Robert G. Brown rgb at phy.duke.edu
Thu Mar 3 05:20:57 PST 2005

On Thu, 3 Mar 2005, Joachim Worringen wrote:

> Michael Gauckler wrote:
> > Dear List, 
> > 
> > I would like to gather the data from several processes. 
> > Instead of the comonly used stride, I want to interleave 
> > the data:
> > 
> > Rank 1: BBBBB ----^---^---^---^---^
> > Rank 2: CCCCC -----^---^---^---^---^
> > Rank 3: DDDDD ------^---^---^---^---^
> > 
> > Since the stride of the receive type is indicated 
> > in multpiles of its mpi_type, no interleaving is 
> > possible (the smallest striping factor leads to 
> > 
> > Is there a way to achieve this behaviour in an 
> > elegant way, as MPI_Gather promises it? Or do
> > I need to do Send/Recv with self-aligned offsets?

What about RMA-like commands?  MPI_Get in a loop?  Since that is
controlled by the gatherer, one would presume that it preserves call
order (although it is non-blocking).

Or of course there are always raw sockets... where you have complete
control.  Depending on how critical it is that you preserve this strict
interleaving order.


> Actually, I don't see an 'elegant' way to do this, either. The decision 
> between multiple MPI_Gatherv() calls and a Irecv/Send/Waitall construct 
> depends on the quality of the MPI implementation you use (MPI_Gatherv 
> can be optimized well for small amounts of data), the characteristics of 
> you interconnect (high latency gives more room for optimization) and the 
> number of processes you use. For small process numbers, you wont see 
> much of a difference anyway.
> You could also try to gather all data on the root in separate buffers, 
> and then let this process send/recv to itself using the proper datatypes.
> Finally, if this communication is not a significant part of your 
> runtime, you shouldn't spend much time optimizing it anyway.
>   Joachim

Robert G. Brown	                       http://www.phy.duke.edu/~rgb/
Duke University Dept. of Physics, Box 90305
Durham, N.C. 27708-0305
Phone: 1-919-660-2567  Fax: 919-660-2525     email:rgb at phy.duke.edu

More information about the Beowulf mailing list