+ Comm() = default;
+ Comm(MPI_Group group, MPI_Topology topo, int smp = 0);
+ int dup(MPI_Comm* newcomm);
+ MPI_Group group();
+ MPI_Topology topo() { return topo_; }
+ int size();
+ int rank();
+ void get_name(char* name, int* len);
+ void set_name(char* name);
+ void set_leaders_comm(MPI_Comm leaders);
+ void set_intra_comm(MPI_Comm leaders) { intra_comm_ = leaders; };
+ int* get_non_uniform_map();
+ int* get_leaders_map();
+ MPI_Comm get_leaders_comm();
+ MPI_Comm get_intra_comm();
+ int is_uniform();
+ int is_blocked();
+ int is_smp_comm();
+ MPI_Comm split(int color, int key);
+ void cleanup_smp();
+ void ref();
+ static void unref(MPI_Comm comm);
+ static void destroy(MPI_Comm comm);
+ void init_smp();