diff --git a/source/adios2/core/ADIOS.cpp b/source/adios2/core/ADIOS.cpp index 3e058c9f20..d7227a8e40 100644 --- a/source/adios2/core/ADIOS.cpp +++ b/source/adios2/core/ADIOS.cpp @@ -115,7 +115,7 @@ ADIOS::ADIOS(const std::string configFile, helper::Comm comm, const std::string static bool perfstubsInit(false); if (!perfstubsInit) { - PERFSTUBS_INITIALIZE(); + PERFSTUBS_INITIALIZE(m_Comm.Rank()); perfstubsInit = true; atexit(ps_finalize_); } diff --git a/thirdparty/perfstubs/adios2-perfstubs-interface.h.in b/thirdparty/perfstubs/adios2-perfstubs-interface.h.in index 021c3118b0..d108329c5e 100644 --- a/thirdparty/perfstubs/adios2-perfstubs-interface.h.in +++ b/thirdparty/perfstubs/adios2-perfstubs-interface.h.in @@ -6,7 +6,7 @@ #else -#define PERFSTUBS_INITIALIZE() +#define PERFSTUBS_INITIALIZE(rank) #define PERFSTUBS_FINALIZE() #define PERFSTUBS_PAUSE_MEASUREMENT() #define PERFSTUBS_RESUME_MEASUREMENT() diff --git a/thirdparty/perfstubs/perfstubs/perfstubs_api/timer.c b/thirdparty/perfstubs/perfstubs/perfstubs_api/timer.c index b4177e5521..8b62fa0c32 100644 --- a/thirdparty/perfstubs/perfstubs/perfstubs_api/timer.c +++ b/thirdparty/perfstubs/perfstubs/perfstubs_api/timer.c @@ -102,7 +102,7 @@ PS_WEAK_PRE void ps_tool_free_counter_data(ps_tool_counter_data_t *) PS_WEAK_POS PS_WEAK_PRE void ps_tool_free_metadata(ps_tool_metadata_t *) PS_WEAK_POST; #endif -void initialize_library() { +void initialize_library(const int rank) { #ifdef PERFSTUBS_USE_STATIC /* The initialization function is the only required one */ initialize_functions[0] = &ps_tool_initialize; @@ -110,7 +110,8 @@ void initialize_library() { perfstubs_initialized = PERFSTUBS_FAILURE; return; } - printf("Found ps_tool_initialize(), registering tool\n"); + if (rank == 0) + printf("Found ps_tool_initialize(), registering tool\n"); finalize_functions[0] = &ps_tool_finalize; pause_measurement_functions[0] = &ps_tool_pause_measurement; resume_measurement_functions[0] = &ps_tool_resume_measurement; @@ -218,13 +219,13 @@ static inline void ps_register_thread_internal(void) { } /* Initialization */ -void ps_initialize_(void) { +void ps_initialize_(const int rank) { int i; /* Only do this once */ if (perfstubs_initialized != PERFSTUBS_UNKNOWN) { return; } - initialize_library(); + initialize_library(rank); for (i = 0 ; i < num_tools_registered ; i++) { initialize_functions[i](); } diff --git a/thirdparty/perfstubs/perfstubs/perfstubs_api/timer.h b/thirdparty/perfstubs/perfstubs/perfstubs_api/timer.h index c806c9ed64..1e5af3d2e2 100644 --- a/thirdparty/perfstubs/perfstubs/perfstubs_api/timer.h +++ b/thirdparty/perfstubs/perfstubs/perfstubs_api/timer.h @@ -49,7 +49,7 @@ extern int perfstubs_initialized; extern "C" { #endif -void ps_initialize_(void); +void ps_initialize_(const int rank); void ps_finalize_(void); void ps_pause_measurement_(void); void ps_resume_measurement_(void); @@ -93,7 +93,7 @@ char* ps_make_timer_name_(const char * file, const char * func, int line); * line or in a config.h file, however your project does it */ -#define PERFSTUBS_INITIALIZE() ps_initialize_(); +#define PERFSTUBS_INITIALIZE(rank) ps_initialize_(rank); #define PERFSTUBS_FINALIZE() ps_finalize_(); @@ -170,7 +170,7 @@ char* ps_make_timer_name_(const char * file, const char * func, int line); #else // defined(PERFSTUBS_USE_TIMERS) -#define PERFSTUBS_INITIALIZE() +#define PERFSTUBS_INITIALIZE(rank) #define PERFSTUBS_FINALIZE() #define PERFSTUBS_PAUSE_MEASUREMENT() #define PERFSTUBS_RESUME_MEASUREMENT()