That behavior is permitted by the MPI 2.2 standard. It seems that our
documentation is incorrect in this regard. I'll file a bug to fix it.
Just to clarify, in the MPI 2.2 standard in Section 6.4.2 (Communicator
Constructors) under MPI_Comm_create it states:
"Each process must call with a group argument that is a subgroup of the
group associated with comm; this could be MPI_GROUP_EMPTY. The processes
may specify different values for the group argument. If a process calls
with a non-empty group then all processes in that group must call the
function with the same group as argument, that is the same processes in the
same order. Otherwise the call is erroneous."
Thanks for reporting the man page bug.
2012/1/20 Jens Jørgen Mortensen <jensj_at_[hidden]>
> For a long time, I have been calling MPI_Comm_create(comm, group, newcomm)
> with different values for group on the different processes of comm. In
> pseudo-code, I would create two sub-communicators from a world with 4 ranks
> like this:
> if world.rank < 2:
> comm = world.create([0, 1])
> comm = world.create([2, 3])
> Now I read from the MPI_Comm_create description that this way of calling
> MPI_Comm_create is erroneous:
> "The call is erroneous if not all group arguments have the same value"
> So, I guess I have just been lucky that it has worked for me? Or is it OK
> to do what I do?
> Jens Jørgen
> users mailing list
Postdoctoral Research Associate
Oak Ridge National Laboratory