STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
List of all members | Public Member Functions | Public Types | Protected Member Functions | Protected Types
stapl::paragraph_impl::task_base Struct Referenceabstract

Encapsulates all information needed to execute a task. Constructed by the PARAGRAPH and passed to executor when all dependences have been satisfied. More...

Public Member Functions

 task_base (detail::edge_entry_base *edge_entry_ptr)
 
std::size_t task_id () const
 Extract task identifier from bit field and return it.
 
p_object const & comm_p_object (tg_callback const &cb) const
 Use presence/lack of intra-PARAGRAPH successors to inform the execution in which task communication group this task's traffic should be placed. More...
 
virtual result_type operator() (tg_callback const &cb)=0
 Invoke the task. Called by the executor. Implemented in derived class that knows the workfunction and view types. More...
 
virtual bool migratable (void) const noexcept
 Return true if task can be migrated. More...
 
virtual bool finished (void) const
 Return true if task has completed and does not need reinvocation. This default implementation is used by the non factory tasks, where the method should never be called.
 
virtual bool reinvoke (tg_callback const &)
 Reinvoke the task if it has not completed. This default implementation is used by the non factory tasks, where the method should never be called. More...
 
virtual bool is_factory_task (void) const noexcept=0
 Pure virtual method implemented by derived classes to report whether or not they are instance of the class template factory_task. More...
 
virtual bool is_nested_pg_task (void) const noexcept
 Allows detection of derived class acting as holder for nested paragraph. Used paragraph::operator() to detect starting tasks which are actually nested paragraphs to avoid passing them to the executor.
 

Public Types

enum  status_type { Active, Idle, Finished }
 Return values for function operator. More...
 

Protected Member Functions

bool has_succs () const
 Extract the has successors boolean trait from the bit field and return. More...
 
void processed (empty_class &&ignore, bool b_has_succs, tg_callback const &) const
 Notify the PARAGRAPH that the task has finished execution and provide the return value to trigger data flow. Signature for void return values. More...
 
template<typename Return >
void processed (Return &&val, bool b_has_succs, tg_callback const &) const
 Notify the PARAGRAPH that the task has finished execution and provide the return value to trigger data flow. Signature for non void return values. More...
 

Protected Types

using result_type = runnable_base::status_type
 the type returned by the function operator with status information for the executor.
 

Detailed Description

Encapsulates all information needed to execute a task. Constructed by the PARAGRAPH and passed to executor when all dependences have been satisfied.

This base class is type erased with virtual dispatch to the derived classes' function operator, allowing any PARAGRAPH to support arbitrary workfunction and view parameters.

Member Enumeration Documentation

◆ status_type

Return values for function operator.

Enumerator
Active 

Runnable object is active.

Idle 

Runnable object is idle.

Finished 

Runnable object has finished.

Member Function Documentation

◆ has_succs()

bool stapl::paragraph_impl::task_base::has_succs ( ) const
protected

Extract the has successors boolean trait from the bit field and return.

Returns
True if this task has successors in the PARAGRAPH.

◆ processed() [1/2]

void stapl::paragraph_impl::task_base::processed ( empty_class &&  ignore,
bool  b_has_succs,
tg_callback const &  cb 
) const
protected

Notify the PARAGRAPH that the task has finished execution and provide the return value to trigger data flow. Signature for void return values.

Parameters
ignoreParameter passed in place of void for genericity. Unused.

Called from derived class function operator implementations.

◆ processed() [2/2]

template<typename Return >
void stapl::paragraph_impl::task_base::processed ( Return &&  val,
bool  b_has_succs,
tg_callback const &  cb 
) const
protected

Notify the PARAGRAPH that the task has finished execution and provide the return value to trigger data flow. Signature for non void return values.

Parameters
valThe return value of the workfunction invocation.

Called from derived class function operator implementations.

◆ comm_p_object()

p_object const & stapl::paragraph_impl::task_base::comm_p_object ( tg_callback const &  cb) const

Use presence/lack of intra-PARAGRAPH successors to inform the execution in which task communication group this task's traffic should be placed.

Parameters
cbCallback mechanism to PARAGRAPH passed to task by its executor.

◆ operator()()

virtual result_type stapl::paragraph_impl::task_base::operator() ( tg_callback const &  cb)
pure virtual

◆ migratable()

virtual bool stapl::paragraph_impl::task_base::migratable ( void  ) const
virtualnoexcept

◆ reinvoke()

virtual bool stapl::paragraph_impl::task_base::reinvoke ( tg_callback const &  )
virtual

Reinvoke the task if it has not completed. This default implementation is used by the non factory tasks, where the method should never be called.

Returns
true if it needs to be reinvoked again, otherwise false.

Reimplemented in stapl::paragraph_impl::factory_task< Factory, ViewSet, SchedulerEntry, PGV >, and stapl::paragraph_impl::factory_task< Factory, view_manager< coarsener_type< Factory >::type, Views... >::result_type, Scheduler::entry_type, paragraph_impl::paragraph_view< Scheduler > >.

◆ is_factory_task()

virtual bool stapl::paragraph_impl::task_base::is_factory_task ( void  ) const
pure virtualnoexcept

The documentation for this struct was generated from the following files: