-/* Copyright (c) 2010-2021. The SimGrid Team.
+/* Copyright (c) 2010-2022. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
namespace smpi{
class Group : public F2C{
- /* This is actually a map from int to s4u::Actor*. We could use std::map here, but looking up a value there costs
+ /* This is actually a map from int to aid_t. 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.
*/
- std::vector<s4u::Actor*> rank_to_actor_map_;
- std::map<s4u::Actor*, int> actor_to_rank_map_;
std::vector<aid_t> rank_to_pid_map_;
std::vector<int> pid_to_rank_map_;
public:
Group() = default;
- explicit Group(int size)
- : rank_to_actor_map_(size, nullptr), rank_to_pid_map_(size, -1), pid_to_rank_map_(size, MPI_UNDEFINED)
- {
- }
+ explicit Group(int size) : rank_to_pid_map_(size, -1), pid_to_rank_map_(size, MPI_UNDEFINED) {}
explicit Group(const Group* origin);
- void set_mapping(s4u::Actor* actor, int rank);
+ void set_mapping(aid_t pid, int rank);
int rank(aid_t pid) const;
- aid_t actor_pid(int rank) const;
- s4u::Actor* actor(int rank) const;
+ aid_t actor(int rank) const;
std::string name() const override {return std::string("MPI_Group");}
- int rank(s4u::Actor* process) const;
void ref();
static void unref(MPI_Group group);
int size() const { return static_cast<int>(rank_to_pid_map_.size()); }