- Comm() = default;
- Comm(MPI_Group group, MPI_Topology topo, int smp=0);
- int dup(MPI_Comm* newcomm);
- MPI_Group group();
- MPI_Topology topo();
- int size();
- int rank();
- void get_name (char* name, int* len);
- void set_leaders_comm(MPI_Comm leaders);
- void set_intra_comm(MPI_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();
+ 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;
+ std::string name() const override;
+ 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();