I have a Multiple Program Multiple Data with three programs running in
parallel, say A, B and C. C is much slower so in order to balance the
load I want to parallelize C into C0 to Cn (SPMD). There are very
frequent communications between Ci processes and not so frequent, but
still multiple times per second, between A, B and C0. I have running
versions of ABC MPMD and the C*N SMPD.
I was thinking of creating two communicators with C0 being a member of
both, but I am told this is bad practice although I don't really know
what the pitfalls are. An alternative would be to create and close the
ABC communicator every time it is used, but I am worried about the
cost of this operations and about making the code look messy. I would
appreciate any advice onn this issue.