On Dec 17 2010, George Bosilca wrote:
Let me try to round the edges on this one. It is not that we couldn't or wouldn't like to have a more "MPI" compliant approach on this, but the definition of connected processes in the MPI standard is [kind of] shady. One thing is clear however, it is a transitive relationship. If A is "connected" to B, and B is "connected" to C, then A and C are "connected" even if they don't know anything about each other. In other terms when you call disconnect, it is difficult to compute the peers that have to be "disconnected" as even if you disconnected them in one communicator they can still be connected some other way. Therefore, we choose the simplest path, once connected the processes remain connected until the end of the execution.
I apologise for confusing the issue! My response was generic - true, but the next stage on, if the above were not the explanation. I fully agree that the definition is shady - this is a nightmare area, even in POSIX alone, and I advise most people to avoid it like the plague if they can. I can't square the above approach with MPI 2.2 10.5.4 in this case, though I accept that realistic programs are far murkier. I haven't studied the area deeply enough to convince myself whether or not it is possible to do this sort of thing cleanly and according to the MPI specification. You may be right that it's a hopeless task, which deserves the explicit recommendation "don't even THINK of going there". Regards, Nick Maclaren.