auto* group = new simgrid::smpi::Group(size_);
comm_world_ = new simgrid::smpi::Comm(group, nullptr, false, -1);
universe_size += max_no_processes;
auto* group = new simgrid::smpi::Group(size_);
comm_world_ = new simgrid::smpi::Comm(group, nullptr, false, -1);
universe_size += max_no_processes;
if (code != nullptr) // When started with smpirun, we will not execute a function
simgrid::s4u::Engine::get_instance()->register_function(name, code);
if (code != nullptr) // When started with smpirun, we will not execute a function
simgrid::s4u::Engine::get_instance()->register_function(name, code);
- Instance instance(num_processes);
-
- smpi_instances.insert(std::pair<std::string, Instance>(name, instance));
+ smpi_instances.try_emplace(name, num_processes);
}
void smpi_deployment_register_process(const std::string& instance_id, int rank, const simgrid::s4u::Actor* actor)
{
const Instance& instance = smpi_instances.at(instance_id);
instance.comm_world_->group()->set_mapping(actor->get_pid(), rank);
}
void smpi_deployment_register_process(const std::string& instance_id, int rank, const simgrid::s4u::Actor* actor)
{
const Instance& instance = smpi_instances.at(instance_id);
instance.comm_world_->group()->set_mapping(actor->get_pid(), rank);
if (instance.finalized_ranks_ == instance.size_) {
simgrid::smpi::Comm::destroy(instance.comm_world_);
if (instance.finalized_ranks_ == instance.size_) {
simgrid::smpi::Comm::destroy(instance.comm_world_);
- for (auto const& item : smpi_instances) {
- XBT_INFO("Stalling SMPI instance: %s. Do all your MPI ranks call MPI_Finalize()?", item.first.c_str());
- Instance instance = item.second;
+ for (auto const& [name, instance] : smpi_instances) {
+ XBT_INFO("Stalling SMPI instance: %s. Do all your MPI ranks call MPI_Finalize()?", name.c_str());