struct
ReduceManagerManage distinct scopes for reductions.
Manages distinct reducers with an associated scope to orchestrate multiple asynchronous sequences of reduce operations.
Derived classes
- struct vt::collective::CollectiveAlg virtual
- Perform asynchronous collectives within VT.
Public types
- using ReducePtrType = std::unique_ptr<Reduce>
-
using ReduceScopeType = detail::
ReduceScopeHolder<ReducePtrType>
Public static functions
-
template<typename MsgT>static void reduceRootRecv(MsgT* msg)
- Active function when a message reaches the root of the spanning tree and the reduction is complete.
-
template<typename MsgT>static void reduceUpHan(MsgT* msg)
- Active function when a message arrives for a given scope at some level in the spanning tree.
Constructors, destructors, conversion operators
Public functions
- auto global() -> Reduce*
- Get the global reducer.
-
auto getReducer(detail::
ReduceScope const& scope) -> Reduce* - Get the reducer for a given scope.
- auto getReducerObjGroup(ObjGroupProxyType const& proxy) -> Reduce*
- Get the reducer for an objgroup.
- auto getReducerVrtProxy(VirtualProxyType const& proxy) -> Reduce*
- Get the reducer for a collection.
- auto getReducerGroup(GroupType const& group) -> Reduce*
- Get the reducer for a group.
- auto getReducerComponent(ComponentIDType const& cid) -> Reduce*
- Get the reducer for a VT component.
- auto makeReducerCollective() -> Reduce*
- Collectively make a new reducer that creates a unique reduction scope.
-
void makeReducerGroup(GroupType const& group,
collective::
tree:: Tree* tree) - Create the reducer for a group when a custom (or non-global) spanning tree is required (cannot be created on demand)
Function documentation
template<typename MsgT>
static void vt:: collective:: reduce:: ReduceManager:: reduceRootRecv(MsgT* msg)
Active function when a message reaches the root of the spanning tree and the reduction is complete.
Parameters | |
---|---|
msg in | the reduce message |
template<typename MsgT>
static void vt:: collective:: reduce:: ReduceManager:: reduceUpHan(MsgT* msg)
Active function when a message arrives for a given scope at some level in the spanning tree.
Parameters | |
---|---|
msg in | the reduce message |
Reduce* vt:: collective:: reduce:: ReduceManager:: getReducer(detail:: ReduceScope const& scope)
Get the reducer for a given scope.
Parameters | |
---|---|
scope in | the scope |
Returns | the reducer |
Reduce* vt:: collective:: reduce:: ReduceManager:: getReducerObjGroup(ObjGroupProxyType const& proxy)
Get the reducer for an objgroup.
Parameters | |
---|---|
proxy in | the objgroup proxy |
Returns | the reducer |
Reduce* vt:: collective:: reduce:: ReduceManager:: getReducerVrtProxy(VirtualProxyType const& proxy)
Get the reducer for a collection.
Parameters | |
---|---|
proxy in | the collection proxy |
Returns | the reducer |
Reduce* vt:: collective:: reduce:: ReduceManager:: getReducerGroup(GroupType const& group)
Get the reducer for a group.
Parameters | |
---|---|
group in | the group ID |
Returns | the reducer |
Reduce* vt:: collective:: reduce:: ReduceManager:: getReducerComponent(ComponentIDType const& cid)
Get the reducer for a VT component.
Parameters | |
---|---|
cid in | the component ID |
Returns | the reducer |
\internalEach VT component that inherits from runtime::component::Component<T>
gets its own scope.
Reduce* vt:: collective:: reduce:: ReduceManager:: makeReducerCollective()
Collectively make a new reducer that creates a unique reduction scope.
Returns | the reducer with a new scope |
---|
void vt:: collective:: reduce:: ReduceManager:: makeReducerGroup(GroupType const& group,
collective:: tree:: Tree* tree)
Create the reducer for a group when a custom (or non-global) spanning tree is required (cannot be created on demand)
Parameters | |
---|---|
group in | the group ID |
tree in | the associated spanning tree for the group |