X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ebf41c7beba2106eb53c470b4655c5188f1bdca7..b9e79eec822b45eb15b2779f4fa393b07b1e8fff:/src/smpi/include/smpi_group.hpp diff --git a/src/smpi/include/smpi_group.hpp b/src/smpi/include/smpi_group.hpp index 45edeef852..99be12735a 100644 --- a/src/smpi/include/smpi_group.hpp +++ b/src/smpi/include/smpi_group.hpp @@ -16,7 +16,6 @@ namespace simgrid{ namespace smpi{ class Group : public F2C{ - int size_ = 0; /* This is actually a map from int to s4u::Actor*. We could use std::map here, but looking up a value there costs * O(log(n)). For a vector, this costs O(1). We hence go with the vector. */ @@ -26,9 +25,12 @@ class Group : public F2C{ int refcount_ = 1; /* refcount_: start > 0 so that this group never gets freed */ + int incl(const std::vector ranks, MPI_Group* newgroup) const; + int excl(const std::vector excl_map, MPI_Group* newgroup) const; + public: Group() = default; - explicit Group(int size) : size_(size), rank_to_actor_map_(size, nullptr), index_to_rank_map_(size, MPI_UNDEFINED) {} + explicit Group(int size) : rank_to_actor_map_(size, nullptr), index_to_rank_map_(size, MPI_UNDEFINED) {} explicit Group(const Group* origin); void set_mapping(s4u::Actor* actor, int rank); @@ -38,7 +40,7 @@ public: int rank(s4u::Actor* process) const; void ref(); static void unref(MPI_Group group); - int size() const { return size_; } + int size() const { return static_cast(rank_to_actor_map_.size()); } int compare(MPI_Group group2) const; int incl(int n, const int* ranks, MPI_Group* newgroup) const; int excl(int n, const int* ranks, MPI_Group* newgroup) const;