Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SAMPI] Move tracing functions definitions to instr_ampi.cpp
authorChristian Heinrich <franz-christian.heinrich@inria.fr>
Thu, 2 Aug 2018 15:28:47 +0000 (17:28 +0200)
committerChristian Heinrich <franz-christian.heinrich@inria.fr>
Thu, 2 Aug 2018 19:55:54 +0000 (21:55 +0200)
This will still not build, but it is simpler to to see the changes with smaller commits

src/smpi/internals/instr_smpi.cpp
src/smpi/plugins/ampi/instr_ampi.cpp [new file with mode: 0644]

index 30352d1..792376a 100644 (file)
@@ -56,7 +56,6 @@ static std::map<std::string, std::string> smpi_colors = {{"recv", "1 0 0"},
   {"put", "0.3 1 0"},
   {"get", "0 1 0.3"},
   {"accumulate", "1 0.3 0"},
   {"put", "0.3 1 0"},
   {"get", "0 1 0.3"},
   {"accumulate", "1 0.3 0"},
-  {"migration", "0.2 0.5 0.2"},
   {"rput", "0.3 1 0"},
   {"rget", "0 1 0.3"},
   {"raccumulate", "1 0.3 0"},
   {"rput", "0.3 1 0"},
   {"rget", "0 1 0.3"},
   {"raccumulate", "1 0.3 0"},
@@ -318,46 +317,3 @@ void TRACE_smpi_process_change_host(int rank, sg_host_t new_host)
   simgrid::instr::Container::get_root()->get_link("MIGRATE_LINK")->end_event(cont, "M", key);
 }
 
   simgrid::instr::Container::get_root()->get_link("MIGRATE_LINK")->end_event(cont, "M", key);
 }
 
-void TRACE_Iteration_in(int rank, simgrid::instr::TIData* extra)
-{
-  if (not TRACE_smpi_is_enabled()) {
-    delete extra;
-    return;
-  }
-  smpi_container(rank)->get_state("MPI_STATE")->add_entity_value("iteration", instr_find_color("iteration"));
-  smpi_container(rank)->get_state("MPI_STATE")->push_event("iteration", extra);
-}
-
-void TRACE_Iteration_out(int rank, simgrid::instr::TIData* extra)
-{
-  if (not TRACE_smpi_is_enabled()) return;
-
-  smpi_container(rank)->get_state("MPI_STATE")->pop_event(extra);
-}
-
-void TRACE_migration_call(int rank, simgrid::instr::TIData* extra)
-{
-  if (not TRACE_smpi_is_enabled()) return;
-
-  const std::string operation = "migrate";
-  if(smpi_process()->replaying()) {//When replaying, we register an event.
-    smpi_container(rank)->get_state("MIGRATE_STATE")->add_entity_value(operation);
-
-    simgrid::instr::EventType* type =
-      static_cast<simgrid::instr::EventType*>(smpi_container(rank)->type_->by_name(operation));
-    new simgrid::instr::NewEvent(smpi_process()->simulated_elapsed(), smpi_container(rank), type,
-                                 type->get_entity_value(operation));
-  } else {
-    // From rktesser: Ugly workaround!
-    // TI tracing uses states as events, and does not support printing events.
-    // So, we need a different code than for replay in order to be able to
-    // generate ti_traces for the migration calls.
-    if (!TRACE_smpi_is_enabled()) {
-      delete extra;
-      return;
-    }
-    smpi_container(rank)->get_state("MIGRATE_STATE")->add_entity_value(operation, instr_find_color(operation.c_str()));
-    smpi_container(rank)->get_state("MIGRATE_STATE")->push_event(operation, extra);
-    smpi_container(rank)->get_state("MIGRATE_STATE")->pop_event();
-  }
-}
diff --git a/src/smpi/plugins/ampi/instr_ampi.cpp b/src/smpi/plugins/ampi/instr_ampi.cpp
new file mode 100644 (file)
index 0000000..cd6d53b
--- /dev/null
@@ -0,0 +1,60 @@
+/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved.          */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "src/smpi/plugins/ampi/instr_ampi.hpp"
+#include "smpi/smpi.h"
+#include "src/instr/instr_private.hpp"
+#include <src/instr/instr_smpi.hpp>
+#include <src/smpi/include/smpi_actor.hpp>
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_sampi, instr, "Tracing (S)AMPI");
+
+static std::map<std::string, std::string> ampi_colors = {{"migrate", "0.2 0.5 0.2"},
+  {"iteration", "0.5 0.5 0.5"}
+};
+
+void TRACE_Iteration_in(int rank, simgrid::instr::TIData* extra)
+{
+  if (not TRACE_smpi_is_enabled()) {
+    delete extra;
+    return;
+  }
+  smpi_container(rank)->get_state("MPI_STATE")->add_entity_value("iteration", ampi_colors["iteration"]);
+  smpi_container(rank)->get_state("MPI_STATE")->push_event("iteration", extra);
+}
+
+void TRACE_Iteration_out(int rank, simgrid::instr::TIData* extra)
+{
+  if (not TRACE_smpi_is_enabled()) return;
+
+  smpi_container(rank)->get_state("MPI_STATE")->pop_event(extra);
+}
+
+void TRACE_migration_call(int rank, simgrid::instr::TIData* extra)
+{
+  if (not TRACE_smpi_is_enabled()) return;
+
+  const std::string operation = "migrate";
+  if(smpi_process()->replaying()) {//When replaying, we register an event.
+    smpi_container(rank)->get_state("MIGRATE_STATE")->add_entity_value(operation);
+
+    simgrid::instr::EventType* type =
+      static_cast<simgrid::instr::EventType*>(smpi_container(rank)->type_->by_name(operation));
+    new simgrid::instr::NewEvent(smpi_process()->simulated_elapsed(), smpi_container(rank), type,
+                                 type->get_entity_value(operation));
+  } else {
+    // FIXME From rktesser: Ugly workaround!
+    // TI tracing uses states as events, and does not support printing events.
+    // So, we need a different code than for replay in order to be able to
+    // generate ti_traces for the migration calls.
+    if (!TRACE_smpi_is_enabled()) {
+      delete extra;
+      return;
+    }
+    smpi_container(rank)->get_state("MIGRATE_STATE")->add_entity_value(operation, ampi_colors[operation.c_str()]);
+    smpi_container(rank)->get_state("MIGRATE_STATE")->push_event(operation, extra);
+    smpi_container(rank)->get_state("MIGRATE_STATE")->pop_event();
+  }
+}