I think perhaps you folks are all caught up a tad too much in the
standard and not reading the intent of someone's question... :-)
I believe the original question was concerned with ensuring that all
procs had completed MPI_Allreduce before his algorithm attempted other
operations. As you folks know, procs can leave MPI_Allreduce at
significantly different times. Using an MPI_Barrier after
MPI_Allreduce would accomplish the questioner's objective.
Whether or not the questioner's particular program really -needs- to
do that is another matter - one I personally wouldn't attempt to
answer without knowing a lot more about what that next step after
MPI_Allreduce does.
On Mar 23, 2009, at 3:49 PM, Ashley Pittman wrote:
On 23 Mar 2009, at 21:11, Ralph Castain wrote:
Just one point to emphasize - Eugene said it, but many times people
don't fully grasp the implication.
On an MPI_Allreduce, the algorithm requires that all processes -
enter- the call before anyone can exit.
It does -not- require that they all exit at the same time.
So if you want to synchronize on the -exit-, as your question
indicated, then you must add the MPI_Barrier as you describe.
All MPI_Barrier requires is that all processes enter the call before
anyone can exit, I'm not sure that "synchronising on exit" has any
particular meaning at all.
Putting a MPI_Barrier call immediatly after a MPI_Allreduce call
would be superfluous.
Ashley,
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users