From: Christian Heinrich Date: Wed, 18 Apr 2018 16:46:29 +0000 (+0200) Subject: [SMPI] Instr: Cleanup TRACE_smpi_init / smpi_container() usage... X-Git-Tag: v3.20~410 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/c8f0e925189a5ec11b395e9cbe981a2440fdf5d6 [SMPI] Instr: Cleanup TRACE_smpi_init / smpi_container() usage... --- diff --git a/src/instr/instr_smpi.hpp b/src/instr/instr_smpi.hpp index e8a8197e8b..77283e5ec2 100644 --- a/src/instr/instr_smpi.hpp +++ b/src/instr/instr_smpi.hpp @@ -10,7 +10,10 @@ #include "src/instr/instr_private.hpp" #include +/* Helper functions */ +XBT_PRIVATE std::string smpi_container_key(int rank); XBT_PRIVATE container_t smpi_container(int rank); +XBT_PRIVATE void TRACE_smpi_setup_container(int rank, sg_host_t host); XBT_PRIVATE void TRACE_internal_smpi_set_category(const char* category); XBT_PRIVATE const char* TRACE_internal_smpi_get_category(); diff --git a/src/smpi/internals/instr_smpi.cpp b/src/smpi/internals/instr_smpi.cpp index 91fcf92501..f1a25bc05b 100644 --- a/src/smpi/internals/instr_smpi.cpp +++ b/src/smpi/internals/instr_smpi.cpp @@ -143,9 +143,14 @@ static const char* instr_find_color(const char* state) return ret; } +XBT_PRIVATE std::string smpi_container_key(int rank) +{ + return std::string("rank-") + std::to_string(rank); +} + XBT_PRIVATE container_t smpi_container(int rank) { - return simgrid::instr::Container::byName(std::string("rank-") + std::to_string(rank)); + return simgrid::instr::Container::byName(smpi_container_key(rank)); } static std::string TRACE_smpi_put_key(int src, int dst, int tag, int send) @@ -219,21 +224,26 @@ void TRACE_smpi_release() delete elm.second; } -void TRACE_smpi_init(int rank) +void TRACE_smpi_setup_container(int rank, sg_host_t host) { - if (not TRACE_smpi_is_enabled()) - return; - - std::string str = std::string("rank-") + std::to_string(rank); + std::string str = smpi_container_key(rank); container_t father; if (TRACE_smpi_is_grouped()){ - father = simgrid::instr::Container::byNameOrNull(sg_host_self_get_name()); + father = simgrid::instr::Container::byNameOrNull(host->get_name()); }else{ father = simgrid::instr::Container::getRoot(); } xbt_assert(father != nullptr, "Could not find a parent for mpi rank %s at function %s", str.c_str(), __func__); - father->createChild(str, "MPI"); + father->createChild(str, "MPI"); // This container is of type MPI +} + +void TRACE_smpi_init(int rank) +{ + if (not TRACE_smpi_is_enabled()) + return; + + TRACE_smpi_setup_container(rank, sg_host_self()); #if HAVE_PAPI container_t container = simgrid::instr::Container::byName(str); papi_counter_t counters = smpi_process()->papi_counters();