- MPI_Group group_;
- SMPI_Topo_type topoType_;
- MPI_Topology topo_; // to be replaced by an union
- int refcount_;
- MPI_Comm leaders_comm_; // inter-node communicator
- MPI_Comm intra_comm_; // intra-node communicator . For MPI_COMM_WORLD this can't be used, as var is global.
- // use an intracomm stored in the process data instead
- int* leaders_map_; // who is the leader of each process
- int is_uniform_;
- int* non_uniform_map_; // set if smp nodes have a different number of processes allocated
- int is_blocked_; // are ranks allocated on the same smp node contiguous ?
- int is_smp_comm_; // set to 0 in case this is already an intra-comm or a leader-comm to avoid recursivity
+ friend Topo;
+ MPI_Group group_ = MPI_GROUP_NULL;
+ SMPI_Topo_type topoType_ = MPI_INVALID_TOPO;
+ std::shared_ptr<Topo> topo_; // to be replaced by an union
+ int refcount_ = 1;
+ MPI_Comm leaders_comm_ = MPI_COMM_NULL; // inter-node communicator
+ MPI_Comm intra_comm_ = MPI_COMM_NULL; // intra-node communicator. For MPI_COMM_WORLD this can't be used, as var is
+ // global. Use an intracomm stored in the process data instead
+ int* leaders_map_ = nullptr; // who is the leader of each process
+ bool is_uniform_ = true;
+ int* non_uniform_map_ = nullptr; // set if smp nodes have a different number of processes allocated
+ bool is_blocked_ = false; // are ranks allocated on the same smp node contiguous?
+ bool is_smp_comm_ = false; // set to false in case this is already an intra-comm or a leader-comm to avoid
+ // recursion