Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
more strings
[simgrid.git] / src / smpi / internals / instr_smpi.cpp
index f7f9057..581f87f 100644 (file)
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_smpi, instr, "Tracing SMPI");
 
-static std::unordered_map<char*, std::deque<std::string>*> keys;
-
-static const char *smpi_colors[] ={
-    "recv",     "1 0 0",
-    "irecv",    "1 0.52 0.52",
-    "send",     "0 0 1",
-    "isend",    "0.52 0.52 1",
-    "sendrecv", "0 1 1",
-    "wait",     "1 1 0",
-    "waitall",  "0.78 0.78 0",
-    "waitany",  "0.78 0.78 0.58",
-    "test",     "0.52 0.52 0",
-
-    "allgather",     "1 0 0",
-    "allgatherv",    "1 0.52 0.52",
-    "allreduce",     "1 0 1",
-    "alltoall",      "0.52 0 1",
-    "alltoallv",     "0.78 0.52 1",
-    "barrier",       "0 0.78 0.78",
-    "bcast",         "0 0.78 0.39",
-    "gather",        "1 1 0",
-    "gatherv",       "1 1 0.52",
-    "reduce",        "0 1 0",
-    "reducescatter", "0.52 1 0.52",
-    "scan",          "1 0.58 0.23",
-    "exscan",          "1 0.54 0.25",
-    "scatterv",      "0.52 0 0.52",
-    "scatter",       "1 0.74 0.54",
-
-    "computing",     "0 1 1",
-    "sleeping",      "0 0.5 0.5",
-
-    "init",       "0 1 0",
-    "finalize",     "0 1 0",
-
-    "put",       "0.3 1 0",
-    "get",       "0 1 0.3",
-    "accumulate",       "1 0.3 0",
-    "win_fence",       "1 0 0.3",
-    "win_post",       "1 0 0.8",
-    "win_wait",       "1 0.8 0",
-    "win_start",       "0.8 0 1",
-    "win_complete",       "0.8 1 0",
-    nullptr, nullptr,
+static std::unordered_map<std::string, std::deque<std::string>*> keys;
+
+static const char* smpi_colors[] = {
+    "recv",      "1 0 0",       "irecv",         "1 0.52 0.52",    "send",       "0 0 1",
+    "isend",     "0.52 0.52 1", "sendrecv",      "0 1 1",          "wait",       "1 1 0",
+    "waitall",   "0.78 0.78 0", "waitany",       "0.78 0.78 0.58", "test",       "0.52 0.52 0",
+
+    "allgather", "1 0 0",       "allgatherv",    "1 0.52 0.52",    "allreduce",  "1 0 1",
+    "alltoall",  "0.52 0 1",    "alltoallv",     "0.78 0.52 1",    "barrier",    "0 0.78 0.78",
+    "bcast",     "0 0.78 0.39", "gather",        "1 1 0",          "gatherv",    "1 1 0.52",
+    "reduce",    "0 1 0",       "reducescatter", "0.52 1 0.52",    "scan",       "1 0.58 0.23",
+    "exscan",    "1 0.54 0.25", "scatterv",      "0.52 0 0.52",    "scatter",    "1 0.74 0.54",
+
+    "computing", "0 1 1",       "sleeping",      "0 0.5 0.5",
+
+    "init",      "0 1 0",       "finalize",      "0 1 0",
+
+    "put",       "0.3 1 0",     "get",           "0 1 0.3",        "accumulate", "1 0.3 0",
+    "win_fence", "1 0 0.3",     "win_post",      "1 0 0.8",        "win_wait",   "1 0.8 0",
+    "win_start", "0.8 0 1",     "win_complete",  "0.8 1 0",        nullptr,      nullptr,
 };
 
 static const char* instr_find_color(const char* state)
@@ -85,13 +61,11 @@ XBT_PRIVATE std::string smpi_container(int rank)
   return std::string("rank-") + std::to_string(rank);
 }
 
