vt::epoch::EpochManip struct

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>
Component class for a generic VT runtime module, CRTP'ed over the component's actual type

Public types

using CapturedContextType = term::ParentEpochCapture

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 eEpochCategory of 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 epoch is 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

EpochManip()

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 bool vt::epoch::EpochManip::isRooted(EpochType const& epoch)

Gets whether the epoch is rooted or not.

Parameters
epoch in the epoch to operate on
Returns whether the epoch is rooted

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 NodeType vt::epoch::EpochManip::node(EpochType const& epoch)

Gets the node for the epoch (only relevant for rooted)

Parameters
epoch in the epoch to operate on
Returns the node (arbitrator) for 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::setNode(EpochType& epoch, NodeType const node)

Set the node for a rooted epoch.

Parameters
epoch in/out the epoch to modify
node 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