[mpich-discuss] communicator creation/deletion semantics and performance

Edgar Solomonik solomon at eecs.berkeley.edu
Tue Oct 30 11:33:18 CDT 2012


Hello,

For my application, I need to maintain or dynamically create a large number
of communicators.  My current solution has been to initialize a large
number of communicators at start-up and make dynamic decisions on which to
use later.  I have ran into MPI errors due to creating too many
communicators on some occasions, but have so far been able to resolve this
by limiting the set.

However, I am now interested in employing an even larger set of
communicators, that is harder to generate completely.  So, I would like to
move to an approach which dynamically creates and frees communicators on
demand.  I am concerned about two issues:

1. Is there an overhead to MPI_Comm_split and MPI_Comm_free, for instance
do they need to perform inter-process communication?
2. Does the limit on the number of communicators bound the number of
communicators ever created or the number of live (non-freed) communicators?

My specific use-case is merging sets of communicators in dynamic ways.
 e.g. on BG/Q I form up 6 communicators for each dimension (+1 for
intra-node) and then make dynamic mapping decisions which select unions of
the communicators to map to.  So, I either need to construct a fairly
complicated tree data-structure to keep up with all possible unions of
communicators or I can simply create the unions on demand and free them
once I am done using them after a given iteration.  So, far I had used only
contiguous unions of communicators, which is a smaller set and easier to
keep track of in a flat data-structure, but I want even more generality now.

Thanks,
Edgar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20121030/769753bc/attachment.html>


More information about the mpich-discuss mailing list