On Dec 12, 2011, at 9:45 AM, Josh Hursey wrote:
For MPI_Comm_split, all processes in the input communicator (oldcomm
or MPI_COMM_WORLD in your case) must call the operation since it is
collective over the input communicator. In your program rank 0 is not
calling the operation, so MPI_Comm_split is waiting for it to
participate.
If you want rank 0 to be excluded from the any of the communicators,
you can give it a special color that is distinct from all other ranks.
Upon return from MPI_Comm_split, rank 0 will be given a new
communicator containing just one processes, itself. If you do not
intend to use that communicator you can free it immediately
afterwards.
You can also specify MPI_UNDEFINED as your color, in which case the
output communicator in that process will be MPI_COMM_NULL. See
MPI-2.2 p205.
Thank you, Josh and Jeff. That did it! I called MPI_COMM_split from
my supervisor with color of MPI_UNDEFINED and key of 0. Then all
_split() calls returned and I was able to do the work in my test
program.
All the best,
Gary