SpECTRE  2021.08.02
Parallel::Main< Metavariables > Class Template Reference

The main function of a Charm++ executable. See the Parallelization documentation for an overview of Metavariables, Phases, and parallel components. More...

#include <Main.hpp>

Public Types

using component_list = typename Metavariables::component_list
 
using const_global_cache_tags = get_const_global_cache_tags< Metavariables >
 
using mutable_global_cache_tags = get_mutable_global_cache_tags< Metavariables >
 
using phase_change_tags_and_combines_list = detail::get_phase_change_tags_and_combines_list_or_default_t< Metavariables, tmpl::list<> >
 

Public Member Functions

 Main (CkArgMsg *msg) noexcept
 
 Main (CkMigrateMessage *msg) noexcept
 
void pup (PUP::er &p) noexcept override
 
void allocate_array_components_and_execute_initialization_phase () noexcept
 Allocate the initial elements of array components, and then execute the initialization phase on each component.
 
void execute_next_phase () noexcept
 Determine the next phase of the simulation and execute it.
 
void start_load_balance () noexcept
 Place the Charm++ call that starts load balancing. More...
 
void start_write_checkpoint () noexcept
 Place the Charm++ call that starts writing a checkpoint. More...
 
template<typename InvokeCombine , typename... Tags>
void phase_change_reduction (ReductionData< ReductionDatum< tuples::TaggedTuple< Tags... >, InvokeCombine, funcl::Identity, std::index_sequence<> > > reduction_data) noexcept
 Reduction target for data used in phase change decisions. More...
 

Detailed Description

template<typename Metavariables>
class Parallel::Main< Metavariables >

The main function of a Charm++ executable. See the Parallelization documentation for an overview of Metavariables, Phases, and parallel components.

Constructor & Destructor Documentation

◆ Main()

template<typename Metavariables >
Parallel::Main< Metavariables >::Main ( CkArgMsg *  msg)
explicitnoexcept

Member Function Documentation

◆ phase_change_reduction()

template<typename Metavariables >
template<typename InvokeCombine , typename... Tags>
void Parallel::Main< Metavariables >::phase_change_reduction ( ReductionData< ReductionDatum< tuples::TaggedTuple< Tags... >, InvokeCombine, funcl::Identity, std::index_sequence<> > >  reduction_data)
noexcept

Reduction target for data used in phase change decisions.

It is required that the Parallel::ReductionData holds a single tuples::TaggedTuple.

◆ start_load_balance()

template<typename Metavariables >
void Parallel::Main< Metavariables >::start_load_balance
noexcept

Place the Charm++ call that starts load balancing.

Details

This call is wrapped within an entry method so that it may be used as the callback after a quiescence detection.

◆ start_write_checkpoint()

template<typename Metavariables >
void Parallel::Main< Metavariables >::start_write_checkpoint
noexcept

Place the Charm++ call that starts writing a checkpoint.

Details

This call is wrapped within an entry method so that it may be used as the callback after a quiescence detection.