On Thu, 2008-03-20 at 10:27 -0700, Dave Grote wrote:
> After reading the previous discussion on AllReduce and AlltoAll, I
> thought I would ask my question. I have a case where I have data
> unevenly distributed among the processes (unevenly means that the
> processes have differing amounts of data) that I need to globally
> redistribute, resulting in a different uneven distribution. Writing the
> code to do the redistribution using AlltoAll is straightforward.
> The problem though is that there are often special cases where each
> process only needs to exchange data with it neighbors. So the question
> is that when two processors don't have data to exchange, is the OpenMPI
> AlltoAll is written in such a way so that they don't do any
> communication? Will the AlltoAll be as efficient (or at least nearly as
> efficient) as direct send/recv among neighbors?
AlltoAll takes a single size of message and communictes that amount of
data from everybody to everybody. You might want to look at AlltoAllw
and AlltoAllv, neither of which I have any experience of however.