X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a794f606622c7904c33cd6c2b1d769c185d1f81b..dd89cc2577e61b4b86b1ae7bc58dfa2ad00747e6:/src/smpi/internals/instr_smpi.cpp diff --git a/src/smpi/internals/instr_smpi.cpp b/src/smpi/internals/instr_smpi.cpp index f7f905741a..581f87fabb 100644 --- a/src/smpi/internals/instr_smpi.cpp +++ b/src/smpi/internals/instr_smpi.cpp @@ -15,50 +15,26 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_smpi, instr, "Tracing SMPI"); -static std::unordered_map*> 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*> 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* 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); }