vt::epoch namespace

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

The header bit positions for an epoch (vt::EpochType)

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

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

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

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)

Operator<< for printing the epoch category eEpochCategory enum.

EpochType vt::epoch::makeEpochZero() constexpr

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

Number of bits for root flag.

static const BitCountType vt::epoch::epoch_category_num_bits constexpr

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

The number of sequential ID bits remaining for a collective EpochType.

static const BitCountType vt::epoch::epoch_seq_root_num_bits constexpr

The total number of bits remaining for a rooted EpochType.

static const NodeType vt::epoch::default_epoch_node constexpr

The default epoch node used for non-rooted epochs.

static const eEpochCategory vt::epoch::default_epoch_category constexpr

The default epoch category.

static const EpochType vt::epoch::arch_epoch_coll