On Tue, 2009-03-24 at 07:03 -0800, Eugene Loh wrote:
> > Perhaps there is a better way of accomplishing the same thing however, 
> > MPI_Barrier syncronises all processes so is potentially a lot more 
> > heavyweight than it needs to be, in this example you only need to 
> > syncronise with your neighbours so it might be quicker to use a 
> > send/receive for each of your neighbours containing a true/false value 
> > rather than to rely on the existence of a message or not.  i.e. the 
> > barrier is needed because you don't know how many messages there are, 
> > it may well be quicker to have a fixed number of point to point 
> > messages rather than a extra global synchronisation.  The added 
> > advantage of doing it this way would be you could remove the Probe as 
> > well.
> 
> I'm not sure I understand this suggestion, so I'll say it the way I 
> understand it.  Would it be possible for each process to send an "all 
> done" message to each of its neighbors?  Conversely, each process would 
> poll its neighbors for messages, either processing graph operations or 
> collecting "all done" messages depending on whether the message 
> indicates a graph operation or signals "all done".

Exactly, that way you have a defined number of messages which can be
calculated locally for each process and hence there is no need to use
Probe and you can get rid of the MPI_Barrier call.

Ashley Pittman.

Reply via email to