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. Ashley,