X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c540b8009e2e13d461ecaa7cf17f68950b3539fb..70ddf34e493ee9edf89a70687eb82f32c58a2e86:/src/smpi/instr_smpi.cpp diff --git a/src/smpi/instr_smpi.cpp b/src/smpi/instr_smpi.cpp index 4079b4cd81..4c6054230f 100644 --- a/src/smpi/instr_smpi.cpp +++ b/src/smpi/instr_smpi.cpp @@ -5,10 +5,11 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "private.h" +#include "private.hpp" #include -#include -#include #include +#include +#include XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_smpi, instr, "Tracing SMPI"); @@ -170,7 +171,7 @@ void TRACE_internal_smpi_set_category (const char *category) xbt_dict_set (process_category, processid, xbt_strdup(category), nullptr); } -const char *TRACE_internal_smpi_get_category (void) +const char *TRACE_internal_smpi_get_category () { if (!TRACE_smpi_is_enabled()) return nullptr; @@ -186,7 +187,7 @@ void TRACE_smpi_alloc() process_category = xbt_dict_new_homogeneous(xbt_free_f); } -void TRACE_smpi_release(void) +void TRACE_smpi_release() { xbt_dict_free(&keys); xbt_dict_free(&process_category); @@ -208,7 +209,23 @@ void TRACE_smpi_init(int rank) } xbt_assert(father!=nullptr, "Could not find a parent for mpi rank %s at function %s", str, __FUNCTION__); - PJ_container_new(str, INSTR_SMPI, father); +#if HAVE_PAPI + container_t container = +#endif + PJ_container_new(str, INSTR_SMPI, father); +#if HAVE_PAPI + papi_counter_t counters = smpi_process_papi_counters(); + + for (auto& it : counters) { + /** + * Check whether this variable already exists or not. Otherwise, it will be created + * multiple times but only the last one would be used... + */ + if (PJ_type_get_or_null(it.first.c_str(), container->type) == nullptr) { + PJ_type_variable_new(it.first.c_str(), nullptr, container->type); + } + } +#endif } void TRACE_smpi_finalize(int rank)