-/* Copyright (c) 2004-2014. The SimGrid Team.
+/* Copyright (c) 2004-2017. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
#include "private.h"
#include "simgrid/msg.h" /* barrier */
+#include "src/smpi/SmpiHost.hpp"
#include "xbt/dict.h"
#include "xbt/log.h"
#include "xbt/sysdep.h"
s_smpi_mpi_instance_t* instance = (s_smpi_mpi_instance_t*)xbt_malloc(sizeof(s_smpi_mpi_instance_t));
+ static int already_called = 0;
+ if (!already_called) {
+ already_called = 1;
+ xbt_dynar_t hosts = MSG_hosts_as_dynar();
+ unsigned int cursor;
+ void* h;
+ xbt_dynar_foreach(hosts, cursor, h) {
+ simgrid::s4u::Host* host = static_cast<simgrid::s4u::Host*>(h);
+ host->extension_set(new simgrid::smpi::SmpiHost(host));
+ }
+ xbt_dynar_free(&hosts);
+ }
+
instance->name = name;
instance->size = num_processes;
instance->present_processes = 0;
smpi_instances = xbt_dict_new_homogeneous(xbt_free_f);
}
+
xbt_dict_set(smpi_instances, name, (void*)instance, nullptr);
}
xbt_assert(instance, "Error, unknown instance %s", instance_id);
if(instance->comm_world == MPI_COMM_NULL){
- MPI_Group group = new Group(instance->size);
- instance->comm_world = new Comm(group, nullptr);
+ MPI_Group group = new simgrid::smpi::Group(instance->size);
+ instance->comm_world = new simgrid::smpi::Comm(group, nullptr);
}
instance->present_processes++;
index_to_process_data[index]=instance->index+rank;