From fadc8675ec70ddbaab965e4076fef06479dfac56 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Mon, 26 Aug 2024 17:19:54 +0200 Subject: [PATCH 01/21] started unifying tracing --- CMakeLists.txt | 3 ++ include/firestarter/Tracing/Tracing.hpp | 35 ++++++++++++++++++++++ src/CMakeLists.txt | 29 ++++++++++++++++++ src/firestarter/Tracing/Caliper.cpp | 39 +++++++++++++++++++++++++ src/firestarter/Tracing/LogTracing.cpp | 37 +++++++++++++++++++++++ src/firestarter/Tracing/NoTracing.cpp | 36 +++++++++++++++++++++++ src/firestarter/Tracing/ScoreP.cpp | 38 ++++++++++++++++++++++++ src/firestarter/Tracing/VampirTrace.cpp | 36 +++++++++++++++++++++++ 8 files changed, 253 insertions(+) create mode 100644 include/firestarter/Tracing/Tracing.hpp create mode 100644 src/firestarter/Tracing/Caliper.cpp create mode 100644 src/firestarter/Tracing/LogTracing.cpp create mode 100644 src/firestarter/Tracing/NoTracing.cpp create mode 100644 src/firestarter/Tracing/ScoreP.cpp create mode 100644 src/firestarter/Tracing/VampirTrace.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 93c0fb86..8201d633 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,9 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") endif() endif() +set(FIRESTARTER_TRACING "None" CACHE STRING "FIRESTARTER_TRACING can be any of None, Logger, ScoreP, or VampirTrace.") +set_property(CACHE FIRESTARTER_TRACING PROPERTY STRINGS None Logger ScoreP VampirTrace) + set(FIRESTARTER_BUILD_TYPE "FIRESTARTER" CACHE STRING "FIRESTARTER_BUILD_TYPE can be any of FIRESTARTER, FIRESTARTER_CUDA, or FIRESTARTER_ONEAPI.") set_property(CACHE FIRESTARTER_BUILD_TYPE PROPERTY STRINGS FIRESTARTER FIRESTARTER_CUDA FIRESTARTER_ONEAPI) if (${FIRESTARTER_BUILD_TYPE} STREQUAL "FIRESTARTER") diff --git a/include/firestarter/Tracing/Tracing.hpp b/include/firestarter/Tracing/Tracing.hpp new file mode 100644 index 00000000..c09a60e3 --- /dev/null +++ b/include/firestarter/Tracing/Tracing.hpp @@ -0,0 +1,35 @@ +/****************************************************************************** + * FIRESTARTER - A Processor Stress Test Utility + * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Performance Computing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact: daniel.hackenberg@tu-dresden.de + *****************************************************************************/ + +#pragma once + +namespace firestarter::tracing { + +class Tracing { +public: + Tracing(); + virtual ~Tracing(); + + inline virtual void regionBegin(const char* const region_name); + inline virtual void regionEnd(const char* const region_name); +}; + +} // firestarter::tracing diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bbd62148..66341ebc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -41,6 +41,35 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") ) endif() +if("${FIRESTARTER_TRACING}" STREQUAL "None") + SET(FIRESTARTER_FILES + ${FIRESTARTER_FILES} + firestarter/Tracing/NoTracing.cpp + ) +elseif("${FIRESTARTER_TRACING}" STREQUAL "Logger") + SET(FIRESTARTER_FILES + ${FIRESTARTER_FILES} + firestarter/Tracing/LogTracing.cpp + ) +elseif("${FIRESTARTER_TRACING}" STREQUAL "ScoreP") + SET(FIRESTARTER_FILES + ${FIRESTARTER_FILES} + firestarter/Tracing/ScoreP.cpp + ) + #todo find folder + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSCOREP_USER_ENABLE") + #todo link scorep +elseif("${FIRESTARTER_TRACING}" STREQUAL "VampirTrace") + SET(FIRESTARTER_FILES + ${FIRESTARTER_FILES} + firestarter/Tracing/VampirTrace.cpp + ) + #todo find folder + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVTRACE") + #todo link vt user +endif() + + SET(FIRESTARTER_LINK_LIBRARIES ) diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp new file mode 100644 index 00000000..efec682b --- /dev/null +++ b/src/firestarter/Tracing/Caliper.cpp @@ -0,0 +1,39 @@ +/****************************************************************************** + * FIRESTARTER - A Processor Stress Test Utility + * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Performance Computing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact: daniel.hackenberg@tu-dresden.de + *****************************************************************************/ + +#include + +#include +#include + +using namespace firestarter::tracing; + +Tracing::Tracing(){} +Tracing::~Tracing(){} + +inline void Tracing::regionBegin(const char* const region_name) { + CALI_MARK_BEGIN(region_name); +} + +inline void Tracing::regionEnd(const char* const region_name) { + CALI_MARK_END(region_name); +} + diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp new file mode 100644 index 00000000..643c501c --- /dev/null +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -0,0 +1,37 @@ +/****************************************************************************** + * FIRESTARTER - A Processor Stress Test Utility + * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Performance Computing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact: daniel.hackenberg@tu-dresden.de + *****************************************************************************/ + + +#include +#include + +using namespace firestarter::tracing; + +Tracing::Tracing(){} +Tracing::~Tracing(){} + +inline void Tracing::regionBegin(const char* const region_name) { + firestarter::log::trace() << "Start " << region_name; +} + +inline void Tracing::regionEnd(const char* const region_name) { + firestarter::log::trace() << "End " << region_name; +} \ No newline at end of file diff --git a/src/firestarter/Tracing/NoTracing.cpp b/src/firestarter/Tracing/NoTracing.cpp new file mode 100644 index 00000000..6ba69388 --- /dev/null +++ b/src/firestarter/Tracing/NoTracing.cpp @@ -0,0 +1,36 @@ +/****************************************************************************** + * FIRESTARTER - A Processor Stress Test Utility + * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Performance Computing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact: daniel.hackenberg@tu-dresden.de + *****************************************************************************/ + +#include + +using namespace firestarter::tracing; + +Tracing::Tracing(){} +Tracing::~Tracing(){} + +inline void Tracing::regionBegin(const char* const region_name) { + // Do nothing +} + +inline void Tracing::regionEnd(const char* const region_name) { + // Do nothing +} + diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp new file mode 100644 index 00000000..48c21112 --- /dev/null +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -0,0 +1,38 @@ +/****************************************************************************** + * FIRESTARTER - A Processor Stress Test Utility + * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Performance Computing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact: daniel.hackenberg@tu-dresden.de + *****************************************************************************/ + +#include + +#include + +using namespace firestarter::tracing; + +Tracing::Tracing(){} +Tracing::~Tracing(){} + +inline void Tracing::regionBegin(const char* const region_name) { + SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, + SCOREP_USER_REGION_TYPE_COMMON); +} + +inline void Tracing::regionEnd(const char* const region_name) { + SCOREP_USER_REGION_BY_NAME_END(region_name); +} \ No newline at end of file diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp new file mode 100644 index 00000000..eefc8a2c --- /dev/null +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -0,0 +1,36 @@ +/****************************************************************************** + * FIRESTARTER - A Processor Stress Test Utility + * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Performance Computing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact: daniel.hackenberg@tu-dresden.de + *****************************************************************************/ + +#include +#include + +using namespace firestarter::tracing; + +Tracing::Tracing(){} +Tracing::~Tracing(){} + +inline void Tracing::regionBegin(const char* const region_name) { + VT_USER_START(region_name); +} + +inline void Tracing::regionEnd(const char* const region_name) { + VT_USER_END(region_name); +} \ No newline at end of file From e522e297fd919e4367110b85de728fa0cf8a1141 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Tue, 27 Aug 2024 09:38:31 +0200 Subject: [PATCH 02/21] some changes --- CMakeLists.txt | 3 +++ include/firestarter/Tracing/Tracing.hpp | 6 +++--- src/CMakeLists.txt | 17 ++++++++++++---- src/firestarter/LoadWorker.cpp | 27 ++++++------------------- 4 files changed, 25 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8201d633..1b2236f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,9 @@ endif() set(FIRESTARTER_TRACING "None" CACHE STRING "FIRESTARTER_TRACING can be any of None, Logger, ScoreP, or VampirTrace.") set_property(CACHE FIRESTARTER_TRACING PROPERTY STRINGS None Logger ScoreP VampirTrace) +set(FIRESTARTER_TRACING_CXX_FLAGS "${FIRESTARTER_TRACING_CXX_FLAGS}" CACHE STRING "FIRESTARTER_TRACING_CXX_FLAGS should add include paths for the selected tracing infrastructure.") +set(FIRESTARTER_TRACING_LD_FLAGS "${FIRESTARTER_TRACING_CXX_FLAGS}" CACHE STRING "FIRESTARTER_TRACING_LD_FLAGS should set linker flags for the selected tracing infrastructure.") + set(FIRESTARTER_BUILD_TYPE "FIRESTARTER" CACHE STRING "FIRESTARTER_BUILD_TYPE can be any of FIRESTARTER, FIRESTARTER_CUDA, or FIRESTARTER_ONEAPI.") set_property(CACHE FIRESTARTER_BUILD_TYPE PROPERTY STRINGS FIRESTARTER FIRESTARTER_CUDA FIRESTARTER_ONEAPI) if (${FIRESTARTER_BUILD_TYPE} STREQUAL "FIRESTARTER") diff --git a/include/firestarter/Tracing/Tracing.hpp b/include/firestarter/Tracing/Tracing.hpp index c09a60e3..af64c07d 100644 --- a/include/firestarter/Tracing/Tracing.hpp +++ b/include/firestarter/Tracing/Tracing.hpp @@ -26,10 +26,10 @@ namespace firestarter::tracing { class Tracing { public: Tracing(); - virtual ~Tracing(); + ~Tracing(); - inline virtual void regionBegin(const char* const region_name); - inline virtual void regionEnd(const char* const region_name); + inline void regionBegin(const char* const region_name); + inline void regionEnd(const char* const region_name); }; } // firestarter::tracing diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 66341ebc..0397ad99 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -57,16 +57,14 @@ elseif("${FIRESTARTER_TRACING}" STREQUAL "ScoreP") firestarter/Tracing/ScoreP.cpp ) #todo find folder - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSCOREP_USER_ENABLE") - #todo link scorep + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSCOREP_USER_ENABLE ${FIRESTARTER_TRACING_CXXFLAGS}") elseif("${FIRESTARTER_TRACING}" STREQUAL "VampirTrace") SET(FIRESTARTER_FILES ${FIRESTARTER_FILES} firestarter/Tracing/VampirTrace.cpp ) #todo find folder - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVTRACE") - #todo link vt user + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVTRACE ${FIRESTARTER_TRACING_CXXFLAGS}") endif() @@ -212,3 +210,14 @@ elseif(${FIRESTARTER_BUILD_TYPE} STREQUAL "FIRESTARTER") nlohmann_json::nlohmann_json ) endif() +if("${FIRESTARTER_TRACING}" STREQUAL "ScoreP") + #todo link scorep + target_link_libraries("${FIRESTARTER_BUILD_TYPE}" + "${FIRESTARTER_TRACING_LDFLAGS}" + ) +elseif("${FIRESTARTER_TRACING}" STREQUAL "VampirTrace") + #todo link vt user + target_link_libraries("${FIRESTARTER_BUILD_TYPE}" + "${FIRESTARTER_TRACING_LDFLAGS}" + ) +endif() \ No newline at end of file diff --git a/src/firestarter/LoadWorker.cpp b/src/firestarter/LoadWorker.cpp index 3c922cf6..15d630df 100644 --- a/src/firestarter/LoadWorker.cpp +++ b/src/firestarter/LoadWorker.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #if defined(linux) || defined(__linux__) extern "C" { @@ -267,6 +268,7 @@ void Firestarter::printPerformanceReport() { void Firestarter::loadThreadWorker(std::shared_ptr td) { + firestarter::tracing::Tracing tracing; int old = THREAD_WAIT; #if defined(linux) || defined(__linux__) @@ -350,32 +352,15 @@ void Firestarter::loadThreadWorker(std::shared_ptr td) { // will be terminated by watchdog for (;;) { // call high load function -#ifdef ENABLE_VTRACING - VT_USER_START("HIGH_LOAD_FUNC"); -#endif -#ifdef ENABLE_SCOREP - SCOREP_USER_REGION_BY_NAME_BEGIN("HIGH", - SCOREP_USER_REGION_TYPE_COMMON); -#endif + tracing.regionBegin("High"); td->iterations = td->config().payload().highLoadFunction( td->addrMem, td->addrHigh, td->iterations); // call low load function -#ifdef ENABLE_VTRACING - VT_USER_END("HIGH_LOAD_FUNC"); - VT_USER_START("LOW_LOAD_FUNC"); -#endif -#ifdef ENABLE_SCOREP - SCOREP_USER_REGION_BY_NAME_END("HIGH"); - SCOREP_USER_REGION_BY_NAME_BEGIN("LOW", SCOREP_USER_REGION_TYPE_COMMON); -#endif + tracing.regionEnd("High"); + tracing.regionBegin("Low"); td->config().payload().lowLoadFunction(td->addrHigh, td->period); -#ifdef ENABLE_VTRACING - VT_USER_END("LOW_LOAD_FUNC"); -#endif -#ifdef ENABLE_SCOREP - SCOREP_USER_REGION_BY_NAME_END("LOW"); -#endif + tracing.regionEnd("Low"); // terminate if master signals end of run and record stop timestamp if (*td->addrHigh == LOAD_STOP) { From dd939a96719441b7c4c09f634d0c80410b1590e8 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 12:29:29 +0200 Subject: [PATCH 03/21] try to find out what went wrong here --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 9d90f980..4ad256d1 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -285,7 +285,7 @@ jobs: shell: pwsh run: | cd build - cmake --build . -j2 + VERBOSE=1 cmake --build . -j2 - name: Copy Hwloc DLL shell: pwsh if: matrix.cfg.MSVC == true From 8e045dfba06fc8b1f9d593be53cfd9de7451e945 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 12:33:12 +0200 Subject: [PATCH 04/21] turned some things into options --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b2236f2..b6af0fcd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,8 +60,8 @@ endif() set(FIRESTARTER_TRACING "None" CACHE STRING "FIRESTARTER_TRACING can be any of None, Logger, ScoreP, or VampirTrace.") set_property(CACHE FIRESTARTER_TRACING PROPERTY STRINGS None Logger ScoreP VampirTrace) -set(FIRESTARTER_TRACING_CXX_FLAGS "${FIRESTARTER_TRACING_CXX_FLAGS}" CACHE STRING "FIRESTARTER_TRACING_CXX_FLAGS should add include paths for the selected tracing infrastructure.") -set(FIRESTARTER_TRACING_LD_FLAGS "${FIRESTARTER_TRACING_CXX_FLAGS}" CACHE STRING "FIRESTARTER_TRACING_LD_FLAGS should set linker flags for the selected tracing infrastructure.") +option(FIRESTARTER_TRACING_CXX_FLAGS "FIRESTARTER_TRACING_CXX_FLAGS should add include paths for the selected tracing infrastructure." "${FIRESTARTER_TRACING_CXX_FLAGS}") +option(FIRESTARTER_TRACING_LD_FLAGS "FIRESTARTER_TRACING_LD_FLAGS should set linker flags for the selected tracing infrastructure." "${FIRESTARTER_TRACING_CXX_FLAGS}") set(FIRESTARTER_BUILD_TYPE "FIRESTARTER" CACHE STRING "FIRESTARTER_BUILD_TYPE can be any of FIRESTARTER, FIRESTARTER_CUDA, or FIRESTARTER_ONEAPI.") set_property(CACHE FIRESTARTER_BUILD_TYPE PROPERTY STRINGS FIRESTARTER FIRESTARTER_CUDA FIRESTARTER_ONEAPI) From d4e1d2b11b4142e244e164c97d7d8fea5aee8f9d Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 12:38:52 +0200 Subject: [PATCH 05/21] another test --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 4ad256d1..4eb13e93 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -285,7 +285,7 @@ jobs: shell: pwsh run: | cd build - VERBOSE=1 cmake --build . -j2 + CXX_FLAGS="-v" LD_FLAGS="-v" cmake --build . -j2 - name: Copy Hwloc DLL shell: pwsh if: matrix.cfg.MSVC == true From 744688e8d40852fa32e73df0fb6aa2816561d538 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 12:42:52 +0200 Subject: [PATCH 06/21] test. works now? --- src/firestarter/Tracing/Caliper.cpp | 4 ++-- src/firestarter/Tracing/LogTracing.cpp | 4 ++-- src/firestarter/Tracing/NoTracing.cpp | 4 ++-- src/firestarter/Tracing/ScoreP.cpp | 4 ++-- src/firestarter/Tracing/VampirTrace.cpp | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp index efec682b..9bf30250 100644 --- a/src/firestarter/Tracing/Caliper.cpp +++ b/src/firestarter/Tracing/Caliper.cpp @@ -29,11 +29,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* const region_name) { +inline void Tracing::regionBegin(char* const region_name) { CALI_MARK_BEGIN(region_name); } -inline void Tracing::regionEnd(const char* const region_name) { +inline void Tracing::regionEnd(char* const region_name) { CALI_MARK_END(region_name); } diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index 643c501c..6b737419 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -28,10 +28,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* const region_name) { +inline void Tracing::regionBegin(char* const region_name) { firestarter::log::trace() << "Start " << region_name; } -inline void Tracing::regionEnd(const char* const region_name) { +inline void Tracing::regionEnd(char* const region_name) { firestarter::log::trace() << "End " << region_name; } \ No newline at end of file diff --git a/src/firestarter/Tracing/NoTracing.cpp b/src/firestarter/Tracing/NoTracing.cpp index 6ba69388..bc674c1a 100644 --- a/src/firestarter/Tracing/NoTracing.cpp +++ b/src/firestarter/Tracing/NoTracing.cpp @@ -26,11 +26,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* const region_name) { +inline void Tracing::regionBegin(char* const region_name) { // Do nothing } -inline void Tracing::regionEnd(const char* const region_name) { +inline void Tracing::regionEnd(char* const region_name) { // Do nothing } diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp index 48c21112..6adbf405 100644 --- a/src/firestarter/Tracing/ScoreP.cpp +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -28,11 +28,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* const region_name) { +inline void Tracing::regionBegin(char* const region_name) { SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, SCOREP_USER_REGION_TYPE_COMMON); } -inline void Tracing::regionEnd(const char* const region_name) { +inline void Tracing::regionEnd(char* const region_name) { SCOREP_USER_REGION_BY_NAME_END(region_name); } \ No newline at end of file diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp index eefc8a2c..8c650b9d 100644 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -27,10 +27,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* const region_name) { +inline void Tracing::regionBegin(char* const region_name) { VT_USER_START(region_name); } -inline void Tracing::regionEnd(const char* const region_name) { +inline void Tracing::regionEnd(char* const region_name) { VT_USER_END(region_name); } \ No newline at end of file From b35895cd05a5dd29ec3046947d7e1b4141308ed3 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 12:43:19 +0200 Subject: [PATCH 07/21] reset workflow --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 4eb13e93..9d90f980 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -285,7 +285,7 @@ jobs: shell: pwsh run: | cd build - CXX_FLAGS="-v" LD_FLAGS="-v" cmake --build . -j2 + cmake --build . -j2 - name: Copy Hwloc DLL shell: pwsh if: matrix.cfg.MSVC == true From add7ef6eea43b693b1f3f7947422569cd80c3d50 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 12:51:28 +0200 Subject: [PATCH 08/21] next try --- include/firestarter/Tracing/Tracing.hpp | 4 ++-- src/firestarter/Tracing/Caliper.cpp | 4 ++-- src/firestarter/Tracing/LogTracing.cpp | 4 ++-- src/firestarter/Tracing/NoTracing.cpp | 4 ++-- src/firestarter/Tracing/ScoreP.cpp | 4 ++-- src/firestarter/Tracing/VampirTrace.cpp | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/firestarter/Tracing/Tracing.hpp b/include/firestarter/Tracing/Tracing.hpp index af64c07d..b33af27f 100644 --- a/include/firestarter/Tracing/Tracing.hpp +++ b/include/firestarter/Tracing/Tracing.hpp @@ -28,8 +28,8 @@ class Tracing { Tracing(); ~Tracing(); - inline void regionBegin(const char* const region_name); - inline void regionEnd(const char* const region_name); + inline void regionBegin(const char* region_name); + inline void regionEnd(const char* region_name); }; } // firestarter::tracing diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp index 9bf30250..ca1ae2f5 100644 --- a/src/firestarter/Tracing/Caliper.cpp +++ b/src/firestarter/Tracing/Caliper.cpp @@ -29,11 +29,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char* const region_name) { +inline void Tracing::regionBegin(const char* region_name) { CALI_MARK_BEGIN(region_name); } -inline void Tracing::regionEnd(char* const region_name) { +inline void Tracing::regionEnd(const char* region_name) { CALI_MARK_END(region_name); } diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index 6b737419..f020c9eb 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -28,10 +28,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char* const region_name) { +inline void Tracing::regionBegin(const char* region_name) { firestarter::log::trace() << "Start " << region_name; } -inline void Tracing::regionEnd(char* const region_name) { +inline void Tracing::regionEnd(const char* region_name) { firestarter::log::trace() << "End " << region_name; } \ No newline at end of file diff --git a/src/firestarter/Tracing/NoTracing.cpp b/src/firestarter/Tracing/NoTracing.cpp index bc674c1a..a69d9c74 100644 --- a/src/firestarter/Tracing/NoTracing.cpp +++ b/src/firestarter/Tracing/NoTracing.cpp @@ -26,11 +26,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char* const region_name) { +inline void Tracing::regionBegin(const char* region_name) { // Do nothing } -inline void Tracing::regionEnd(char* const region_name) { +inline void Tracing::regionEnd(const char* region_name) { // Do nothing } diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp index 6adbf405..ee4ce931 100644 --- a/src/firestarter/Tracing/ScoreP.cpp +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -28,11 +28,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char* const region_name) { +inline void Tracing::regionBegin(const char* region_name) { SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, SCOREP_USER_REGION_TYPE_COMMON); } -inline void Tracing::regionEnd(char* const region_name) { +inline void Tracing::regionEnd(const char* region_name) { SCOREP_USER_REGION_BY_NAME_END(region_name); } \ No newline at end of file diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp index 8c650b9d..5d6b846c 100644 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -27,10 +27,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char* const region_name) { +inline void Tracing::regionBegin(const char* region_name) { VT_USER_START(region_name); } -inline void Tracing::regionEnd(char* const region_name) { +inline void Tracing::regionEnd(const char* region_name) { VT_USER_END(region_name); } \ No newline at end of file From e457a99b64463221e8357e9c06e1492ce78d6b5e Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 12:57:45 +0200 Subject: [PATCH 09/21] ... --- include/firestarter/Tracing/Tracing.hpp | 4 ++-- src/firestarter/Tracing/Caliper.cpp | 4 ++-- src/firestarter/Tracing/LogTracing.cpp | 4 ++-- src/firestarter/Tracing/NoTracing.cpp | 4 ++-- src/firestarter/Tracing/ScoreP.cpp | 4 ++-- src/firestarter/Tracing/VampirTrace.cpp | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/firestarter/Tracing/Tracing.hpp b/include/firestarter/Tracing/Tracing.hpp index b33af27f..9ed0999f 100644 --- a/include/firestarter/Tracing/Tracing.hpp +++ b/include/firestarter/Tracing/Tracing.hpp @@ -28,8 +28,8 @@ class Tracing { Tracing(); ~Tracing(); - inline void regionBegin(const char* region_name); - inline void regionEnd(const char* region_name); + inline void regionBegin(const char const* region_name); + inline void regionEnd(const char const* region_name); }; } // firestarter::tracing diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp index ca1ae2f5..e1a7efe1 100644 --- a/src/firestarter/Tracing/Caliper.cpp +++ b/src/firestarter/Tracing/Caliper.cpp @@ -29,11 +29,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* region_name) { +inline void Tracing::regionBegin(const char const* region_name) { CALI_MARK_BEGIN(region_name); } -inline void Tracing::regionEnd(const char* region_name) { +inline void Tracing::regionEnd(const char const* region_name) { CALI_MARK_END(region_name); } diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index f020c9eb..c409e7b5 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -28,10 +28,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* region_name) { +inline void Tracing::regionBegin(const char const* region_name) { firestarter::log::trace() << "Start " << region_name; } -inline void Tracing::regionEnd(const char* region_name) { +inline void Tracing::regionEnd(const char const* region_name) { firestarter::log::trace() << "End " << region_name; } \ No newline at end of file diff --git a/src/firestarter/Tracing/NoTracing.cpp b/src/firestarter/Tracing/NoTracing.cpp index a69d9c74..6ac747c1 100644 --- a/src/firestarter/Tracing/NoTracing.cpp +++ b/src/firestarter/Tracing/NoTracing.cpp @@ -26,11 +26,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* region_name) { +inline void Tracing::regionBegin(const char const* region_name) { // Do nothing } -inline void Tracing::regionEnd(const char* region_name) { +inline void Tracing::regionEnd(const char const* region_name) { // Do nothing } diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp index ee4ce931..42421278 100644 --- a/src/firestarter/Tracing/ScoreP.cpp +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -28,11 +28,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* region_name) { +inline void Tracing::regionBegin(const char const* region_name) { SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, SCOREP_USER_REGION_TYPE_COMMON); } -inline void Tracing::regionEnd(const char* region_name) { +inline void Tracing::regionEnd(const char const* region_name) { SCOREP_USER_REGION_BY_NAME_END(region_name); } \ No newline at end of file diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp index 5d6b846c..a87a4b0c 100644 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -27,10 +27,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char* region_name) { +inline void Tracing::regionBegin(const char const* region_name) { VT_USER_START(region_name); } -inline void Tracing::regionEnd(const char* region_name) { +inline void Tracing::regionEnd(const char const* region_name) { VT_USER_END(region_name); } \ No newline at end of file From 0ac014f89009a8adb9a8b35b770e61fd0231b3a9 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 13:14:36 +0200 Subject: [PATCH 10/21] :'( --- include/firestarter/Tracing/Tracing.hpp | 4 ++-- src/firestarter/Tracing/Caliper.cpp | 4 ++-- src/firestarter/Tracing/LogTracing.cpp | 4 ++-- src/firestarter/Tracing/NoTracing.cpp | 4 ++-- src/firestarter/Tracing/ScoreP.cpp | 4 ++-- src/firestarter/Tracing/VampirTrace.cpp | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/firestarter/Tracing/Tracing.hpp b/include/firestarter/Tracing/Tracing.hpp index 9ed0999f..e6064819 100644 --- a/include/firestarter/Tracing/Tracing.hpp +++ b/include/firestarter/Tracing/Tracing.hpp @@ -28,8 +28,8 @@ class Tracing { Tracing(); ~Tracing(); - inline void regionBegin(const char const* region_name); - inline void regionEnd(const char const* region_name); + inline void regionBegin(char const* region_name); + inline void regionEnd(char const* region_name); }; } // firestarter::tracing diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp index e1a7efe1..c4c46465 100644 --- a/src/firestarter/Tracing/Caliper.cpp +++ b/src/firestarter/Tracing/Caliper.cpp @@ -29,11 +29,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char const* region_name) { +inline void Tracing::regionBegin(char const* region_name) { CALI_MARK_BEGIN(region_name); } -inline void Tracing::regionEnd(const char const* region_name) { +inline void Tracing::regionEnd(char const* region_name) { CALI_MARK_END(region_name); } diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index c409e7b5..26fe9e13 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -28,10 +28,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char const* region_name) { +inline void Tracing::regionBegin(char const* region_name) { firestarter::log::trace() << "Start " << region_name; } -inline void Tracing::regionEnd(const char const* region_name) { +inline void Tracing::regionEnd(char const* region_name) { firestarter::log::trace() << "End " << region_name; } \ No newline at end of file diff --git a/src/firestarter/Tracing/NoTracing.cpp b/src/firestarter/Tracing/NoTracing.cpp index 6ac747c1..f1599d15 100644 --- a/src/firestarter/Tracing/NoTracing.cpp +++ b/src/firestarter/Tracing/NoTracing.cpp @@ -26,11 +26,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char const* region_name) { +inline void Tracing::regionBegin(char const* region_name) { // Do nothing } -inline void Tracing::regionEnd(const char const* region_name) { +inline void Tracing::regionEnd(char const* region_name) { // Do nothing } diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp index 42421278..4f1b5299 100644 --- a/src/firestarter/Tracing/ScoreP.cpp +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -28,11 +28,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char const* region_name) { +inline void Tracing::regionBegin(char const* region_name) { SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, SCOREP_USER_REGION_TYPE_COMMON); } -inline void Tracing::regionEnd(const char const* region_name) { +inline void Tracing::regionEnd(char const* region_name) { SCOREP_USER_REGION_BY_NAME_END(region_name); } \ No newline at end of file diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp index a87a4b0c..5d5a4174 100644 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -27,10 +27,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(const char const* region_name) { +inline void Tracing::regionBegin(char const* region_name) { VT_USER_START(region_name); } -inline void Tracing::regionEnd(const char const* region_name) { +inline void Tracing::regionEnd(char const* region_name) { VT_USER_END(region_name); } \ No newline at end of file From dfad346c1bd0084404d13e63e7d08d17aed7f8c4 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 13:58:46 +0200 Subject: [PATCH 11/21] ... --- include/firestarter/Tracing/Tracing.hpp | 9 ++++----- src/firestarter/Tracing/Caliper.cpp | 4 ++-- src/firestarter/Tracing/LogTracing.cpp | 4 ++-- src/firestarter/Tracing/NoTracing.cpp | 4 ++-- src/firestarter/Tracing/ScoreP.cpp | 4 ++-- src/firestarter/Tracing/VampirTrace.cpp | 4 ++-- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/include/firestarter/Tracing/Tracing.hpp b/include/firestarter/Tracing/Tracing.hpp index e6064819..93e7a647 100644 --- a/include/firestarter/Tracing/Tracing.hpp +++ b/include/firestarter/Tracing/Tracing.hpp @@ -25,11 +25,10 @@ namespace firestarter::tracing { class Tracing { public: - Tracing(); - ~Tracing(); - - inline void regionBegin(char const* region_name); - inline void regionEnd(char const* region_name); +Tracing(); +~Tracing(); + virtual void regionBegin(char const* region_name); + virtual void regionEnd(char const* region_name); }; } // firestarter::tracing diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp index c4c46465..ae58228d 100644 --- a/src/firestarter/Tracing/Caliper.cpp +++ b/src/firestarter/Tracing/Caliper.cpp @@ -29,11 +29,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char const* region_name) { +void Tracing::regionBegin(char const* region_name) { CALI_MARK_BEGIN(region_name); } -inline void Tracing::regionEnd(char const* region_name) { +void Tracing::regionEnd(char const* region_name) { CALI_MARK_END(region_name); } diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index 26fe9e13..6fbb29ce 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -28,10 +28,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char const* region_name) { +void Tracing::regionBegin(char const* region_name) { firestarter::log::trace() << "Start " << region_name; } -inline void Tracing::regionEnd(char const* region_name) { +void Tracing::regionEnd(char const* region_name) { firestarter::log::trace() << "End " << region_name; } \ No newline at end of file diff --git a/src/firestarter/Tracing/NoTracing.cpp b/src/firestarter/Tracing/NoTracing.cpp index f1599d15..60495a85 100644 --- a/src/firestarter/Tracing/NoTracing.cpp +++ b/src/firestarter/Tracing/NoTracing.cpp @@ -26,11 +26,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char const* region_name) { +void Tracing::regionBegin(char const* region_name) { // Do nothing } -inline void Tracing::regionEnd(char const* region_name) { + void Tracing::regionEnd(char const* region_name) { // Do nothing } diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp index 4f1b5299..e3827910 100644 --- a/src/firestarter/Tracing/ScoreP.cpp +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -28,11 +28,11 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char const* region_name) { +void Tracing::regionBegin(char const* region_name) { SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, SCOREP_USER_REGION_TYPE_COMMON); } -inline void Tracing::regionEnd(char const* region_name) { +void Tracing::regionEnd(char const* region_name) { SCOREP_USER_REGION_BY_NAME_END(region_name); } \ No newline at end of file diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp index 5d5a4174..341681a7 100644 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -27,10 +27,10 @@ using namespace firestarter::tracing; Tracing::Tracing(){} Tracing::~Tracing(){} -inline void Tracing::regionBegin(char const* region_name) { +void Tracing::regionBegin(char const* region_name) { VT_USER_START(region_name); } -inline void Tracing::regionEnd(char const* region_name) { +void Tracing::regionEnd(char const* region_name) { VT_USER_END(region_name); } \ No newline at end of file From e7fd0f0e74ea7a82f712897d22db61f83f55a955 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 14:08:42 +0200 Subject: [PATCH 12/21] ... --- include/firestarter/Tracing/Tracing.hpp | 2 +- src/firestarter/Tracing/Caliper.cpp | 2 +- src/firestarter/Tracing/LogTracing.cpp | 2 +- src/firestarter/Tracing/NoTracing.cpp | 2 +- src/firestarter/Tracing/ScoreP.cpp | 2 +- src/firestarter/Tracing/VampirTrace.cpp | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/firestarter/Tracing/Tracing.hpp b/include/firestarter/Tracing/Tracing.hpp index 93e7a647..0209c424 100644 --- a/include/firestarter/Tracing/Tracing.hpp +++ b/include/firestarter/Tracing/Tracing.hpp @@ -1,6 +1,6 @@ /****************************************************************************** * FIRESTARTER - A Processor Stress Test Utility - * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Copyright (C) 2024 TU Dresden, Center for Information Services and High * Performance Computing * * This program is free software: you can redistribute it and/or modify diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp index ae58228d..aa01b9d8 100644 --- a/src/firestarter/Tracing/Caliper.cpp +++ b/src/firestarter/Tracing/Caliper.cpp @@ -1,6 +1,6 @@ /****************************************************************************** * FIRESTARTER - A Processor Stress Test Utility - * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Copyright (C) 2024 TU Dresden, Center for Information Services and High * Performance Computing * * This program is free software: you can redistribute it and/or modify diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index 6fbb29ce..a7a36a7c 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -1,6 +1,6 @@ /****************************************************************************** * FIRESTARTER - A Processor Stress Test Utility - * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Copyright (C) 2024 TU Dresden, Center for Information Services and High * Performance Computing * * This program is free software: you can redistribute it and/or modify diff --git a/src/firestarter/Tracing/NoTracing.cpp b/src/firestarter/Tracing/NoTracing.cpp index 60495a85..9799a5de 100644 --- a/src/firestarter/Tracing/NoTracing.cpp +++ b/src/firestarter/Tracing/NoTracing.cpp @@ -1,6 +1,6 @@ /****************************************************************************** * FIRESTARTER - A Processor Stress Test Utility - * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Copyright (C) 2024 TU Dresden, Center for Information Services and High * Performance Computing * * This program is free software: you can redistribute it and/or modify diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp index e3827910..fa2f0b84 100644 --- a/src/firestarter/Tracing/ScoreP.cpp +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -1,6 +1,6 @@ /****************************************************************************** * FIRESTARTER - A Processor Stress Test Utility - * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Copyright (C) 2024 TU Dresden, Center for Information Services and High * Performance Computing * * This program is free software: you can redistribute it and/or modify diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp index 341681a7..b0ec43e5 100644 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -1,6 +1,6 @@ /****************************************************************************** * FIRESTARTER - A Processor Stress Test Utility - * Copyright (C) 2020-2024 TU Dresden, Center for Information Services and High + * Copyright (C) 2024 TU Dresden, Center for Information Services and High * Performance Computing * * This program is free software: you can redistribute it and/or modify From 3a716d34a888d785f278b6ec104161576b959b1e Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 28 Aug 2024 16:14:01 +0200 Subject: [PATCH 13/21] using free functions instead of methods --- include/firestarter/Tracing/Tracing.hpp | 11 ++--------- src/firestarter/LoadWorker.cpp | 9 ++++----- src/firestarter/Tracing/Caliper.cpp | 9 ++------- src/firestarter/Tracing/LogTracing.cpp | 9 ++------- src/firestarter/Tracing/NoTracing.cpp | 8 ++------ src/firestarter/Tracing/ScoreP.cpp | 9 ++------- src/firestarter/Tracing/VampirTrace.cpp | 8 ++------ 7 files changed, 16 insertions(+), 47 deletions(-) diff --git a/include/firestarter/Tracing/Tracing.hpp b/include/firestarter/Tracing/Tracing.hpp index 0209c424..f55a2279 100644 --- a/include/firestarter/Tracing/Tracing.hpp +++ b/include/firestarter/Tracing/Tracing.hpp @@ -22,13 +22,6 @@ #pragma once namespace firestarter::tracing { - -class Tracing { -public: -Tracing(); -~Tracing(); - virtual void regionBegin(char const* region_name); - virtual void regionEnd(char const* region_name); -}; - + void regionBegin(char const* region_name); + void regionEnd(char const* region_name); } // firestarter::tracing diff --git a/src/firestarter/LoadWorker.cpp b/src/firestarter/LoadWorker.cpp index 15d630df..ef77a5dc 100644 --- a/src/firestarter/LoadWorker.cpp +++ b/src/firestarter/LoadWorker.cpp @@ -268,7 +268,6 @@ void Firestarter::printPerformanceReport() { void Firestarter::loadThreadWorker(std::shared_ptr td) { - firestarter::tracing::Tracing tracing; int old = THREAD_WAIT; #if defined(linux) || defined(__linux__) @@ -352,15 +351,15 @@ void Firestarter::loadThreadWorker(std::shared_ptr td) { // will be terminated by watchdog for (;;) { // call high load function - tracing.regionBegin("High"); + tracing::regionBegin("High"); td->iterations = td->config().payload().highLoadFunction( td->addrMem, td->addrHigh, td->iterations); // call low load function - tracing.regionEnd("High"); - tracing.regionBegin("Low"); + tracing::regionEnd("High"); + tracing::regionBegin("Low"); td->config().payload().lowLoadFunction(td->addrHigh, td->period); - tracing.regionEnd("Low"); + tracing::regionEnd("Low"); // terminate if master signals end of run and record stop timestamp if (*td->addrHigh == LOAD_STOP) { diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp index aa01b9d8..b63fc336 100644 --- a/src/firestarter/Tracing/Caliper.cpp +++ b/src/firestarter/Tracing/Caliper.cpp @@ -24,16 +24,11 @@ #include #include -using namespace firestarter::tracing; - -Tracing::Tracing(){} -Tracing::~Tracing(){} - -void Tracing::regionBegin(char const* region_name) { +void firestarter::tracing::regionBegin(char const* region_name) { CALI_MARK_BEGIN(region_name); } -void Tracing::regionEnd(char const* region_name) { +void firestarter::tracing::regionEnd(char const* region_name) { CALI_MARK_END(region_name); } diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index a7a36a7c..6c0a947e 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -23,15 +23,10 @@ #include #include -using namespace firestarter::tracing; - -Tracing::Tracing(){} -Tracing::~Tracing(){} - -void Tracing::regionBegin(char const* region_name) { +void firestarter::tracing::regionBegin(char const* region_name) { firestarter::log::trace() << "Start " << region_name; } -void Tracing::regionEnd(char const* region_name) { +void firestarter::tracing::regionEnd(char const* region_name) { firestarter::log::trace() << "End " << region_name; } \ No newline at end of file diff --git a/src/firestarter/Tracing/NoTracing.cpp b/src/firestarter/Tracing/NoTracing.cpp index 9799a5de..e4ab447c 100644 --- a/src/firestarter/Tracing/NoTracing.cpp +++ b/src/firestarter/Tracing/NoTracing.cpp @@ -21,16 +21,12 @@ #include -using namespace firestarter::tracing; -Tracing::Tracing(){} -Tracing::~Tracing(){} - -void Tracing::regionBegin(char const* region_name) { +void firestarter::tracing::regionBegin(char const* region_name) { // Do nothing } - void Tracing::regionEnd(char const* region_name) { +void firestarter::tracing::regionEnd(char const* region_name) { // Do nothing } diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp index fa2f0b84..b0c770f0 100644 --- a/src/firestarter/Tracing/ScoreP.cpp +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -23,16 +23,11 @@ #include -using namespace firestarter::tracing; - -Tracing::Tracing(){} -Tracing::~Tracing(){} - -void Tracing::regionBegin(char const* region_name) { +void firestarter::tracing::regionBegin(char const* region_name) { SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, SCOREP_USER_REGION_TYPE_COMMON); } -void Tracing::regionEnd(char const* region_name) { +void firestarter::tracing::regionEnd(char const* region_name) { SCOREP_USER_REGION_BY_NAME_END(region_name); } \ No newline at end of file diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp index b0ec43e5..201259bc 100644 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -22,15 +22,11 @@ #include #include -using namespace firestarter::tracing; -Tracing::Tracing(){} -Tracing::~Tracing(){} - -void Tracing::regionBegin(char const* region_name) { +void firestarter::tracing::regionBegin(char const* region_name) { VT_USER_START(region_name); } -void Tracing::regionEnd(char const* region_name) { +void firestarter::tracing::regionEnd(char const* region_name) { VT_USER_END(region_name); } \ No newline at end of file From 9b4cff2c8ee4a3cb7227da3ac527ce15548223a2 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Fri, 20 Sep 2024 11:05:43 +0200 Subject: [PATCH 14/21] fixes. now we do not call tracing if not defined --- include/firestarter/Tracing/Tracing.hpp | 1 + src/CMakeLists.txt | 18 ++++++++---- src/firestarter/Firestarter.cpp | 20 +++++++++++++ src/firestarter/LoadWorker.cpp | 11 +++++++- src/firestarter/Main.cpp | 4 +++ src/firestarter/Tracing/Caliper.cpp | 15 ++++++++++ src/firestarter/Tracing/LogTracing.cpp | 3 ++ src/firestarter/Tracing/NoTracing.cpp | 32 --------------------- src/firestarter/Tracing/ScoreP.cpp | 3 ++ src/firestarter/Tracing/VampirTrace.cpp | 2 ++ src/firestarter/WatchdogWorker.cpp | 37 +++++++------------------ 11 files changed, 80 insertions(+), 66 deletions(-) delete mode 100644 src/firestarter/Tracing/NoTracing.cpp diff --git a/include/firestarter/Tracing/Tracing.hpp b/include/firestarter/Tracing/Tracing.hpp index f55a2279..137768fb 100644 --- a/include/firestarter/Tracing/Tracing.hpp +++ b/include/firestarter/Tracing/Tracing.hpp @@ -22,6 +22,7 @@ #pragma once namespace firestarter::tracing { + void initialize(int argc, const char **argv); void regionBegin(char const* region_name); void regionEnd(char const* region_name); } // firestarter::tracing diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index efd13bb3..b8708393 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -41,12 +41,11 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") ) endif() -if("${FIRESTARTER_TRACING}" STREQUAL "None") - SET(FIRESTARTER_FILES - ${FIRESTARTER_FILES} - firestarter/Tracing/NoTracing.cpp - ) -elseif("${FIRESTARTER_TRACING}" STREQUAL "Logger") +if(NOT "${FIRESTARTER_TRACING}" STREQUAL "None") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIRESTARTER_TRACING") +endif() + +if("${FIRESTARTER_TRACING}" STREQUAL "Logger") SET(FIRESTARTER_FILES ${FIRESTARTER_FILES} firestarter/Tracing/LogTracing.cpp @@ -65,6 +64,13 @@ elseif("${FIRESTARTER_TRACING}" STREQUAL "VampirTrace") ) #todo find folder SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVTRACE ${FIRESTARTER_TRACING_CXXFLAGS}") +elseif("${FIRESTARTER_TRACING}" STREQUAL "Caliper") + SET(FIRESTARTER_FILES + ${FIRESTARTER_FILES} + firestarter/Tracing/Caliper.cpp + ) + #todo find folder + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FIRESTARTER_TRACING_CXXFLAGS}") endif() diff --git a/src/firestarter/Firestarter.cpp b/src/firestarter/Firestarter.cpp index 5fb58ad4..29424d8c 100644 --- a/src/firestarter/Firestarter.cpp +++ b/src/firestarter/Firestarter.cpp @@ -325,6 +325,9 @@ Firestarter::~Firestarter() { } void Firestarter::mainThread() { +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionBegin("Main-Thread"); +#endif this->environment().printThreadSummary(); #if defined(FIRESTARTER_BUILD_CUDA) || defined(FIRESTARTER_BUILD_HIP) @@ -352,6 +355,9 @@ void Firestarter::mainThread() { int returnCode; if (EXIT_SUCCESS != (returnCode = this->initDumpRegisterWorker( _dumpRegistersTimeDelta, _dumpRegistersOutpath))) { +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionEnd("Main-Thread"); +#endif std::exit(returnCode); } } @@ -363,6 +369,9 @@ void Firestarter::mainThread() { #if defined(linux) || defined(__linux__) // check if optimization is selected if (_optimize) { +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionBegin("Main-Thread-Optimize"); +#endif auto startTime = optimizer::History::getTime(); Firestarter::_optimizer = std::make_unique( @@ -381,6 +390,13 @@ void Firestarter::mainThread() { firestarter::optimizer::History::printBest(_optimizationMetrics, payloadItems); +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionEnd("Main-Thread-Optimize"); +#endif +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionEnd("Main-Thread"); +#endif + // stop all the load threads std::raise(SIGTERM); } @@ -415,6 +431,10 @@ void Firestarter::mainThread() { if (_errorDetection) { this->printThreadErrorReport(); } + +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionEnd("Main-Thread"); +#endif } void Firestarter::setLoad(unsigned long long value) { diff --git a/src/firestarter/LoadWorker.cpp b/src/firestarter/LoadWorker.cpp index ef77a5dc..ce31396f 100644 --- a/src/firestarter/LoadWorker.cpp +++ b/src/firestarter/LoadWorker.cpp @@ -351,15 +351,24 @@ void Firestarter::loadThreadWorker(std::shared_ptr td) { // will be terminated by watchdog for (;;) { // call high load function + +#ifdef FIRESTARTER_TRACING tracing::regionBegin("High"); +#endif td->iterations = td->config().payload().highLoadFunction( td->addrMem, td->addrHigh, td->iterations); - // call low load function +#ifdef FIRESTARTER_TRACING tracing::regionEnd("High"); tracing::regionBegin("Low"); +#endif + + // call low load function td->config().payload().lowLoadFunction(td->addrHigh, td->period); + +#ifdef FIRESTARTER_TRACING tracing::regionEnd("Low"); +#endif // terminate if master signals end of run and record stop timestamp if (*td->addrHigh == LOAD_STOP) { diff --git a/src/firestarter/Main.cpp b/src/firestarter/Main.cpp index fa96740f..47633458 100644 --- a/src/firestarter/Main.cpp +++ b/src/firestarter/Main.cpp @@ -468,6 +468,10 @@ int main(int argc, const char **argv) { "Computing" << "\n"; +#ifdef FIRESTARTER_TRACING + firestarter::tracing::initialize(); +#endif + Config cfg{argc, argv}; try { diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp index b63fc336..d3b4b976 100644 --- a/src/firestarter/Tracing/Caliper.cpp +++ b/src/firestarter/Tracing/Caliper.cpp @@ -24,6 +24,21 @@ #include #include +void firestarter::tracing::rinitialize(int argc, const char **argv){ + // Single adiak call to collect default adiak values + adiak::init(NULL); + adiak::uid(); + adiak::date(); + adiak::user(); + adiak::launchdate(); + adiak::executable(); + adiak::executablepath(); + adiak::libraries(); + adiak::cmdline(); + adiak::hostname(); + adiak::clustername(); +} + void firestarter::tracing::regionBegin(char const* region_name) { CALI_MARK_BEGIN(region_name); } diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index 6c0a947e..9cf99ebe 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -23,6 +23,9 @@ #include #include +void firestarter::tracing::rinitialize(int argc, const char **argv){ + +} void firestarter::tracing::regionBegin(char const* region_name) { firestarter::log::trace() << "Start " << region_name; } diff --git a/src/firestarter/Tracing/NoTracing.cpp b/src/firestarter/Tracing/NoTracing.cpp deleted file mode 100644 index e4ab447c..00000000 --- a/src/firestarter/Tracing/NoTracing.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/****************************************************************************** - * FIRESTARTER - A Processor Stress Test Utility - * Copyright (C) 2024 TU Dresden, Center for Information Services and High - * Performance Computing - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * Contact: daniel.hackenberg@tu-dresden.de - *****************************************************************************/ - -#include - - -void firestarter::tracing::regionBegin(char const* region_name) { - // Do nothing -} - -void firestarter::tracing::regionEnd(char const* region_name) { - // Do nothing -} - diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp index b0c770f0..9ecf86ae 100644 --- a/src/firestarter/Tracing/ScoreP.cpp +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -23,6 +23,9 @@ #include +void firestarter::tracing::rinitialize(int argc, const char **argv){ + +} void firestarter::tracing::regionBegin(char const* region_name) { SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, SCOREP_USER_REGION_TYPE_COMMON); diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp index 201259bc..51f6f15f 100644 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -22,7 +22,9 @@ #include #include +void firestarter::tracing::rinitialize(int argc, const char **argv){ +} void firestarter::tracing::regionBegin(char const* region_name) { VT_USER_START(region_name); } diff --git a/src/firestarter/WatchdogWorker.cpp b/src/firestarter/WatchdogWorker.cpp index 6a3f6b95..4473f6fc 100644 --- a/src/firestarter/WatchdogWorker.cpp +++ b/src/firestarter/WatchdogWorker.cpp @@ -24,10 +24,6 @@ #include #include -#ifdef ENABLE_SCOREP -#include -#endif - using namespace firestarter; int Firestarter::watchdogWorker(std::chrono::microseconds period, @@ -75,13 +71,10 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, nsec load_nsec = load - load_reduction; // wait for time to be ellapsed with high load -#ifdef ENABLE_VTRACING - VT_USER_START("WD_HIGH"); -#endif -#ifdef ENABLE_SCOREP - SCOREP_USER_REGION_BY_NAME_BEGIN("WD_HIGH", - SCOREP_USER_REGION_TYPE_COMMON); +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionBegin("WD_HIGH"); #endif + { std::unique_lock lk(this->_watchdogTerminateMutex); // abort waiting if we get the interrupt signal @@ -92,11 +85,8 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, return EXIT_SUCCESS; } } -#ifdef ENABLE_VTRACING - VT_USER_END("WD_HIGH"); -#endif -#ifdef ENABLE_SCOREP - SCOREP_USER_REGION_BY_NAME_END("WD_HIGH"); +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionEnd("WD_HIGH"); #endif // signal low load @@ -106,12 +96,9 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, nsec idle_nsec = idle - idle_reduction; // wait for time to be ellapsed with low load -#ifdef ENABLE_VTRACING - VT_USER_START("WD_LOW"); -#endif -#ifdef ENABLE_SCOREP - SCOREP_USER_REGION_BY_NAME_BEGIN("WD_LOW", - SCOREP_USER_REGION_TYPE_COMMON); + +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionBegin("WD_LOW"); #endif { std::unique_lock lk(this->_watchdogTerminateMutex); @@ -123,13 +110,9 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, return EXIT_SUCCESS; } } -#ifdef ENABLE_VTRACING - VT_USER_END("WD_LOW"); +#ifdef FIRESTARTER_TRACING + firestarter::tracing::regionEnd("WD_LOW"); #endif -#ifdef ENABLE_SCOREP - SCOREP_USER_REGION_BY_NAME_END("WD_LOW"); -#endif - // increment elapsed time time += period; From 0946cd26741ff27afa062396d85ef8ac933accda Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Thu, 26 Sep 2024 13:57:57 +0200 Subject: [PATCH 15/21] fixed tracing. Now it finds scorep (if avail) and can compile (even though not with static) --- CMakeLists.txt | 6 +- src/CMakeLists.txt | 90 ++++++++++++++++++++----- src/firestarter/Firestarter.cpp | 8 +++ src/firestarter/Main.cpp | 3 +- src/firestarter/Tracing/Caliper.cpp | 2 +- src/firestarter/Tracing/LogTracing.cpp | 3 +- src/firestarter/Tracing/ScoreP.cpp | 3 +- src/firestarter/Tracing/VampirTrace.cpp | 3 +- src/firestarter/WatchdogWorker.cpp | 7 ++ 9 files changed, 100 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 301e5664..5f768657 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,8 +60,10 @@ endif() set(FIRESTARTER_TRACING "None" CACHE STRING "FIRESTARTER_TRACING can be any of None, Logger, ScoreP, or VampirTrace.") set_property(CACHE FIRESTARTER_TRACING PROPERTY STRINGS None Logger ScoreP VampirTrace) -option(FIRESTARTER_TRACING_CXX_FLAGS "FIRESTARTER_TRACING_CXX_FLAGS should add include paths for the selected tracing infrastructure." "${FIRESTARTER_TRACING_CXX_FLAGS}") -option(FIRESTARTER_TRACING_LD_FLAGS "FIRESTARTER_TRACING_LD_FLAGS should set linker flags for the selected tracing infrastructure." "${FIRESTARTER_TRACING_CXX_FLAGS}") +set(FIRESTARTER_TRACING_CXX_FLAGS "" CACHE STRING "FIRESTARTER_TRACING_CXX_FLAGS should add include paths for the selected tracing infrastructure.") +set(FIRESTARTER_TRACING_LD_FLAGS "" CACHE STRING "FIRESTARTER_TRACING_LD_FLAGS should set linker flags for the selected tracing infrastructure.") +set(FIRESTARTER_TRACING_ADDITIONAL_FILES "" CACHE STRING "FIRESTARTER_TRACING_ADDITIONAL_FILES can be used to add files to the compilation process that are needed for tracing.") + set(FIRESTARTER_BUILD_TYPE "FIRESTARTER" CACHE STRING "FIRESTARTER_BUILD_TYPE can be any of FIRESTARTER, FIRESTARTER_CUDA, FIRESTARTER_ONEAPI, or FIRESTARTER_HIP.") set_property(CACHE FIRESTARTER_BUILD_TYPE PROPERTY STRINGS FIRESTARTER FIRESTARTER_CUDA FIRESTARTER_ONEAPI) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b8708393..327c5d48 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -43,6 +43,11 @@ endif() if(NOT "${FIRESTARTER_TRACING}" STREQUAL "None") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIRESTARTER_TRACING") + SET(FIRESTARTER_FILES + ${FIRESTARTER_FILES} + ${FIRESTARTER_TRACING_ADDITIONAL_FILES} + ) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FIRESTARTER_TRACING_CXXFLAGS}") endif() if("${FIRESTARTER_TRACING}" STREQUAL "Logger") @@ -51,12 +56,69 @@ if("${FIRESTARTER_TRACING}" STREQUAL "Logger") firestarter/Tracing/LogTracing.cpp ) elseif("${FIRESTARTER_TRACING}" STREQUAL "ScoreP") - SET(FIRESTARTER_FILES - ${FIRESTARTER_FILES} - firestarter/Tracing/ScoreP.cpp - ) - #todo find folder - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSCOREP_USER_ENABLE ${FIRESTARTER_TRACING_CXXFLAGS}") + find_program(SCOREP_CONFIG scorep-config) + if(SCOREP_CONFIG) + message(STATUS "Found 'scorep-config' at: ${SCOREP_CONFIG}") + SET(FIRESTARTER_FILES + ${FIRESTARTER_FILES} + firestarter/Tracing/ScoreP.cpp + ${FIRESTARTER_TRACING_ADDITIONAL_FILES} + ) + SET(SCOREP_CONFIG_FLAGS "--nocompiler" "--user" "--nopomp" "--thread=pthread") + if ("${FIRESTARTER_LINK_STATIC}") + SET(SCOREP_CONFIG_FLAGS "--nocompiler" "--user" "--nopomp" "--thread=pthread" "--static") + endif() + execute_process( + COMMAND ${SCOREP_CONFIG} --cppflags + OUTPUT_VARIABLE SCOREP_CPP_FLAGS + ERROR_VARIABLE PROGRAM_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if (PROGRAM_ERROR) + message(FATAL_ERROR "Error when calling scorep-config: ${PROGRAM_ERROR}") + endif() + + execute_process( + COMMAND ${SCOREP_CONFIG} --adapter-init ${SCOREP_CONFIG_FLAGS} + OUTPUT_VARIABLE SCOREP_ADAPTER_INIT_CONTENT + ERROR_VARIABLE PROGRAM_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if (PROGRAM_ERROR) + message(FATAL_ERROR "Error when calling scorep-config: ${PROGRAM_ERROR}") + endif() + + file(WRITE ${CMAKE_BINARY_DIR}/.scorep_init.c "${SCOREP_ADAPTER_INIT_CONTENT}\n") + SET(FIRESTARTER_FILES + ${FIRESTARTER_FILES} + ${CMAKE_BINARY_DIR}/.scorep_init.c + ) + + execute_process( + COMMAND ${SCOREP_CONFIG} --ldflags "--nocompiler" "--user" "--nopomp" + OUTPUT_VARIABLE SCOREP_LD_FLAGS + ERROR_VARIABLE PROGRAM_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if (PROGRAM_ERROR) + message(FATAL_ERROR "Error when calling scorep-config: ${PROGRAM_ERROR}") + endif() + + execute_process( + COMMAND ${SCOREP_CONFIG} --libs ${SCOREP_CONFIG_FLAGS} + OUTPUT_VARIABLE SCOREP_LIBS + ERROR_VARIABLE PROGRAM_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if (PROGRAM_ERROR) + message(FATAL_ERROR "Error when calling scorep-config: ${PROGRAM_ERROR}") + endif() + + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSCOREP_USER_ENABLE ${SCOREP_CPP_FLAGS}") + SET(FIRESTARTER_TRACING_LDFLAGS "${FIRESTARTER_TRACING_LDFLAGS} ${SCOREP_LD_FLAGS} ${SCOREP_LIBS}") + else() + message(FATAL_ERROR "You want to compile with Score-P support, but scorep-config could not be found in PATH") + endif() elseif("${FIRESTARTER_TRACING}" STREQUAL "VampirTrace") SET(FIRESTARTER_FILES ${FIRESTARTER_FILES} @@ -73,10 +135,6 @@ elseif("${FIRESTARTER_TRACING}" STREQUAL "Caliper") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FIRESTARTER_TRACING_CXXFLAGS}") endif() - -SET(FIRESTARTER_LINK_LIBRARIES - ) - if (FIRESTARTER_THREAD_AFFINITY) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIRESTARTER_THREAD_AFFINITY") endif() @@ -264,14 +322,10 @@ elseif(${FIRESTARTER_BUILD_TYPE} STREQUAL "FIRESTARTER") nlohmann_json::nlohmann_json ) endif() -if("${FIRESTARTER_TRACING}" STREQUAL "ScoreP") - #todo link scorep - target_link_libraries("${FIRESTARTER_BUILD_TYPE}" - "${FIRESTARTER_TRACING_LDFLAGS}" - ) -elseif("${FIRESTARTER_TRACING}" STREQUAL "VampirTrace") - #todo link vt user + +if(NOT "${FIRESTARTER_TRACING}" STREQUAL "None") + string(STRIP "${FIRESTARTER_TRACING_LDFLAGS}" FIRESTARTER_TRACING_LDFLAGS) target_link_libraries("${FIRESTARTER_BUILD_TYPE}" "${FIRESTARTER_TRACING_LDFLAGS}" ) -endif() \ No newline at end of file +endif() diff --git a/src/firestarter/Firestarter.cpp b/src/firestarter/Firestarter.cpp index 29424d8c..7cd41743 100644 --- a/src/firestarter/Firestarter.cpp +++ b/src/firestarter/Firestarter.cpp @@ -21,6 +21,7 @@ #include #include +#include #if defined(linux) || defined(__linux__) #include #include @@ -457,6 +458,13 @@ void Firestarter::sigalrmHandler(int signum) { (void)signum; } void Firestarter::sigtermHandler(int signum) { (void)signum; +#ifdef FIRESTARTER_TRACING + if (Firestarter::loadVar == LOAD_LOW) + firestarter::tracing::regionEnd("WD_LOW"); + if (Firestarter::loadVar == LOAD_HIGH) + firestarter::tracing::regionEnd("WD_HIGH"); +#endif + Firestarter::setLoad(LOAD_STOP); // exit loop // used in case of 0 < load < 100 diff --git a/src/firestarter/Main.cpp b/src/firestarter/Main.cpp index 47633458..038a7909 100644 --- a/src/firestarter/Main.cpp +++ b/src/firestarter/Main.cpp @@ -21,6 +21,7 @@ #include #include +#include #include @@ -469,7 +470,7 @@ int main(int argc, const char **argv) { << "\n"; #ifdef FIRESTARTER_TRACING - firestarter::tracing::initialize(); + firestarter::tracing::initialize(argc, argv); #endif Config cfg{argc, argv}; diff --git a/src/firestarter/Tracing/Caliper.cpp b/src/firestarter/Tracing/Caliper.cpp index d3b4b976..dd42a27b 100644 --- a/src/firestarter/Tracing/Caliper.cpp +++ b/src/firestarter/Tracing/Caliper.cpp @@ -24,7 +24,7 @@ #include #include -void firestarter::tracing::rinitialize(int argc, const char **argv){ +void firestarter::tracing::initialize(int argc, const char **argv){ // Single adiak call to collect default adiak values adiak::init(NULL); adiak::uid(); diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index 9cf99ebe..5ccac792 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -23,9 +23,10 @@ #include #include -void firestarter::tracing::rinitialize(int argc, const char **argv){ +void firestarter::tracing::initialize(int argc, const char **argv){ } + void firestarter::tracing::regionBegin(char const* region_name) { firestarter::log::trace() << "Start " << region_name; } diff --git a/src/firestarter/Tracing/ScoreP.cpp b/src/firestarter/Tracing/ScoreP.cpp index 9ecf86ae..61328b97 100644 --- a/src/firestarter/Tracing/ScoreP.cpp +++ b/src/firestarter/Tracing/ScoreP.cpp @@ -23,9 +23,10 @@ #include -void firestarter::tracing::rinitialize(int argc, const char **argv){ +void firestarter::tracing::initialize(int argc, const char **argv){ } + void firestarter::tracing::regionBegin(char const* region_name) { SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, SCOREP_USER_REGION_TYPE_COMMON); diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp index 51f6f15f..46911133 100644 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ b/src/firestarter/Tracing/VampirTrace.cpp @@ -22,9 +22,10 @@ #include #include -void firestarter::tracing::rinitialize(int argc, const char **argv){ +void firestarter::tracing::initialize(int argc, const char **argv){ } + void firestarter::tracing::regionBegin(char const* region_name) { VT_USER_START(region_name); } diff --git a/src/firestarter/WatchdogWorker.cpp b/src/firestarter/WatchdogWorker.cpp index 4473f6fc..ccf56723 100644 --- a/src/firestarter/WatchdogWorker.cpp +++ b/src/firestarter/WatchdogWorker.cpp @@ -20,6 +20,7 @@ *****************************************************************************/ #include +#include #include #include @@ -138,6 +139,12 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, Firestarter::_watchdogTerminateAlert.wait_for( lk, timeout, []() { return Firestarter::_watchdog_terminate; }); } +#ifdef FIRESTARTER_TRACING + if (Firestarter::loadVar == LOAD_LOW) + firestarter::tracing::regionEnd("WD_LOW"); + if (Firestarter::loadVar == LOAD_HIGH) + firestarter::tracing::regionEnd("WD_HIGH"); +#endif this->setLoad(LOAD_STOP); From d659020a81bc1b5e116c664c0f9bbe42a6cd23b3 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Thu, 26 Sep 2024 14:22:18 +0200 Subject: [PATCH 16/21] VampirTrace should not be used anymore --- src/CMakeLists.txt | 11 ++------ src/firestarter/Tracing/VampirTrace.cpp | 35 ------------------------- 2 files changed, 2 insertions(+), 44 deletions(-) delete mode 100644 src/firestarter/Tracing/VampirTrace.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 327c5d48..1eafc8ca 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -119,20 +119,13 @@ elseif("${FIRESTARTER_TRACING}" STREQUAL "ScoreP") else() message(FATAL_ERROR "You want to compile with Score-P support, but scorep-config could not be found in PATH") endif() -elseif("${FIRESTARTER_TRACING}" STREQUAL "VampirTrace") - SET(FIRESTARTER_FILES - ${FIRESTARTER_FILES} - firestarter/Tracing/VampirTrace.cpp - ) - #todo find folder - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVTRACE ${FIRESTARTER_TRACING_CXXFLAGS}") + elseif("${FIRESTARTER_TRACING}" STREQUAL "Caliper") SET(FIRESTARTER_FILES ${FIRESTARTER_FILES} firestarter/Tracing/Caliper.cpp ) - #todo find folder - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FIRESTARTER_TRACING_CXXFLAGS}") + #todo add extra code endif() if (FIRESTARTER_THREAD_AFFINITY) diff --git a/src/firestarter/Tracing/VampirTrace.cpp b/src/firestarter/Tracing/VampirTrace.cpp deleted file mode 100644 index 46911133..00000000 --- a/src/firestarter/Tracing/VampirTrace.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * FIRESTARTER - A Processor Stress Test Utility - * Copyright (C) 2024 TU Dresden, Center for Information Services and High - * Performance Computing - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * Contact: daniel.hackenberg@tu-dresden.de - *****************************************************************************/ - -#include -#include - -void firestarter::tracing::initialize(int argc, const char **argv){ - -} - -void firestarter::tracing::regionBegin(char const* region_name) { - VT_USER_START(region_name); -} - -void firestarter::tracing::regionEnd(char const* region_name) { - VT_USER_END(region_name); -} \ No newline at end of file From 4d372f100ca375d18e0ee652a7756f84ba59fed2 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Thu, 26 Sep 2024 14:23:27 +0200 Subject: [PATCH 17/21] remove mention of VampirTrace --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5f768657..2ff0c7ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") endif() endif() -set(FIRESTARTER_TRACING "None" CACHE STRING "FIRESTARTER_TRACING can be any of None, Logger, ScoreP, or VampirTrace.") +set(FIRESTARTER_TRACING "None" CACHE STRING "FIRESTARTER_TRACING can be any of None, Logger, or ScoreP.") set_property(CACHE FIRESTARTER_TRACING PROPERTY STRINGS None Logger ScoreP VampirTrace) set(FIRESTARTER_TRACING_CXX_FLAGS "" CACHE STRING "FIRESTARTER_TRACING_CXX_FLAGS should add include paths for the selected tracing infrastructure.") From 7c1c8f845ed3fdffd3ee7f69a54226697ed22c1e Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Thu, 26 Sep 2024 14:27:33 +0200 Subject: [PATCH 18/21] info on tracing --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ff0c7ee..8a905c54 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") endif() endif() -set(FIRESTARTER_TRACING "None" CACHE STRING "FIRESTARTER_TRACING can be any of None, Logger, or ScoreP.") +set(FIRESTARTER_TRACING "None" CACHE STRING "FIRESTARTER_TRACING can be any of None, Logger, or ScoreP. This feature is currently under development and static linking might not work.") set_property(CACHE FIRESTARTER_TRACING PROPERTY STRINGS None Logger ScoreP VampirTrace) set(FIRESTARTER_TRACING_CXX_FLAGS "" CACHE STRING "FIRESTARTER_TRACING_CXX_FLAGS should add include paths for the selected tracing infrastructure.") From 413c4c4d9c6e28137c8f2f5d8b961c5c52a9764d Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Thu, 26 Sep 2024 15:11:27 +0200 Subject: [PATCH 19/21] less hip, then runs? --- .github/workflows/cmake.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 6b4c9178..dc822f1e 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -73,7 +73,8 @@ jobs: 6.2) wget https://repo.radeon.com/amdgpu-install/6.2/ubuntu/jammy/amdgpu-install_6.2.60200-1_all.deb sudo apt install ./amdgpu-install_6.2.60200-1_all.deb - sudo amdgpu-install -y --usecase=hiplibsdk,rocm --no-dkms + sudo amdgpu-install -y --usecase=hiplibsdk --no-dkms + rm ./amdgpu-install_6.2.60200-1_all.deb ;; esac From 136cdd181ca5f52f0ee458c0c04713f2c21429cd Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Fri, 27 Sep 2024 15:50:59 +0200 Subject: [PATCH 20/21] Score-P now external as it should be --- CMakeLists.txt | 2 +- examples/tracing/README.md | 20 ++++++++++ examples/tracing/scorep.c | 35 ++++++++++++++++ .../firestarter/Tracing/FIRESTARTER_Tracing.h | 32 +++++++++++++++ src/CMakeLists.txt | 6 ++- src/firestarter/Firestarter.cpp | 39 ++++++++---------- src/firestarter/LoadWorker.cpp | 28 +++++-------- src/firestarter/Main.cpp | 9 +++-- src/firestarter/Tracing/External.cpp | 40 +++++++++++++++++++ src/firestarter/Tracing/LogTracing.cpp | 13 +++--- src/firestarter/WatchdogWorker.cpp | 27 +++++-------- 11 files changed, 180 insertions(+), 71 deletions(-) create mode 100644 examples/tracing/README.md create mode 100644 examples/tracing/scorep.c create mode 100644 include/firestarter/Tracing/FIRESTARTER_Tracing.h create mode 100644 src/firestarter/Tracing/External.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a905c54..27c8fb25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,7 +58,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") endif() set(FIRESTARTER_TRACING "None" CACHE STRING "FIRESTARTER_TRACING can be any of None, Logger, or ScoreP. This feature is currently under development and static linking might not work.") -set_property(CACHE FIRESTARTER_TRACING PROPERTY STRINGS None Logger ScoreP VampirTrace) +set_property(CACHE FIRESTARTER_TRACING PROPERTY STRINGS None Logger ScoreP External) set(FIRESTARTER_TRACING_CXX_FLAGS "" CACHE STRING "FIRESTARTER_TRACING_CXX_FLAGS should add include paths for the selected tracing infrastructure.") set(FIRESTARTER_TRACING_LD_FLAGS "" CACHE STRING "FIRESTARTER_TRACING_LD_FLAGS should set linker flags for the selected tracing infrastructure.") diff --git a/examples/tracing/README.md b/examples/tracing/README.md new file mode 100644 index 00000000..81d500ee --- /dev/null +++ b/examples/tracing/README.md @@ -0,0 +1,20 @@ +# In this folder, there are examples on how one could include tracing with an external library + +Since these will be mostly shared libraries, we probably will only be able to use them with a dynamic build of FIRESTARTER + +## Example 1: Score-P + +- Needs Score-P: https://www.vi-hps.org/projects/score-p +- File: `scorep.c` +- Compilation: + - 1. create the adapter configuration: `scorep-config --adapter-init --dynamic --user --nokokkos --nocompiler --thread=pthread > .scorep_init.c` + - 2. compile the adapter and the tracing library: `scorep --user --nocompiler --dynamic --nokokkos --noopenmp --thread=pthread gcc -fPIC -c -DSCOREP_USER_ENABLE scorep.c .scorep_init.c` + - 3. link the tracing library: `scorep --no-as-needed --dynamic --user --nokokkos --nocompiler --noopenmp --thread=pthread gcc -shared -o libfirestarter_scorep.so scorep.o .scorep_init.o` + - 4. cmake FIRESTARTER: `cmake -DFIRESTARTER_TRACING=External -DFIRESTARTER_TRACING_LD_FLAGS="-L/home/rschoene/git/FIRESTARTER/examples/tracing -lfirestarter_scorep" -DFIRESTARTER_LINK_STATIC=OFF ..` + - 5. make FIRESTARTER: `make -j` + +- Running: + - Make sure that the library `libfirestarter_scorep.so` can be found in the `LD_LIBRARY_PATH` + - Run `FIRESTARTER` as usual + - Running `FIRESTARTER` should create a profile in your current directory starting with `scorep...` + - You can change environment variables to tune Score-P for your purposes. Have a look at: https://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/latest/pdf/scorep.pdf diff --git a/examples/tracing/scorep.c b/examples/tracing/scorep.c new file mode 100644 index 00000000..d2cb4d37 --- /dev/null +++ b/examples/tracing/scorep.c @@ -0,0 +1,35 @@ +/****************************************************************************** + * FIRESTARTER - A Processor Stress Test Utility + * Copyright (C) 2024 TU Dresden, Center for Information Services and High + * Performance Computing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact: daniel.hackenberg@tu-dresden.de + *****************************************************************************/ + +#include "../../include/firestarter/Tracing/FIRESTARTER_External_Tracing.h" +#include + +void firestarter_tracing_initialize(int argc, const char **argv) { +} + +void firestarter_tracing_region_begin(char const* region_name) { + SCOREP_USER_REGION_BY_NAME_BEGIN(region_name, + SCOREP_USER_REGION_TYPE_COMMON); +} + +void firestarter_tracing_region_end(char const* region_name) { + SCOREP_USER_REGION_BY_NAME_END(region_name); +} diff --git a/include/firestarter/Tracing/FIRESTARTER_Tracing.h b/include/firestarter/Tracing/FIRESTARTER_Tracing.h new file mode 100644 index 00000000..fd1e4ae3 --- /dev/null +++ b/include/firestarter/Tracing/FIRESTARTER_Tracing.h @@ -0,0 +1,32 @@ +/****************************************************************************** + * FIRESTARTER - A Processor Stress Test Utility + * Copyright (C) 2024 TU Dresden, Center for Information Services and High + * Performance Computing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact: daniel.hackenberg@tu-dresden.de + *****************************************************************************/ + +#pragma once + +#ifdef FIRESTARTER_TRACING +void firestarter_tracing_initialize(int argc, const char **argv); +void firestarter_tracing_region_begin(char const* region_name); +void firestarter_tracing_region_end(char const* region_name); +#else +#define firestarter_tracing_initialize(argc, argv) {} +#define firestarter_tracing_region_begin(region_name) {} +#define firestarter_tracing_region_end(region_name) {} +#endif \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1eafc8ca..636ac07b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -317,8 +317,10 @@ elseif(${FIRESTARTER_BUILD_TYPE} STREQUAL "FIRESTARTER") endif() if(NOT "${FIRESTARTER_TRACING}" STREQUAL "None") - string(STRIP "${FIRESTARTER_TRACING_LDFLAGS}" FIRESTARTER_TRACING_LDFLAGS) + string(STRIP "${FIRESTARTER_TRACING_LD_FLAGS}" FIRESTARTER_TRACING_LD_FLAGS) target_link_libraries("${FIRESTARTER_BUILD_TYPE}" - "${FIRESTARTER_TRACING_LDFLAGS}" + "${FIRESTARTER_TRACING_LD_FLAGS}" ) endif() + +message(STATUS "FIRESTARTER_TRACING_LD_FLAGS: ${FIRESTARTER_TRACING_LD_FLAGS}") \ No newline at end of file diff --git a/src/firestarter/Firestarter.cpp b/src/firestarter/Firestarter.cpp index 7cd41743..e471d9c1 100644 --- a/src/firestarter/Firestarter.cpp +++ b/src/firestarter/Firestarter.cpp @@ -21,7 +21,11 @@ #include #include -#include + +extern "C" { +#include +} + #if defined(linux) || defined(__linux__) #include #include @@ -326,9 +330,9 @@ Firestarter::~Firestarter() { } void Firestarter::mainThread() { -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionBegin("Main-Thread"); -#endif + + firestarter_tracing_region_begin("Main-Thread"); + this->environment().printThreadSummary(); #if defined(FIRESTARTER_BUILD_CUDA) || defined(FIRESTARTER_BUILD_HIP) @@ -356,9 +360,7 @@ void Firestarter::mainThread() { int returnCode; if (EXIT_SUCCESS != (returnCode = this->initDumpRegisterWorker( _dumpRegistersTimeDelta, _dumpRegistersOutpath))) { -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionEnd("Main-Thread"); -#endif + firestarter_tracing_region_end("Main-Thread"); std::exit(returnCode); } } @@ -370,9 +372,7 @@ void Firestarter::mainThread() { #if defined(linux) || defined(__linux__) // check if optimization is selected if (_optimize) { -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionBegin("Main-Thread-Optimize"); -#endif + firestarter_tracing_region_begin("Main-Thread-Optimize"); auto startTime = optimizer::History::getTime(); Firestarter::_optimizer = std::make_unique( @@ -391,12 +391,9 @@ void Firestarter::mainThread() { firestarter::optimizer::History::printBest(_optimizationMetrics, payloadItems); -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionEnd("Main-Thread-Optimize"); -#endif -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionEnd("Main-Thread"); -#endif + + firestarter_tracing_region_end("Main-Thread-Optimize"); + firestarter_tracing_region_end("Main-Thread"); // stop all the load threads std::raise(SIGTERM); @@ -433,9 +430,7 @@ void Firestarter::mainThread() { this->printThreadErrorReport(); } -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionEnd("Main-Thread"); -#endif + firestarter_tracing_region_end("Main-Thread"); } void Firestarter::setLoad(unsigned long long value) { @@ -458,12 +453,10 @@ void Firestarter::sigalrmHandler(int signum) { (void)signum; } void Firestarter::sigtermHandler(int signum) { (void)signum; -#ifdef FIRESTARTER_TRACING if (Firestarter::loadVar == LOAD_LOW) - firestarter::tracing::regionEnd("WD_LOW"); + firestarter_tracing_region_end("WD_LOW"); if (Firestarter::loadVar == LOAD_HIGH) - firestarter::tracing::regionEnd("WD_HIGH"); -#endif + firestarter_tracing_region_end("WD_HIGH"); Firestarter::setLoad(LOAD_STOP); // exit loop diff --git a/src/firestarter/LoadWorker.cpp b/src/firestarter/LoadWorker.cpp index ce31396f..e7d142ca 100644 --- a/src/firestarter/LoadWorker.cpp +++ b/src/firestarter/LoadWorker.cpp @@ -22,7 +22,10 @@ #include #include #include -#include + +extern "C" { +#include +} #if defined(linux) || defined(__linux__) extern "C" { @@ -30,12 +33,6 @@ extern "C" { } #endif -#ifdef ENABLE_VTRACING -#include -#endif -#ifdef ENABLE_SCOREP -#include -#endif #include #include @@ -352,24 +349,19 @@ void Firestarter::loadThreadWorker(std::shared_ptr td) { for (;;) { // call high load function -#ifdef FIRESTARTER_TRACING - tracing::regionBegin("High"); -#endif + firestarter_tracing_region_begin("High"); + td->iterations = td->config().payload().highLoadFunction( td->addrMem, td->addrHigh, td->iterations); -#ifdef FIRESTARTER_TRACING - tracing::regionEnd("High"); - tracing::regionBegin("Low"); -#endif + firestarter_tracing_region_end("High"); + firestarter_tracing_region_begin("Low"); // call low load function td->config().payload().lowLoadFunction(td->addrHigh, td->period); -#ifdef FIRESTARTER_TRACING - tracing::regionEnd("Low"); -#endif - + firestarter_tracing_region_end("Low"); + // terminate if master signals end of run and record stop timestamp if (*td->addrHigh == LOAD_STOP) { td->stopTsc = td->environment().topology().timestamp(); diff --git a/src/firestarter/Main.cpp b/src/firestarter/Main.cpp index 038a7909..afe8b4f2 100644 --- a/src/firestarter/Main.cpp +++ b/src/firestarter/Main.cpp @@ -21,7 +21,10 @@ #include #include -#include + +extern "C" { +#include +} #include @@ -469,9 +472,7 @@ int main(int argc, const char **argv) { "Computing" << "\n"; -#ifdef FIRESTARTER_TRACING - firestarter::tracing::initialize(argc, argv); -#endif + firestarter_tracing_initialize(argc, argv); Config cfg{argc, argv}; diff --git a/src/firestarter/Tracing/External.cpp b/src/firestarter/Tracing/External.cpp new file mode 100644 index 00000000..4ae9e45a --- /dev/null +++ b/src/firestarter/Tracing/External.cpp @@ -0,0 +1,40 @@ +/****************************************************************************** + * FIRESTARTER - A Processor Stress Test Utility + * Copyright (C) 2024 TU Dresden, Center for Information Services and High + * Performance Computing + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact: daniel.hackenberg@tu-dresden.de + *****************************************************************************/ + + +extern "C" { + #include +} + + +#include + +void firestarter::tracing::initialize(int argc, const char **argv){ + firestarter_tracing_initialize(argc, argv); +} + +void firestarter::tracing::regionBegin(char const* region_name) { + firestarter_tracing_region_begin(region_name); +} + +void firestarter::tracing::regionEnd(char const* region_name) { + firestarter_tracing_region_begin(region_name); +} \ No newline at end of file diff --git a/src/firestarter/Tracing/LogTracing.cpp b/src/firestarter/Tracing/LogTracing.cpp index 5ccac792..02f7d262 100644 --- a/src/firestarter/Tracing/LogTracing.cpp +++ b/src/firestarter/Tracing/LogTracing.cpp @@ -21,16 +21,17 @@ #include -#include +#include -void firestarter::tracing::initialize(int argc, const char **argv){ +#ifdef FIRESTARTER_TRACING +void firestarter_tracing_initialize(int argc, const char **argv){ } - -void firestarter::tracing::regionBegin(char const* region_name) { +void firestarter_tracing_region_begin(char const* region_name) { firestarter::log::trace() << "Start " << region_name; } -void firestarter::tracing::regionEnd(char const* region_name) { +void firestarter_tracing_region_end(char const* region_name) { firestarter::log::trace() << "End " << region_name; -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/firestarter/WatchdogWorker.cpp b/src/firestarter/WatchdogWorker.cpp index ccf56723..3ca3125c 100644 --- a/src/firestarter/WatchdogWorker.cpp +++ b/src/firestarter/WatchdogWorker.cpp @@ -20,7 +20,10 @@ *****************************************************************************/ #include -#include + +extern "C" { +#include +} #include #include @@ -72,9 +75,7 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, nsec load_nsec = load - load_reduction; // wait for time to be ellapsed with high load -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionBegin("WD_HIGH"); -#endif + firestarter_tracing_region_begin("WD_HIGH"); { std::unique_lock lk(this->_watchdogTerminateMutex); @@ -86,9 +87,7 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, return EXIT_SUCCESS; } } -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionEnd("WD_HIGH"); -#endif + firestarter_tracing_region_end("WD_HIGH"); // signal low load this->setLoad(LOAD_LOW); @@ -98,9 +97,7 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, // wait for time to be ellapsed with low load -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionBegin("WD_LOW"); -#endif + firestarter_tracing_region_begin("WD_LOW"); { std::unique_lock lk(this->_watchdogTerminateMutex); // abort waiting if we get the interrupt signal @@ -111,9 +108,7 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, return EXIT_SUCCESS; } } -#ifdef FIRESTARTER_TRACING - firestarter::tracing::regionEnd("WD_LOW"); -#endif + firestarter_tracing_region_end("WD_LOW"); // increment elapsed time time += period; @@ -139,12 +134,10 @@ int Firestarter::watchdogWorker(std::chrono::microseconds period, Firestarter::_watchdogTerminateAlert.wait_for( lk, timeout, []() { return Firestarter::_watchdog_terminate; }); } -#ifdef FIRESTARTER_TRACING if (Firestarter::loadVar == LOAD_LOW) - firestarter::tracing::regionEnd("WD_LOW"); + firestarter_tracing_region_end("WD_LOW"); if (Firestarter::loadVar == LOAD_HIGH) - firestarter::tracing::regionEnd("WD_HIGH"); -#endif + firestarter_tracing_region_end("WD_HIGH"); this->setLoad(LOAD_STOP); From 600e017a807c878c6029b37a8ddb16f67af724a8 Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Fri, 27 Sep 2024 15:58:20 +0200 Subject: [PATCH 21/21] smaller fixes --- examples/tracing/README.md | 2 ++ examples/tracing/scorep.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/tracing/README.md b/examples/tracing/README.md index 81d500ee..de055e7a 100644 --- a/examples/tracing/README.md +++ b/examples/tracing/README.md @@ -2,6 +2,8 @@ Since these will be mostly shared libraries, we probably will only be able to use them with a dynamic build of FIRESTARTER +You should be able to add the external libraries also to a static build by using the flags `FIRESTARTER_TRACING_*` for `cmake`. There you probably would include an archive. But this was not tested yet. + ## Example 1: Score-P - Needs Score-P: https://www.vi-hps.org/projects/score-p diff --git a/examples/tracing/scorep.c b/examples/tracing/scorep.c index d2cb4d37..2f5a30e9 100644 --- a/examples/tracing/scorep.c +++ b/examples/tracing/scorep.c @@ -19,7 +19,7 @@ * Contact: daniel.hackenberg@tu-dresden.de *****************************************************************************/ -#include "../../include/firestarter/Tracing/FIRESTARTER_External_Tracing.h" +#include "../../include/firestarter/Tracing/FIRESTARTER_Tracing.h" #include void firestarter_tracing_initialize(int argc, const char **argv) {