- if(origin != MPI_GROUP_NULL
- && origin != MPI_GROUP_EMPTY)
- {
- size_ = origin->size();
- rank_to_index_map_ = xbt_new(int, size_);
- index_to_rank_map_ = xbt_dict_new_homogeneous(xbt_free_f);
- refcount_ = 1;
- for (int i = 0; i < size_; i++) {
- rank_to_index_map_[i] = origin->rank_to_index_map_[i];
- }
-
- char* key;
- char* ptr_rank;
- xbt_dict_cursor_t cursor = nullptr;
- xbt_dict_foreach(origin->index_to_rank_map_, cursor, key, ptr_rank) {
- int * cp = static_cast<int*>(xbt_malloc(sizeof(int)));
- *cp=*reinterpret_cast<int*>(ptr_rank);
- xbt_dict_set(index_to_rank_map_, key, cp, nullptr);
- }
- }
-}
-
-Group::~Group()
-{
- xbt_free(rank_to_index_map_);
- xbt_dict_free(&index_to_rank_map_);
+ if (origin != MPI_GROUP_NULL && origin != MPI_GROUP_EMPTY) {
+ size_ = origin->size();
+ refcount_ = 1;
+ rank_to_index_map_ = origin->rank_to_index_map_;
+ index_to_rank_map_ = origin->index_to_rank_map_;
+ rank_to_actor_map_ = origin->rank_to_actor_map_;
+ actor_to_rank_map_ = origin->actor_to_rank_map_;
+ }