template<typename ColT, typename IndexT, typename BaseProxyT>
vt::vrt::collection::Reducable struct

Derived classes

template<typename ColT, typename IndexT>
struct ProxyCollectionTraits
template<typename ColT, typename IndexT>
struct ProxyCollectionTraits

Public types

using ReduceStamp = collective::reduce::ReduceStamp
using ReduceIdxFuncType = std::function<bool(IndexT const &)>

Constructors, destructors, conversion operators

Reducable() defaulted
Reducable(Reducable const&) defaulted
Reducable(Reducable&&) defaulted
Reducable(VirtualProxyType const in_proxy) explicit

Public functions

auto operator=(Reducable const&) -> Reducable& defaulted
template<auto f, template<typename Arg> class Op = collective::NoneOp, typename... Args>
auto allreduce(Args && ... args) const -> messaging::PendingSend
All-reduce back to this collection. Performs a reduction using operator Op followed by a broadcast to f with the result.
template<auto f, template<typename Arg> class Op = collective::NoneOp, typename Target, typename... Args>
auto reduce(Target target, Args && ... args) const -> messaging::PendingSend
Reduce back to a point target. Performs a reduction using operator Op followed by a send to f with the result.
template<template<typename Arg> class Op = collective::NoneOp, typename... CBArgs, typename... Args>
auto reduce(vt::Callback<CBArgs...> cb, Args && ... args) const -> messaging::PendingSend
Reduce back to an arbitrary callback. Performs a reduction using operator Op and then delivers the result to the callback cb.
template<typename OpT = collective::None, typename MsgT, ActiveTypedFnType<MsgT>* f>
auto reduce(MsgT*const msg, Callback<MsgT> cb, ReduceStamp stamp = ReduceStamp{}) const -> messaging::PendingSend
template<typename OpT = collective::None, typename MsgT>
auto reduce(MsgT*const msg, Callback<MsgT> cb, ReduceStamp stamp = ReduceStamp{}) const -> messaging::PendingSend
template<typename OpT, typename FunctorT, typename MsgT, ActiveTypedFnType<MsgT>* f>
auto reduce(MsgT*const msg, ReduceStamp stamp = ReduceStamp{}) const -> messaging::PendingSend
template<typename OpT, typename FunctorT, typename MsgT>
auto reduce(MsgT*const msg, ReduceStamp stamp = ReduceStamp{}) const -> messaging::PendingSend
template<typename MsgT, ActiveTypedFnType<MsgT>* f>
auto reduce(MsgT*const msg, ReduceStamp stamp = ReduceStamp{}, NodeType const& node = uninitialized_destination) const -> messaging::PendingSend
template<typename MsgT, ActiveTypedFnType<MsgT>* f>
auto reduceExpr(MsgT*const msg, ReduceIdxFuncType fn, ReduceStamp stamp = ReduceStamp{}, NodeType const& node = uninitialized_destination) const -> messaging::PendingSend
template<typename MsgT, ActiveTypedFnType<MsgT>* f>
auto reduce(MsgT*const msg, ReduceStamp stamp, IndexT const& idx) const -> messaging::PendingSend
template<typename MsgT, ActiveTypedFnType<MsgT>* f>
auto reduceExpr(MsgT*const msg, ReduceIdxFuncType fn, ReduceStamp stamp, IndexT const& idx) const -> messaging::PendingSend

Function documentation

template<typename ColT, typename IndexT, typename BaseProxyT> template<auto f, template<typename Arg> class Op = collective::NoneOp, typename... Args>
messaging::PendingSend vt::vrt::collection::Reducable<ColT, IndexT, BaseProxyT>::allreduce(Args && ... args) const

All-reduce back to this collection. Performs a reduction using operator Op followed by a broadcast to f with the result.

Parameters
args in the arguments to reduce.
Returns a pending send

template<typename ColT, typename IndexT, typename BaseProxyT> template<auto f, template<typename Arg> class Op = collective::NoneOp, typename Target, typename... Args>
messaging::PendingSend vt::vrt::collection::Reducable<ColT, IndexT, BaseProxyT>::reduce(Target target, Args && ... args) const

Reduce back to a point target. Performs a reduction using operator Op followed by a send to f with the result.

Parameters
target
args in the arguments to reduce.
Returns a pending send

template<typename ColT, typename IndexT, typename BaseProxyT> template<template<typename Arg> class Op = collective::NoneOp, typename... CBArgs, typename... Args>
messaging::PendingSend vt::vrt::collection::Reducable<ColT, IndexT, BaseProxyT>::reduce(vt::Callback<CBArgs...> cb, Args && ... args) const

Reduce back to an arbitrary callback. Performs a reduction using operator Op and then delivers the result to the callback cb.

Parameters
cb in the callback to trigger with the reduction result
args in the arguments to reduce.
Returns a pending send