vt::collective::reduce::detail namespace

Namespaces

namespace tags

Classes

struct ReduceIDImpl
Sent in all reduction messages to identify the scope and reduction stamp so it gets merged with the right data.
struct ReduceScope
A unique scope for reduction operations, identified by the obj group proxy, virtual proxy, group ID, or component ID.
template<typename T>
struct ReduceScopeHolder
Holds instances of reducers indexed by the reduction scope bits.
struct TagPair
Holds a pair of tags, which can be used to identify a reduction instance.

Typedefs

using ReduceStamp = std::variant<StrongTag, TagPair, StrongSeq, StrongUserID, StrongEpoch>
Reduction stamp bits to identify a specific instance of a reduction.
using UserIDType = uint64_t
using StrongTag = Strong<TagType, no_tag, tags::TagTag>
using StrongSeq = Strong<SequentialIDType, no_seq_id, tags::SeqTag>
using StrongObjGroup = Strong<ObjGroupProxyType, no_obj_group, tags::ObjGroupTag>
using StrongVrtProxy = Strong<VirtualProxyType, no_vrt_proxy, tags::VrtProxyTag>
using StrongGroup = Strong<GroupType, no_group, tags::GroupTag>
using StrongCom = Strong<ComponentIDType, u32empty, tags::ComponentTag>
using StrongUserID = Strong<UserIDType, u64empty, tags::UserIDTag>
using StrongEpoch = EpochType

Functions

template<typename T, typename... Args>
auto makeScope(Args && ... args) -> ReduceScope
Create a new reduction scope.
auto stringizeStamp(ReduceStamp const& stamp) -> std::string
Stringize a ReduceStamp.

Typedef documentation

using vt::collective::reduce::detail::ReduceStamp = std::variant<StrongTag, TagPair, StrongSeq, StrongUserID, StrongEpoch>

Reduction stamp bits to identify a specific instance of a reduction.

using vt::collective::reduce::detail::UserIDType = uint64_t

using vt::collective::reduce::detail::StrongTag = Strong<TagType, no_tag, tags::TagTag>

using vt::collective::reduce::detail::StrongSeq = Strong<SequentialIDType, no_seq_id, tags::SeqTag>

using vt::collective::reduce::detail::StrongObjGroup = Strong<ObjGroupProxyType, no_obj_group, tags::ObjGroupTag>

using vt::collective::reduce::detail::StrongVrtProxy = Strong<VirtualProxyType, no_vrt_proxy, tags::VrtProxyTag>

using vt::collective::reduce::detail::StrongGroup = Strong<GroupType, no_group, tags::GroupTag>

using vt::collective::reduce::detail::StrongCom = Strong<ComponentIDType, u32empty, tags::ComponentTag>

using vt::collective::reduce::detail::StrongUserID = Strong<UserIDType, u64empty, tags::UserIDTag>

using vt::collective::reduce::detail::StrongEpoch = EpochType

Function documentation

template<typename T, typename... Args>
ReduceScope vt::collective::reduce::detail::makeScope(Args && ... args)

Create a new reduction scope.

Parameters
args in constructor for reduction scope type
Returns the new scope

std::string vt::collective::reduce::detail::stringizeStamp(ReduceStamp const& stamp)

Stringize a ReduceStamp.

Parameters
stamp in the reduction stamp
Returns a string