|
Thrill
0.1
|
Definition at line 39 of file group_by_iterator.hpp.
Inheritance diagram for GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >:
Collaboration diagram for GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >:#include <group_by_iterator.hpp>
Classes | |
| class | HashCount |
| struct | ValueComparator |
Public Member Functions | |
| template<typename ParentDIA > | |
| GroupByNode (const ParentDIA &parent, const KeyExtractor &key_extractor, const GroupFunction &groupby_function, const HashFunction &hash_function=HashFunction()) | |
| Constructor for a GroupByNode. More... | |
| void | Dispose () override |
| Virtual clear method. Triggers actual disposing in sub-classes. More... | |
| void | Execute () override |
| Virtual execution method. Triggers actual computation in sub-classes. More... | |
| DIAMemUse | ExecuteMemUse () final |
| Amount of RAM used by Execute() More... | |
| void | PreOp (const ValueIn &v) |
| Send all elements to their designated PEs. More... | |
| DIAMemUse | PreOpMemUse () final |
| Amount of RAM used by PreOp after StartPreOp() More... | |
| void | PushData (bool consume) final |
| Virtual method for pushing data. Triggers actual pushing in sub-classes. More... | |
| DIAMemUse | PushDataMemUse () final |
| Amount of RAM used by PushData() More... | |
| void | StartPreOp (size_t) final |
| Virtual method for preparing start of PushData. More... | |
| void | StopPreOp (size_t) final |
| Virtual method for preparing end of PushData. More... | |
Public Member Functions inherited from DOpNode< ValueType > | |
| DOpNode (Context &ctx, const char *label, const std::initializer_list< size_t > &parent_ids, const std::initializer_list< DIABasePtr > &parents) | |
| Constructor for a DOpNode, which sets references to the parent nodes. More... | |
| DOpNode (Context &ctx, const char *label, std::vector< size_t > &&parent_ids, std::vector< DIABasePtr > &&parents) | |
| Constructor for a DOpNode, which sets references to the parent nodes. More... | |
Public Member Functions inherited from DIANode< ValueType > | |
| DIANode (Context &ctx, const char *label, const std::initializer_list< size_t > &parent_ids, const std::initializer_list< DIABasePtr > &parents) | |
| Constructor for a DIANode, which sets references to the parent nodes. More... | |
| DIANode (Context &ctx, const char *label, std::vector< size_t > &&parent_ids, std::vector< DIABasePtr > &&parents) | |
| Constructor for a DIANode, which sets references to the parent nodes. More... | |
| virtual void | AddChild (DIABase *node, const Callback &callback=Callback(), size_t parent_index=0) |
| Enables children to push their "folded" function chains to their parent. More... | |
| std::vector< DIABase * > | children () const override |
| Returns the children of this DIABase. More... | |
| void | PushFile (data::File &file, bool consume) const |
| void | PushItem (const ValueType &item) const |
| Method for derived classes to Push a single item to all children. More... | |
| void | RemoveAllChildren () override |
| void | RemoveChild (DIABase *node) override |
| void | RunPushData () override |
Public Member Functions inherited from DIABase | |
| DIABase (Context &ctx, const char *label, const std::initializer_list< size_t > &parent_ids, const std::initializer_list< DIABasePtr > &parents) | |
| The constructor for a DIABase. More... | |
| DIABase (Context &ctx, const char *label, std::vector< size_t > &&parent_ids, std::vector< DIABasePtr > &&parents) | |
| The constructor for a DIABase. More... | |
| DIABase (const DIABase &)=delete | |
| non-copyable: delete copy-constructor More... | |
| DIABase (DIABase &&)=default | |
| move-constructor: default More... | |
| virtual | ~DIABase () |
| Virtual destructor for a DIABase. More... | |
| virtual size_t | consume_counter () const |
| Returns consume_counter_. More... | |
| Context & | context () |
| Returns the api::Context of this DIABase. More... | |
| virtual void | DecConsumeCounter (size_t counter) |
| const size_t & | dia_id () const |
| return unique id of DIANode subclass as stored by StatsNode More... | |
| virtual bool | ForwardDataOnly () const |
| virtual void | IncConsumeCounter (size_t counter) |
| const char * | label () const |
| return label() of DIANode subclass as stored by StatsNode More... | |
| mem::Manager & | mem_manager () |
| Return the Context's memory manager. More... | |
| DIABase & | operator= (const DIABase &)=delete |
| non-copyable: delete assignment operator More... | |
| DIABase & | operator= (DIABase &&)=default |
| move-assignment operator: default More... | |
| std::vector< size_t > | parent_ids () const |
| Returns the parents of this DIABase. More... | |
| const std::vector< DIABasePtr > & | parents () const |
| Returns the parents of this DIABase. More... | |
| void | RemoveParent (DIABase *p) |
| Remove a parent. More... | |
| virtual bool | RequireParentPushData (size_t) const |
| void | RunScope () |
| void | set_mem_limit (const DIAMemUse &mem_limit) |
| void | set_state (const DIAState &state) |
| virtual void | SetConsumeCounter (size_t counter) |
| DIAState | state () const |
| virtual bool | OnPreOpFile (const data::File &, size_t) |
Public Member Functions inherited from ReferenceCounter | |
| ReferenceCounter () noexcept | |
| new objects have zero reference count More... | |
| ReferenceCounter (const ReferenceCounter &) noexcept | |
| coping still creates a new object with zero reference count More... | |
| ~ReferenceCounter () | |
| bool | dec_reference () const noexcept |
| Call whenever resetting (i.e. More... | |
| void | inc_reference () const noexcept |
| Call whenever setting a pointer to the object. More... | |
| ReferenceCounter & | operator= (const ReferenceCounter &) noexcept |
| assignment operator, leaves pointers unchanged More... | |
| size_t | reference_count () const noexcept |
| Return the number of references to this object (for debugging) More... | |
| bool | unique () const noexcept |
| Test if the ReferenceCounter is referenced by only one CountingPtr. More... | |
Private Types | |
| using | Key = typename common::FunctionTraits< KeyExtractor >::result_type |
| using | Super = DOpNode< ValueType > |
| using | ValueIn = typename common::FunctionTraits< KeyExtractor >::template arg_plain< 0 > |
| using | ValueOut = ValueType |
Private Member Functions | |
| void | FlushVectorToFile (std::vector< ValueIn > &v) |
| Sort and store elements in a file. More... | |
| void | MainOp () |
| Receive elements from other workers. More... | |
| void | RunUserFunc (data::File &f, bool consume) |
Private Attributes | |
| data::CatStream::Writers | emitters_ |
| std::deque< data::File > | files_ |
| GroupFunction | groupby_function_ |
| HashFunction | hash_function_ |
| KeyExtractor | key_extractor_ |
| core::LocationDetection< HashCount > | location_detection_ |
| data::File | pre_file_ |
| location detection and associated files More... | |
| data::File::Writer | pre_writer_ |
| data::File | sorted_elems_ { context_.GetFile(this) } |
| data::CatStreamPtr | stream_ { context_.GetNewCatStream(this) } |
| size_t | totalsize_ = 0 |
Static Private Attributes | |
| static constexpr bool | debug = false |
Additional Inherited Members | |
Public Types inherited from DOpNode< ValueType > | |
| using | Super = DIANode< ValueType > |
Public Types inherited from DIANode< ValueType > | |
| using | Callback = tlx::delegate< void(const ValueType &)> |
Public Types inherited from DIABase | |
| using | DIABasePtr = tlx::CountingPtr< DIABase > |
Public Attributes inherited from DIABase | |
| common::JsonLogger | logger_ |
Static Public Attributes inherited from DIABase | |
| static constexpr size_t | kNeverConsume = static_cast<size_t>(-1) |
| Never full consume. More... | |
Protected Attributes inherited from DIANode< ValueType > | |
| std::vector< Child > | children_ |
| Callback functions from the child nodes. More... | |
Protected Attributes inherited from DIABase | |
| Context & | context_ |
| associated Context More... | |
| const size_t | dia_id_ |
| DIA serial id. More... | |
| const char *const | label_ |
| DOp node static label. More... | |
| DIAState | state_ = DIAState::NEW |
| State of the DIANode. State is NEW on creation. More... | |
| std::vector< DIABasePtr > | parents_ |
| Parents of this DIABase. More... | |
| DIAMemUse | mem_limit_ = 0 |
| size_t | consume_counter_ = 1 |
|
private |
Definition at line 55 of file group_by_key.hpp.
Definition at line 52 of file group_by_key.hpp.
|
private |
Definition at line 58 of file group_by_key.hpp.
|
private |
Definition at line 56 of file group_by_key.hpp.
|
inline |
Constructor for a GroupByNode.
Sets the DataManager, parent, stack, key_extractor and reduce_function.
Definition at line 121 of file group_by_key.hpp.
References DIABase::context_, DIABase::dia_id(), Context::GetFile(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::groupby_function_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::hash_function_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::key_extractor_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::location_detection_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::pre_file_, and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::PreOp().
|
inlineoverridevirtual |
Virtual clear method. Triggers actual disposing in sub-classes.
Reimplemented from DIABase.
Definition at line 294 of file group_by_key.hpp.
|
inlineoverridevirtual |
Virtual execution method. Triggers actual computation in sub-classes.
Implements DIABase.
Definition at line 184 of file group_by_key.hpp.
References StreamData::Writers::Close(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::emitters_, File::GetConsumeReader(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::hash_function_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::key_extractor_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::location_detection_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::MainOp(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::pre_file_.
|
inlinefinalvirtual |
Amount of RAM used by Execute()
Reimplemented from DIABase.
Definition at line 169 of file group_by_key.hpp.
References DIAMemUse::Max().
|
inlineprivate |
Sort and store elements in a file.
Definition at line 334 of file group_by_key.hpp.
References BlockWriter< BlockSink >::Close(), DIABase::context_, Context::GetFile(), BlockWriter< BlockSink >::Put(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::ValueComparator::ValueComparator().
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::MainOp().
|
inlineprivate |
Receive elements from other workers.
Definition at line 348 of file group_by_key.hpp.
References GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::FlushVectorToFile(), LOG, thrill::mem::memory_exceeded, CountingPtr< Type, Deleter >::reset(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::stream_, and tlx::vector_free().
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::Execute().
|
inline |
Send all elements to their designated PEs.
Definition at line 149 of file group_by_key.hpp.
References GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::emitters_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::hash_function_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::key_extractor_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::location_detection_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::pre_writer_, and BlockWriter< BlockSink >::Put().
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::GroupByNode().
|
inlinefinalvirtual |
Amount of RAM used by PreOp after StartPreOp()
Reimplemented from DIABase.
Definition at line 165 of file group_by_key.hpp.
References DIAMemUse::Max().
|
inlinefinalvirtual |
Virtual method for pushing data. Triggers actual pushing in sub-classes.
Implements DIABase.
Definition at line 204 of file group_by_key.hpp.
References Context::block_pool(), DIABase::context_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::files_, Context::GetFile(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::groupby_function_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::key_extractor_, LOG, BlockPool::MaxMergeDegreePrefetch(), DIANode< ValueType >::PushItem(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::RunUserFunc(), sLOG1, thrill::data::StartPrefetch(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::ValueComparator::ValueComparator().
|
inlinefinalvirtual |
Amount of RAM used by PushData()
Reimplemented from DIABase.
Definition at line 173 of file group_by_key.hpp.
References GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::files_, and DIAMemUse::Max().
|
inlineprivate |
Definition at line 314 of file group_by_key.hpp.
References File::GetReader(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::groupby_function_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::key_extractor_, LOG, and DIANode< ValueType >::PushItem().
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::PushData().
|
inlinefinalvirtual |
Virtual method for preparing start of PushData.
Reimplemented from DIABase.
Definition at line 141 of file group_by_key.hpp.
References GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::emitters_, File::GetWriter(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::location_detection_, DIABase::mem_limit_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::pre_file_, GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::pre_writer_, and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::stream_.
|
inlinefinalvirtual |
Virtual method for preparing end of PushData.
Reimplemented from DIABase.
Definition at line 161 of file group_by_key.hpp.
References BlockWriter< BlockSink >::Close(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::pre_writer_.
|
staticprivate |
Definition at line 50 of file group_by_key.hpp.
|
private |
Definition at line 304 of file group_by_key.hpp.
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::Execute(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::PreOp(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::StartPreOp().
|
private |
|
private |
Definition at line 298 of file group_by_key.hpp.
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::GroupByNode(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::PushData(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::RunUserFunc().
|
private |
Definition at line 299 of file group_by_key.hpp.
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::Execute(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::GroupByNode(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::PreOp().
|
private |
Definition at line 297 of file group_by_key.hpp.
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::Execute(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::GroupByNode(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::ValueComparator::operator()(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::PreOp(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::PushData(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::RunUserFunc().
|
private |
Definition at line 301 of file group_by_key.hpp.
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::Execute(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::GroupByNode(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::PreOp(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::StartPreOp().
|
private |
location detection and associated files
Definition at line 311 of file group_by_key.hpp.
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::Execute(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::GroupByNode(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::StartPreOp().
|
private |
Definition at line 312 of file group_by_key.hpp.
Referenced by GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::PreOp(), GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::StartPreOp(), and GroupByNode< ValueType, KeyExtractor, GroupFunction, HashFunction, UseLocationDetection >::StopPreOp().
|
private |
Definition at line 307 of file group_by_key.hpp.
|
private |
|
private |
Definition at line 308 of file group_by_key.hpp.