Thrill
0.1
|
Definition at line 32 of file window.hpp.
#include <window.hpp>
Public Member Functions | |
template<typename ParentDIA > | |
BaseWindowNode (const ParentDIA &parent, const char *label, size_t window_size, const WindowFunction &window_function, const PartialWindowFunction &partial_window_function) | |
void | Dispose () final |
Virtual clear method. Triggers actual disposing in sub-classes. More... | |
bool | OnPreOpFile (const data::File &file, size_t) final |
void | PreOp (const Input &input) |
PreOp: keep last k - 1 items (local window) and store items. More... | |
DIAMemUse | PreOpMemUse () final |
Amount of RAM used by PreOp after StartPreOp() 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 DIAMemUse | ExecuteMemUse () |
Amount of RAM used by Execute() More... | |
virtual void | Execute ()=0 |
Virtual execution method. Triggers actual computation in sub-classes. More... | |
virtual void | PushData (bool consume)=0 |
Virtual method for pushing data. Triggers actual pushing in sub-classes. More... | |
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... | |
Protected Types | |
using | RingBuffer = common::RingBuffer< Input > |
RingBuffer used and passed to user-defined function. More... | |
using | Super = DOpNode< ValueType > |
Protected Attributes | |
data::File | file_ { context_.GetFile(this) } |
Local data file. More... | |
size_t | first_rank_ |
rank of our first element in file_ More... | |
const bool | parent_stack_empty_ |
Whether the parent stack is empty. More... | |
PartialWindowFunction | partial_window_function_ |
The window function which is applied to the last < k elements. More... | |
RingBuffer | window_ |
cache the last k - 1 items for transmission More... | |
WindowFunction | window_function_ |
The window function which is applied to k elements. More... | |
size_t | window_size_ |
Size k of the window. More... | |
data::File::Writer | writer_ { file_.GetWriter() } |
Data writer to local file (only active in PreOp). 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 |
Static Protected 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 |
RingBuffer used and passed to user-defined function.
Definition at line 41 of file window.hpp.
Definition at line 37 of file window.hpp.
|
inline |
Definition at line 45 of file window.hpp.
References BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::parent_stack_empty_, BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::partial_window_function_, BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PreOp(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_function_, and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_size_.
|
inlinefinalvirtual |
Virtual clear method. Triggers actual disposing in sub-classes.
Reimplemented from DIABase.
Definition at line 110 of file window.hpp.
References File::Clear(), RingBuffer< Type, Allocator >::deallocate(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::file_, and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_.
|
inlinefinalvirtual |
Virtual method for receiving a whole data::File of ValueType from parent. Returns true if the file was accepted (requires that the child's function stack is empty and that it can accept whole data::Files).
Reimplemented from DIABase.
Definition at line 71 of file window.hpp.
References File::Copy(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::file_, thrill::common::g_debug_push_file, LOGC, File::num_items(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::parent_stack_empty_, RingBuffer< Type, Allocator >::push_back(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_, and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_size_.
|
inline |
PreOp: keep last k - 1 items (local window) and store items.
Definition at line 93 of file window.hpp.
References RingBuffer< Type, Allocator >::pop_front(), RingBuffer< Type, Allocator >::push_back(), BlockWriter< BlockSink >::Put(), RingBuffer< Type, Allocator >::size(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_, BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_size_, and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::writer_.
Referenced by BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::BaseWindowNode().
|
inlinefinalvirtual |
Amount of RAM used by PreOp after StartPreOp()
Reimplemented from DIABase.
Definition at line 63 of file window.hpp.
References BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_size_.
|
inlinefinalvirtual |
Amount of RAM used by PushData()
Reimplemented from DIABase.
Definition at line 105 of file window.hpp.
References BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_size_.
|
inlinefinalvirtual |
Virtual method for preparing start of PushData.
Reimplemented from DIABase.
Definition at line 67 of file window.hpp.
References RingBuffer< Type, Allocator >::allocate(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_, and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::window_size_.
|
inlinefinalvirtual |
Virtual method for preparing end of PushData.
Reimplemented from DIABase.
Definition at line 101 of file window.hpp.
References BlockWriter< BlockSink >::Close(), and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::writer_.
|
staticprotected |
Definition at line 35 of file window.hpp.
|
protected |
Local data file.
Definition at line 129 of file window.hpp.
Referenced by BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Dispose(), OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Execute(), DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Execute(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::OnPreOpFile(), OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData(), and DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData().
|
protected |
rank of our first element in file_
Definition at line 134 of file window.hpp.
Referenced by OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Execute(), DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Execute(), OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData(), and DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData().
|
protected |
Whether the parent stack is empty.
Definition at line 117 of file window.hpp.
Referenced by BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::BaseWindowNode(), and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::OnPreOpFile().
|
protected |
The window function which is applied to the last < k elements.
Definition at line 123 of file window.hpp.
Referenced by BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::BaseWindowNode(), OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData(), and DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData().
|
protected |
cache the last k - 1 items for transmission
Definition at line 126 of file window.hpp.
Referenced by BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Dispose(), OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Execute(), DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Execute(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::OnPreOpFile(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PreOp(), OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData(), DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData(), and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::StartPreOp().
|
protected |
The window function which is applied to k elements.
Definition at line 121 of file window.hpp.
Referenced by BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::BaseWindowNode(), OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData(), and DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData().
|
protected |
Size k of the window.
Definition at line 119 of file window.hpp.
Referenced by BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::BaseWindowNode(), OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Execute(), DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::Execute(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::OnPreOpFile(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PreOp(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PreOpMemUse(), OverlapWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData(), DisjointWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushData(), BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PushDataMemUse(), and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::StartPreOp().
|
protected |
Data writer to local file (only active in PreOp).
Definition at line 131 of file window.hpp.
Referenced by BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::PreOp(), and BaseWindowNode< ValueType, Input, WindowFunction, PartialWindowFunction >::StopPreOp().