44#if !defined INCLUDED_VT_COLLECTIVE_COLLECTIVE_ALG_H
45#define INCLUDED_VT_COLLECTIVE_COLLECTIVE_ALG_H
60#include <unordered_map>
99 std::string
name()
override {
return "Collective"; }
146 template <
typename SerializerT>
155 using ScopeMapType = std::unordered_map<TagType, std::unique_ptr<detail::ScopeImpl>>;
constexpr CollectiveAlgType const fst_collective_alg
Definition collective_alg.h:64
reduce::operators::ReduceTMsg< NoneType > ReduceNoneMsg
Definition default_msg.h:244
reduce::ReduceMsg ReduceMsg
Definition collective_alg.h:163
int32_t TagType
Used to hold an tag, e.g., on messages or reduces.
Definition types_type.h:73
collective::CollectiveAlg * theCollective()
Definition runtime_get.cc:101
PhysicalResourceType NodeType
Used to hold the current node/rank or the number of nodes.
Definition types_type.h:57
uint64_t CollectiveAlgType
Used to identify a collective operation.
Definition types_type.h:77
Definition collective_alg.h:116
NodeType root_
Definition collective_alg.h:128
TagType scope_
Definition collective_alg.h:126
CollectiveMsg(bool in_is_user_tag, TagType in_scope, TagType in_seq, NodeType in_root)
Definition collective_alg.h:117
bool is_user_tag_
Definition collective_alg.h:125
TagType seq_
Definition collective_alg.h:127
void serialize(SerializerT &s)
Definition collective_alg.h:147
CollectiveScope makeCollectiveScope(TagType scope_tag=no_tag)
Create a new scope for sequenced MPI operations. Each scope has a distinct, independent collective se...
Definition collective_alg.cc:57
ScopeMapType user_scope_
Definition collective_alg.h:158
std::string name() override
Get the name of the component.
Definition collective_alg.h:99
friend struct CollectiveScope
Definition collective_alg.h:114
ScopeMapType system_scope_
Definition collective_alg.h:159
static void runCollective(CollectiveMsg *msg)
Definition collective_alg.cc:136
CollectiveAlg()
Definition collective_alg.cc:51
std::unordered_map< TagType, std::unique_ptr< detail::ScopeImpl > > ScopeMapType
Definition collective_alg.h:155
std::vector< MsgSharedPtr< CollectiveMsg > > postponed_collectives_
Definition collective_alg.h:160
TagType next_system_scope_
Definition collective_alg.h:157
bool isDeallocated(bool is_user_tag, TagType scope_bits) const
Check if a scope has been deallocated.
Definition collective_alg.cc:77
A distinct scope for enqueuing ordered collective operations.
Definition collective_scope.h:112
Perform a collective barrier that is safe to use with VT handlers in flight.
Definition barrier.h:80
Manage distinct scopes for reductions.
Definition reduce_manager.h:63
Definition reduce_msg.h:79
Scatter data across all nodes from a single origin.
Definition scatter.h:67
Component class for a generic VT runtime module, CRTP'ed over the component's actual type
Definition component.h:95