SpECTRE Documentation Coverage Report
Current view: top level - Parallel/MemoryMonitor - MemoryMonitor.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 22.2 % 9 2
Test Date: 2026-10-22 17:29:42
Legend: Lines:     hit not hit

            Line data    Source code
       1            0 : // Distributed under the MIT License.
       2              : // See LICENSE.txt for details.
       3              : 
       4              : #pragma once
       5              : 
       6              : #include "DataStructures/DataBox/Protocols/Mutator.hpp"
       7              : #include "Parallel/Algorithms/AlgorithmSingletonDeclarations.hpp"
       8              : #include "Parallel/GlobalCache.hpp"
       9              : #include "Parallel/Local.hpp"
      10              : #include "Parallel/MemoryMonitor/Tags.hpp"
      11              : #include "Parallel/ParallelComponentHelpers.hpp"
      12              : #include "Parallel/Phase.hpp"
      13              : #include "ParallelAlgorithms/Actions/AddSimpleTags.hpp"
      14              : #include "ParallelAlgorithms/Actions/TerminatePhase.hpp"
      15              : #include "Utilities/Gsl.hpp"
      16              : #include "Utilities/ProtocolHelpers.hpp"
      17              : #include "Utilities/TMPL.hpp"
      18              : 
      19              : /*!
      20              :  * \ingroup ParallelGroup
      21              :  * Holds the MemoryMonitor parallel component and all actions and tags related
      22              :  * to the memory monitor.
      23              :  */
      24            1 : namespace mem_monitor {}
      25              : 
      26              : namespace mem_monitor {
      27              : namespace detail {
      28              : struct InitializeMutator : tt::ConformsTo<db::protocols::Mutator> {
      29              :   using return_tags = tmpl::list<mem_monitor::Tags::MemoryHolder>;
      30              :   using argument_tags = tmpl::list<>;
      31              : 
      32              :   using tag_type = typename mem_monitor::Tags::MemoryHolder::type;
      33              : 
      34              :   static void apply(const gsl::not_null<tag_type*> /*holder*/) {}
      35              : };
      36              : }  // namespace detail
      37              : 
      38              : /*!
      39              :  * \brief Singleton parallel component used for monitoring memory usage of other
      40              :  * parallel components
      41              :  */
      42              : template <class Metavariables>
      43            1 : struct MemoryMonitor {
      44            0 :   using chare_type = Parallel::Algorithms::Singleton;
      45            0 :   static constexpr bool checkpoint_data = true;
      46              : 
      47            0 :   using metavariables = Metavariables;
      48              : 
      49            0 :   using phase_dependent_action_list = tmpl::list<Parallel::PhaseActions<
      50              :       Parallel::Phase::Initialization,
      51              :       tmpl::list<Initialization::Actions::AddSimpleTags<
      52              :                      mem_monitor::detail::InitializeMutator>,
      53              :                  Parallel::Actions::TerminatePhase>>>;
      54              : 
      55            0 :   using simple_tags_from_options = Parallel::get_simple_tags_from_options<
      56              :       Parallel::get_initialization_actions_list<phase_dependent_action_list>>;
      57              : 
      58            0 :   static void execute_next_phase(
      59              :       const Parallel::Phase next_phase,
      60              :       Parallel::CProxy_GlobalCache<Metavariables>& global_cache) {
      61              :     auto& local_cache = *Parallel::local_branch(global_cache);
      62              :     Parallel::get_parallel_component<MemoryMonitor<Metavariables>>(local_cache)
      63              :         .start_phase(next_phase);
      64              :   }
      65              : };
      66              : }  // namespace mem_monitor
        

Generated by: LCOV version 2.0-1