* under the terms of the license (GNU LGPL) which comes with this package. */
#include "private.h"
+#include "private.hpp"
#include <ctype.h>
-#include <wchar.h>
-#include <stdarg.h>
#include <simgrid/sg_config.h>
+#include <stdarg.h>
+#include <wchar.h>
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_smpi, instr, "Tracing SMPI");
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;
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);
}
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)