Jeff Squyres wrote:
On Oct 25, 2007, at 12:11 AM, George Bosilca wrote:

Now you cast a doubt on me. As far as I remember, there is a trick in MPI2 to do this. You can merge your inter-communicators into one intra-communicators with MPI_Intercomm_merge and then use MPI_Intercomm_create to spawn a new inter-comm over the 2 childs world (using the common parent as a bridge process) ... I have to try it to refresh my memory :)

If you have the following scenario:

- A spawns B, gets intercomm AB
- A spawns C, gets intercomm AC (that does not include B)
- ...repeat N times (e.g., to AN)

well, how about the following for your example:

- D = intercomm_merge (AB)
- E = intercomm_merge (AC)
- F = intercomm_create (DC, using E as bridge-communicator)
- F' = intercomm_merge (F)
- G = intercomm_create ( BC, using F' as bridge-communicator)

not very nice, but should work...

Edgar



Then B and C are not even aware of each other (from MPI's perspective). I can't think of an MPI operation to magically connect all the previously-unknown-to-each-other MPI processes. You could use COMM_ACCEPT/COMM_CONNECT or COMM_JOIN to connect B and C (and B and D, and B and E, and C and D, and ...) and then you might have some more options, but that might be even more trouble that doing the cumulative COMM_SPAWN/INTERCOMM_MERGE.

George: if you know of some trick, it would be interesting to hear.

Reply via email to