EpochManip struct
#include <src/vt/epoch/epoch_manip.h>
Component for managing epoch ID allocation/deallocation and manipulating the bits inside an epoch identifier.
Used by the system mostly to manage the bits inside an EpochType. It knows how to set the appropriate bits to change the type bits of an EpochType by setting the bit pattern.
Base classes
-
template<typename T>struct vt::runtime::component::Component<EpochManip>
Componentclass for a generic VT runtime module, CRTP'ed over the component's actual type
Public types
Public static functions
- static auto isRooted(EpochType const& epoch) -> bool
- Gets whether the epoch is rooted or not.
- static auto category(EpochType const& epoch) -> eEpochCategory
- Gets the
eEpochCategoryof a given epoch. - static auto node(EpochType const& epoch) -> NodeType
- Gets the node for the epoch (only relevant for rooted)
-
static auto seq(EpochType const& epoch) -> EpochType::
ImplType - Gets the sequential ID for an epoch.
- static void setIsRooted(EpochType& epoch, bool const is_rooted)
- Set whether the
epochis rooted or not. - static void setCategory(EpochType& epoch, eEpochCategory const cat)
- Set the category for the
epoch. - static void setNode(EpochType& epoch, NodeType const node)
- Set the node for a rooted
epoch. -
static void setSeq(EpochType& epoch,
EpochType::
ImplType const seq) - Set the sequential ID for an
epoch. - static auto generateRootedEpoch(eEpochCategory const& category = default_epoch_category) -> EpochType
- Generate the control bits for a rooted epoch.
- static auto generateEpoch(bool const& is_rooted = false, NodeType const& root_node = default_epoch_node, eEpochCategory const& category = default_epoch_category) -> EpochType
- Generate the control bits for an epoch type (rooted or collective)
Constructors, destructors, conversion operators
Public functions
- auto name() -> std::string override
- Get the name of the component.
- auto getNextRootedEpoch(eEpochCategory const& category = default_epoch_category) -> EpochType
- Stateful method to create the next rooted epoch.
- auto getNextRootedEpoch(eEpochCategory const& category, NodeType const root_node) -> EpochType
- Stateful method to create the next rooted epoch with a particular node embedded in the bits.
- auto getNextCollectiveEpoch(eEpochCategory const& category = default_epoch_category) -> EpochType
- Stateful method to create the next collective epoch.
- auto getTerminatedWindow(EpochType epoch) -> EpochWindow*
- Get an appropriate window that stores the list of terminated epoch based on the epoch archetype.
- auto getArchetype(EpochType epoch) const -> EpochType
- Get archetype bits embedded in epoch.
-
template<typename SerializerT>void serialize(SerializerT& s)
Function documentation
static eEpochCategory vt:: epoch:: EpochManip:: category(EpochType const& epoch)
Gets the eEpochCategory of a given epoch.
| Parameters | |
|---|---|
| epoch in | the epoch to operate on |
| Returns | the category of the epoch |
static EpochType:: ImplType vt:: epoch:: EpochManip:: seq(EpochType const& epoch)
Gets the sequential ID for an epoch.
| Parameters | |
|---|---|
| epoch in | the epoch to operate on |
| Returns | the sequential number for an epoch |
static void vt:: epoch:: EpochManip:: setIsRooted(EpochType& epoch,
bool const is_rooted)
Set whether the epoch is rooted or not.
| Parameters | |
|---|---|
| epoch in/out | the epoch to modify |
| is_rooted in | whether to set the epoch as rooted or not |
static void vt:: epoch:: EpochManip:: setCategory(EpochType& epoch,
eEpochCategory const cat)
Set the category for the epoch.
| Parameters | |
|---|---|
| epoch in/out | the epoch to modify |
| cat in | whether to set the epoch as rooted or not |
static void vt:: epoch:: EpochManip:: setSeq(EpochType& epoch,
EpochType:: ImplType const seq)
Set the sequential ID for an epoch.
| Parameters | |
|---|---|
| epoch in/out | the epoch to modify |
| seq in | the sequential ID to set on the epoch |
static EpochType vt:: epoch:: EpochManip:: generateRootedEpoch(eEpochCategory const& category = default_epoch_category)
Generate the control bits for a rooted epoch.
| Parameters | |
|---|---|
| category in | the category for the epoch |
| Returns | the newly created epoch |
static EpochType vt:: epoch:: EpochManip:: generateEpoch(bool const& is_rooted = false,
NodeType const& root_node = default_epoch_node,
eEpochCategory const& category = default_epoch_category)
Generate the control bits for an epoch type (rooted or collective)
| Parameters | |
|---|---|
| is_rooted in | if the epoch should be rooted or not |
| root_node in | the root node for the epoch if is_rooted |
| category in | the category for the epoch |
| Returns | the newly created epoch |
EpochType vt:: epoch:: EpochManip:: getNextRootedEpoch(eEpochCategory const& category = default_epoch_category)
Stateful method to create the next rooted epoch.
| Parameters | |
|---|---|
| category in | the category for the epoch |
| Returns | the newly created epoch |
EpochType vt:: epoch:: EpochManip:: getNextRootedEpoch(eEpochCategory const& category,
NodeType const root_node)
Stateful method to create the next rooted epoch with a particular node embedded in the bits.
| Parameters | |
|---|---|
| category in | the category for the epoch |
| root_node in | the root node for the epoch |
| Returns | the newly created epoch |
EpochType vt:: epoch:: EpochManip:: getNextCollectiveEpoch(eEpochCategory const& category = default_epoch_category)
Stateful method to create the next collective epoch.
| Parameters | |
|---|---|
| category in | the category for the epoch |
| Returns | the newly created epoch |
EpochWindow* vt:: epoch:: EpochManip:: getTerminatedWindow(EpochType epoch)
Get an appropriate window that stores the list of terminated epoch based on the epoch archetype.
| Parameters | |
|---|---|
| epoch in | the epoch in question |
| Returns | the window of terminated epochs of that kind |
EpochType vt:: epoch:: EpochManip:: getArchetype(EpochType epoch) const
Get archetype bits embedded in epoch.
| Parameters | |
|---|---|
| epoch in | the epoch in question |
| Returns | all bits except for archetype bits masked out |