X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e8e45482e5bc7f26685b40e12884e8bab8f0fab8..48e24b849b73cfd56e92cdfac43b16eb06067b3a:/src/smpi/smpi_deployment.cpp diff --git a/src/smpi/smpi_deployment.cpp b/src/smpi/smpi_deployment.cpp index f6c169c70c..e5d4c38d4a 100644 --- a/src/smpi/smpi_deployment.cpp +++ b/src/smpi/smpi_deployment.cpp @@ -6,6 +6,7 @@ #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" @@ -37,6 +38,19 @@ void SMPI_app_instance_register(const char *name, xbt_main_func_t code, int num_ 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(h); + host->extension_set(new simgrid::smpi::SmpiHost(host)); + } + xbt_dynar_free(&hosts); + } + instance->name = name; instance->size = num_processes; instance->present_processes = 0; @@ -50,6 +64,7 @@ void SMPI_app_instance_register(const char *name, xbt_main_func_t code, int num_ smpi_instances = xbt_dict_new_homogeneous(xbt_free_f); } + xbt_dict_set(smpi_instances, name, (void*)instance, nullptr); }