Is there any generalization of rank number to group numbers? For my code I would like to create a hierarchical decomposition of MPI::COMM_WORLD. Assume we make use of 16 threads. I use MPI::COMM_WORLD.Split to create 4 communicators each having 4 ranks. Is there now an MPI function that provides some unique ids to the corresponding four groups?
3
votes
2 Answers
5
votes
Well, you can still refer to each process by its original rank in MPI_COMM_WORLD
. You also have complete control over what rank each process receives in its new communicator via the color
and key
arguments of MPI_Comm_split()
. This is plenty enough information to create a mapping between old ranks and new groups/ranks.
1
votes
If you don't like @suszterpatt's answer (I do) you could always abuse a Cartesian communicator and pretend that the process at index (2,3) in the communicator is process 3 in group 2 of your hierarchical decomposition.
But don't read this and take away the impression that I recommend such abuse, it's just a thought.