1 #ifndef __COMM_SPLITTER__
2 #define __COMM_SPLITTER__
31 template<
class Strategy_t >
37 : Strategy_t(args, comm)
51 MPI_Comm_split(
world_comm_, Strategy_t::colorings_[0],
54 MPI_Comm_split(
world_comm_, Strategy_t::colorings_[1],
57 MPI_Comm_split(
world_comm_, Strategy_t::colorings_[2],
60 MPI_Comm_split(
world_comm_, Strategy_t::colorings_[3],
80 int pilotRank()
const {
return Strategy_t::poller_; }
81 int getLeader()
const {
return Strategy_t::leader_; }
MPI_Comm my_coworker_comm_
Comm::Bundle_t getBundle() const
construct comm bundle and return
boost::shared_ptr< CmdArguments > CmdArguments_t
Role assignment according to strategy (that might use hardware network information).
CommSplitter(CmdArguments_t args, MPI_Comm comm=MPI_COMM_WORLD)
int getNrWorkerGroups() const
int global_rank_
global MPI PID
int poller_local_pid_
local (wrt. the communicator group) rank of the master/pilot process
bundles all communicators for a specific role/pid