-static char *TRACE_smpi_get_key(int src, int dst, int tag, char *key, int n, int send);
-
-static char *TRACE_smpi_put_key(int src, int dst, int tag, char *key, int n, int send)
+static std::string TRACE_smpi_put_key(int src, int dst, int tag, int send)
 {
-  //get the dynar for src#dst
-  char aux[INSTR_DEFAULT_STR_SIZE];
-  snprintf(aux, INSTR_DEFAULT_STR_SIZE, "%d#%d#%d#%d", src, dst, tag, send);
+  // get the deque for src#dst
+  std::string aux =
+      std::to_string(src) + "#" + std::to_string(dst) + "#" + std::to_string(tag) + "#" + std::to_string(send);
   auto it = keys.find(aux);
   std::deque<std::string>* d;
 
@@ -104,7 +78,8 @@ static char *TRACE_smpi_put_key(int src, int dst, int tag, char *key, int n, int
   //generate the key
   static unsigned long long counter = 0;
   counter++;
-  snprintf(key, n, "%d_%d_%d_%llu", src, dst, tag, counter);
+  std::string key =
+      std::to_string(src) + "_" + std::to_string(dst) + "_" + std::to_string(tag) + "_" + std::to_string(counter);
 
   //push it
   d->push_back(key);
@@ -112,16 +87,17 @@ static char *TRACE_smpi_put_key(int src, int dst, int tag, char *key, int n, int
   return key;
 }
 
-static char *TRACE_smpi_get_key(int src, int dst, int tag, char *key, int n, int send)
+static std::string TRACE_smpi_get_key(int src, int dst, int tag, int send)
 {
-  char aux[INSTR_DEFAULT_STR_SIZE];
-  snprintf(aux, INSTR_DEFAULT_STR_SIZE, "%d#%d#%d#%d", src, dst, tag, send==1?0:1);
+  std::string key;
+  std::string aux = std::to_string(src) + "#" + std::to_string(dst) + "#" + std::to_string(tag) + "#" +
+                    std::to_string(send == 1 ? 0 : 1);
   auto it = keys.find(aux);
   if (it == keys.end()) {
     // first posted
-    TRACE_smpi_put_key(src, dst, tag, key, n, send);
+    key = TRACE_smpi_put_key(src, dst, tag, send);
   } else {
-    snprintf(key, n, "%s", it->second->front().c_str());
+    key = it->second->front();
     it->second->pop_front();
   }
   return key;
@@ -369,12 +345,11 @@ void TRACE_smpi_send(int rank, int src, int dst, int tag, int size)
   if (not TRACE_smpi_is_enabled())
     return;
 
-  char key[INSTR_DEFAULT_STR_SIZE] = {0};
-  TRACE_smpi_get_key(src, dst, tag, key, INSTR_DEFAULT_STR_SIZE,1);
+  std::string key = TRACE_smpi_get_key(src, dst, tag, 1);
 
   container_t container      = simgrid::instr::Container::byName(smpi_container(rank));
   simgrid::instr::Type* type = simgrid::instr::Type::getRootType()->byName("MPI_LINK");
-  XBT_DEBUG("Send tracing from %d to %d, tag %d, with key %s", src, dst, tag, key);
+  XBT_DEBUG("Send tracing from %d to %d, tag %d, with key %s", src, dst, tag, key.c_str());
   new simgrid::instr::StartLinkEvent(SIMIX_get_clock(), PJ_container_get_root(), type, container, "PTP", key, size);
 }
 
@@ -383,11 +358,10 @@ void TRACE_smpi_recv(int src, int dst, int tag)
   if (not TRACE_smpi_is_enabled())
     return;
 
-  char key[INSTR_DEFAULT_STR_SIZE] = {0};
-  TRACE_smpi_get_key(src, dst, tag, key, INSTR_DEFAULT_STR_SIZE,0);
+  std::string key = TRACE_smpi_get_key(src, dst, tag, 0);
 
   container_t container      = simgrid::instr::Container::byName(smpi_container(dst));
   simgrid::instr::Type* type = simgrid::instr::Type::getRootType()->byName("MPI_LINK");
-  XBT_DEBUG("Recv tracing from %d to %d, tag %d, with key %s", src, dst, tag, key);
+  XBT_DEBUG("Recv tracing from %d to %d, tag %d, with key %s", src, dst, tag, key.c_str());
   new simgrid::instr::EndLinkEvent(SIMIX_get_clock(), PJ_container_get_root(), type, container, "PTP", key);
 }