Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI] Instr: Cleanup TRACE_smpi_init / smpi_container() usage...
authorChristian Heinrich <franz-christian.heinrich@inria.fr>
Wed, 18 Apr 2018 16:46:29 +0000 (18:46 +0200)
committerChristian Heinrich <franz-christian.heinrich@inria.fr>
Wed, 18 Apr 2018 17:19:07 +0000 (19:19 +0200)
src/instr/instr_smpi.hpp
src/smpi/internals/instr_smpi.cpp

index e8a8197..77283e5 100644 (file)
 #include "src/instr/instr_private.hpp"
 #include <string>
 
+/* 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();
index 91fcf92..f1a25bc 100644 (file)
@@ -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();