template<>
vt::objgroup::proxy::Proxy<void> struct

Public types

using ObjGroupType = void
using ReduceStamp = collective::reduce::ReduceStamp
using PendingSendType = messaging::PendingSend

Constructors, destructors, conversion operators

Proxy() defaulted

Public functions

auto operator[](NodeType node) const -> DefaultProxyElm
Index the proxy to get the element proxy for a particular node.
template<typename MsgT, ActiveTypedFnType<MsgT>* f, typename... Args>
auto broadcast(Args && ... args) const -> messaging::PendingSend
Broadcast a message.
template<auto f, typename... Args>
auto broadcast(Args && ... args) const -> messaging::PendingSend
Broadcast a message.
template<typename MsgT, ActiveTypedFnType<MsgT>* f>
auto broadcastMsg(messaging::MsgPtrThief<MsgT> msg, TagType tag = no_tag) const -> messaging::PendingSend
Broadcast a message.
template<auto f>
auto broadcastMsg(messaging::MsgPtrThief<typename FuncTraits<decltype(f)>::MsgT> msg, TagType tag = no_tag) const -> messaging::PendingSend
Broadcast a message.
template<typename OpT, typename FunctorT, typename MsgT, typename... Args>
auto reduce(NodeType root, Args && ... args) const -> messaging::PendingSend
Reduce a message up the tree, possibly delayed through a pending send.
template<typename OpT, typename FunctorT, typename MsgT, ActiveTypedFnType<MsgT>* f, typename... Args>
auto reduce(NodeType root, Args && ... args) const -> messaging::PendingSend
template<typename OpT, typename FunctorT, typename MsgT>
auto reduceMsg(NodeType root, MsgT*const msg) const -> messaging::PendingSend
Reduce a message up the tree, possibly delayed through a pending send.
template<typename OpT, typename FunctorT, typename MsgT, ActiveTypedFnType<MsgT>* f>
auto reduceMsg(NodeType root, MsgT*const msg) const -> messaging::PendingSend
auto broadcast(Params && ... params) const -> Proxy<void>::PendingSendType
auto multicast(GroupType type, Params && ... params) const -> Proxy<void>::PendingSendType
auto multicast(group::region::Region::RegionUPtrType&& nodes, Params && ... params) const -> Proxy<void>::PendingSendType
auto operator=(Proxy const&) -> Proxy& defaulted
auto allreduce(Args && ... args) const -> PendingSendType
All-reduce back to this objgroup. Performs a reduction using operator Op followed by a broadcast to f with the result.
auto get() const -> void*
Get raw pointer to the local object instance residing on the current node.
auto getProxy() const -> ObjGroupProxyType
Get the underlying proxy bits that are used to identify the objgroup.
auto castToBase() const -> Proxy<BaseT>
Cast typed proxy to the base class type for this objgroup.
void destroyCollective() const
Collective destroy this objgroup instance on all nodes.
auto makeHandleRDMA(std::size_t count, bool is_uniform) const -> vt::rdma::Handle<T>
Make a new RDMA handle for this objgroup—a collective invocation.
void destroyHandleRDMA(vt::rdma::Handle<T> handle) const
Destroy an RDMA handle created from this objgroup.
auto makeHandleSetRDMA(int32_t max_elm, std::unordered_map<int32_t, std::size_t> const& map, bool is_uniform) const -> vt::rdma::HandleSet<T>
Make a new set of RDMA handles for this objgroup—a collective invocation. This is the overload for a potentially sparse set of handles with a non-zero starting index.
void destroyHandleSetRDMA(vt::rdma::HandleSet<T> handle) const
Destroy a set of RDMA handles created from this objgroup.
auto operator()(NodeType node) const -> ProxyElm<void>
Index the proxy to get the element proxy for a particular node.
void serialize(Serializer& s)

Function documentation

template<>
DefaultProxyElm vt::objgroup::proxy::Proxy<void>::operator[](NodeType node) const

Index the proxy to get the element proxy for a particular node.

Parameters
node in the desired node
Returns an indexed proxy to that node

template<> template<typename MsgT, ActiveTypedFnType<MsgT>* f, typename... Args>
messaging::PendingSend vt::objgroup::proxy::Proxy<void>::broadcast(Args && ... args) const

Broadcast a message.

Parameters
args in the arguments used to make a message
Returns the PendingSend for the sent message

template<> template<auto f, typename... Args>
messaging::PendingSend vt::objgroup::proxy::Proxy<void>::broadcast(Args && ... args) const

Broadcast a message.

Parameters
args in the arguments used to make a message
Returns the PendingSend for the sent message

template<> template<typename MsgT, ActiveTypedFnType<MsgT>* f>
messaging::PendingSend vt::objgroup::proxy::Proxy<void>::broadcastMsg(messaging::MsgPtrThief<MsgT> msg, TagType tag = no_tag) const

Broadcast a message.

Parameters
msg in the message to broadcast
tag in the tag to put on the message
Returns the PendingSend for the sent message

template<> template<auto f>
messaging::PendingSend vt::objgroup::proxy::Proxy<void>::broadcastMsg(messaging::MsgPtrThief<typename FuncTraits<decltype(f)>::MsgT> msg, TagType tag = no_tag) const

Broadcast a message.

Parameters
msg in the message to broadcast
tag in the tag to put on the message
Returns the PendingSend for the sent message

template<> template<typename OpT, typename FunctorT, typename MsgT, typename... Args>
messaging::PendingSend vt::objgroup::proxy::Proxy<void>::reduce(NodeType root, Args && ... args) const

Reduce a message up the tree, possibly delayed through a pending send.

Parameters
root in the root node where the final handler provides the result
args in the arguments used to make a message
Returns the pending send corresponding to the reduce

template<> template<typename OpT, typename FunctorT, typename MsgT>
messaging::PendingSend vt::objgroup::proxy::Proxy<void>::reduceMsg(NodeType root, MsgT*const msg) const

Reduce a message up the tree, possibly delayed through a pending send.

Parameters
root in the root node where the final handler provides the result
msg in the message to reduce on this node
Returns the pending send corresponding to the reduce

template<>
Proxy<void>::PendingSendType vt::objgroup::proxy::Proxy<void>::broadcast(Params && ... params) const

template<>
Proxy<void>::PendingSendType vt::objgroup::proxy::Proxy<void>::multicast(GroupType type, Params && ... params) const

template<>
Proxy<void>::PendingSendType vt::objgroup::proxy::Proxy<void>::multicast(group::region::Region::RegionUPtrType&& nodes, Params && ... params) const