Luke,
Support for intercommunicators is partial, but we do use some of the most common intercomm operations routinely in ULFM. I made for reference a list of the feature set, but glancing over your example, I see only point 3. that can impact your use case.
What works on intercomms:
------------------------
1. MPI_COMM_SPAWN and INTERCOMM_MERGE are tested routinely and work: even when failures strike around the operation (it will return PROC_FAILED cleanly, and you can retry after doing MPI_COMM_SHRINK on the communicator).
2. Agree, revoke, and general error reporting on intercomms (see limitation below for error reporting)
Limitations:
-----------
3. Failure detection between procs of different MPI_COMM_WORLDs is limited to detecting faults from in-band messaging (i.e., the failure detector is not active between different MPI_COMM_WORLDs), if your network has in-band detection (e.g., TCP), things will work as intended. We are making a final push to integrate a failure detector at the infrastructure level that will overcome that limitation (see
https://github.com/openpmix/prrte/pull/542).
4. Connect/accept is not tested much with faults but should work.
What doesn’t work:
-----------------
5. Shrink on intercomms is not supported.