+ Comm() = default;
+ Comm(MPI_Group group, MPI_Topology topo, int smp = 0, int id=MPI_UNDEFINED);
+ int dup(MPI_Comm* newcomm);
+ int dup_with_info(MPI_Info info, MPI_Comm* newcomm);
+ MPI_Group group();
+ MPI_Topology topo() { return topo_; }
+ int size();
+ int rank();
+ int id();
+ void get_name(char* name, int* len);
+ void set_name(const char* name);
+ MPI_Info info();
+ void set_info( MPI_Info info);
+ 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();
+ MPI_Comm find_intra_comm(int* leader);
+ 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();