From be8e63e074d0862bbe5369ada2052cb0760262c5 Mon Sep 17 00:00:00 2001 From: AlexanderSinn Date: Mon, 23 Sep 2024 21:28:59 +0200 Subject: [PATCH] Deregister BArena from Profiling --- Src/Base/AMReX_Arena.H | 6 ++++++ Src/Base/AMReX_Arena.cpp | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/Src/Base/AMReX_Arena.H b/Src/Base/AMReX_Arena.H index 51b5d983fd..12a1e79af7 100644 --- a/Src/Base/AMReX_Arena.H +++ b/Src/Base/AMReX_Arena.H @@ -170,6 +170,12 @@ public: */ void registerForProfiling (const std::string& memory_name); + /** + * \brief Remove this Arena from the list of Arenas that are profiled by TinyProfiler. + * This is equivalent to destructing and re-constructing the Arena + */ + void deregisterFromProfiling (); + #ifdef AMREX_USE_GPU //! Is this GPU stream ordered memory allocator? [[nodiscard]] virtual bool isStreamOrderedArena () const { return false; } diff --git a/Src/Base/AMReX_Arena.cpp b/Src/Base/AMReX_Arena.cpp index 2320ab8c66..8ca168bb1a 100644 --- a/Src/Base/AMReX_Arena.cpp +++ b/Src/Base/AMReX_Arena.cpp @@ -126,6 +126,19 @@ Arena::registerForProfiling ([[maybe_unused]] const std::string& memory_name) #endif } +void +Arena::deregisterFromProfiling () +{ +#ifdef AMREX_TINY_PROFILING + if (m_profiler.m_do_profiling) { + TinyProfiler::DeregisterArena(m_profiler.m_profiling_stats); + m_profiler.m_do_profiling = false; + m_profiler.m_profiling_stats.clear(); + m_profiler.m_currently_allocated.clear(); + } +#endif +} + std::size_t Arena::align (std::size_t s) { @@ -588,6 +601,8 @@ Arena::Finalize () delete the_cpu_arena; the_cpu_arena = nullptr; } + + The_BArena()->deregisterFromProfiling(); } Arena*