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?
 Thanks!
   Dave

Reply via email to