+ Comm() = default;
+ Comm(MPI_Group group, MPI_Topology topo, bool smp = false, 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() const { return topo_; }
+ void set_topo(MPI_Topology topo){topo_=topo;}
+ int size() const;
+ int rank() const;
+ int id() const;
+ void get_name(char* name, int* len) const;
+ void set_name(const char* name);
+ MPI_Info info();
+ void set_info( MPI_Info info);
+ MPI_Errhandler errhandler();
+ void set_errhandler( MPI_Errhandler errhandler);
+ void set_leaders_comm(MPI_Comm leaders);
+ void set_intra_comm(MPI_Comm leaders) { intra_comm_ = leaders; };
+ int* get_non_uniform_map() const;
+ int* get_leaders_map() const;
+ MPI_Comm get_leaders_comm() const;
+ MPI_Comm get_intra_comm() const;
+ MPI_Comm find_intra_comm(int* leader);
+ bool is_uniform() const;
+ bool is_blocked() const;
+ bool is_smp_comm() const;
+ 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();