- Instance(const std::string name, int max_no_processes, int process_count, MPI_Comm comm,
- msg_bar_t finalization_barrier)
- : name(name)
- , size(max_no_processes)
- , present_processes(0)
- , comm_world(comm)
- , finalization_barrier(finalization_barrier)
- { }
-
- const std::string name;
- int size;
- int present_processes;
- MPI_Comm comm_world;
- msg_bar_t finalization_barrier;
+ Instance(const std::string& name, int max_no_processes, MPI_Comm comm)
+ : name_(name), size_(max_no_processes), comm_world_(comm)
+ {
+ MPI_Group group = new simgrid::smpi::Group(size_);
+ comm_world_ = new simgrid::smpi::Comm(group, nullptr, 0, -1);
+ // FIXME : using MPI_Attr_put with MPI_UNIVERSE_SIZE is forbidden and we make it a no-op (which triggers a warning
+ // as MPI_ERR_ARG is returned). Directly calling Comm::attr_put breaks for now, as MPI_UNIVERSE_SIZE,is <0
+ // instance.comm_world->attr_put<simgrid::smpi::Comm>(MPI_UNIVERSE_SIZE, reinterpret_cast<void*>(instance.size));
+
+ universe_size += max_no_processes;
+ }
+
+ const std::string name_;
+ unsigned int size_;
+ std::vector<simgrid::s4u::ActorPtr> present_processes_;
+ unsigned int finalized_ranks_ = 0;
+ MPI_Comm comm_world_;