namespace
epoch
Namespaces
- namespace detail
Classes
- struct EpochManip
- Component for managing epoch ID allocation/deallocation and manipulating the bits inside an epoch identifier.
- struct EpochType
- struct EpochWindow
- Allocates new epochs and holds the set of terminated epochs for a given epoch "archetype".
Enums
- enum class eEpochHeader: int8_t { RootedEpoch = 1 }
- The header bit positions for an epoch (
vt::
)EpochType - enum class eEpochCategory: int8_t { NoCategoryEpoch = 0x0, InsertEpoch = 0x1, DijkstraScholtenEpoch = 0x2 }
- These are different categories of epochs that are allowed.
- enum eEpochColl { cEpochSequential = 0, cEpochCategory = eEpochColl::cEpochSequential + epoch_seq_coll_num_bits, cEpochIsRooted = eEpochColl::cEpochCategory + epoch_category_num_bits }
- Epoch layout enum for collective epochs to help with manipulating the bits.
- enum eEpochRoot { rEpochSequential = 0, rEpochNode = eEpochRoot::rEpochSequential + epoch_seq_root_num_bits, rEpochCategory = eEpochRoot::rEpochNode + node_num_bits, rEpochIsRooted = eEpochRoot::rEpochCategory + epoch_category_num_bits }
- Epoch layout enum for rooted epochs to help with manipulating the bits.
Functions
- auto operator<<(std::ostream& os, eEpochCategory const& cat) -> std::ostream&
- Operator<< for printing the epoch category
eEpochCategory
enum. - auto makeEpochZero() -> EpochType constexpr
- Make an epoch that is zero, helper function for system epoch manipulation.
Variables
- static const BitCountType epoch_root_num_bits constexpr
- Number of bits for root flag.
- static const BitCountType epoch_category_num_bits constexpr
- The number of bits for all types of categories.
- static const BitCountType epoch_seq_coll_num_bits constexpr
- The number of sequential ID bits remaining for a collective
EpochType
. - static const BitCountType epoch_seq_root_num_bits constexpr
- The total number of bits remaining for a rooted
EpochType
. - static const NodeType default_epoch_node constexpr
- The default epoch node used for non-rooted epochs.
- static const eEpochCategory default_epoch_category constexpr
- The default epoch category.
- static const EpochType arch_epoch_coll
Enum documentation
enum class vt:: epoch:: eEpochHeader: int8_t
#include <src/vt/epoch/epoch.h>
The header bit positions for an epoch (vt::
)
This is a description of how EpochType
is actually laid out in memory.
* ========================= Layout of the Epoch ========================= * * w-1 .............. w-h-1 ...............w-h-c-1 ....................0 * | <EpochHeader> ... | <EpochCategory> ... | <Sequential Epoch ID> | * | \ * *where* h = epoch_header_num_bits, | \ * c = epoch_category_num_bits,| \ * w = sizeof(EpochType) * 8 | \ * n = sizeof(NodeType) ^ 16 ^ 5 ^ [remainder] ^ * / | * / | * _______ | * / \ * | .... n .... | ..........................| * <NodeType> <SeqEpochID> * * +++++++++++++++++++++++++++++++++++++++++++ Rooted Extended Layout ++ * * <EpochHeader> = <IsRooted> <HasCategory> * ....3 bits... = ..bit 1.. ...bit 2... * * ======================================================================= *
enum class vt:: epoch:: eEpochCategory: int8_t
#include <src/vt/epoch/epoch.h>
These are different categories of epochs that are allowed.
These category bits statically identify an epoch as a certain type which can be used to dispatch control logic.
enum vt:: epoch:: eEpochColl
#include <src/vt/epoch/epoch.h>
Epoch layout enum for collective epochs to help with manipulating the bits.
This describes the layout of the epoch used by EpochManip
to get/set the bits on an EpochType
field
enum vt:: epoch:: eEpochRoot
#include <src/vt/epoch/epoch.h>
Epoch layout enum for rooted epochs to help with manipulating the bits.
This describes the layout of the epoch used by EpochManip
to get/set the bits on an EpochType
field
Function documentation
std::ostream& vt:: epoch:: operator<<(std::ostream& os,
eEpochCategory const& cat)
#include <src/vt/epoch/epoch.h>
Operator<< for printing the epoch category eEpochCategory
enum.
EpochType vt:: epoch:: makeEpochZero() constexpr
#include <src/vt/epoch/epoch_type.h>
Make an epoch that is zero, helper function for system epoch manipulation.
Returns | zero'ed epoch |
---|
Variable documentation
static const BitCountType vt:: epoch:: epoch_root_num_bits constexpr
#include <src/vt/epoch/epoch.h>
Number of bits for root flag.
static const BitCountType vt:: epoch:: epoch_category_num_bits constexpr
#include <src/vt/epoch/epoch.h>
The number of bits for all types of categories.
Important: if you add new types of epoch headers to the preceding enum, you must ensure that the number of epoch header bits is sufficient to hold all the header types. Important: if you add categories to the enum of epoch categories, you must ensure the epoch_category_num_bits
is sufficiently large.
static const BitCountType vt:: epoch:: epoch_seq_coll_num_bits constexpr
#include <src/vt/epoch/epoch.h>
The number of sequential ID bits remaining for a collective EpochType
.
static const BitCountType vt:: epoch:: epoch_seq_root_num_bits constexpr
#include <src/vt/epoch/epoch.h>
The total number of bits remaining for a rooted EpochType
.
static const NodeType vt:: epoch:: default_epoch_node constexpr
#include <src/vt/epoch/epoch.h>
The default epoch node used for non-rooted epochs.
static const eEpochCategory vt:: epoch:: default_epoch_category constexpr
#include <src/vt/epoch/epoch.h>
The default epoch category.
static const EpochType vt:: epoch:: arch_epoch_coll
#include <src/vt/epoch/epoch_manip.cc>