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_intermediate< SchedulerEntry > Class Template Referenceabstract

Intermediate class in task_base / Task inheritance relationship which encodes the scheduler metadata type so that a virtual function signature can be defined and polymorphically invoked by the scheduler (who doesn't know concrete type of Task) to initiate task migration. More...

Public Member Functions

 task_base_intermediate (void)
 Constructor used by factory tasks.
 
template<typename SchedulerInfoParam >
 task_base_intermediate (detail::edge_entry_base *edge_entry_ptr, SchedulerInfoParam &&sched_info)
 Constructor used by standard (i.e., non factory) tasks.
 
virtual void migrate (size_t, tg_callback const &)
 Method overridden in Task to request migration of this task by task_graph. More...
 
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

template<typename SchedulerEntry>
class stapl::paragraph_impl::task_base_intermediate< SchedulerEntry >

Intermediate class in task_base / Task inheritance relationship which encodes the scheduler metadata type so that a virtual function signature can be defined and polymorphically invoked by the scheduler (who doesn't know concrete type of Task) to initiate task migration.

Template Parameters
SchedInfoThe type of per task scheduler metadata, as defined by the scheduler type parameter of the PARAGRAPH.

The scheduler framework knows the SchedInfo type and can perform a downcast of the task_base to this base, allowing it to invoke migration.

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

◆ migrate()

template<typename SchedulerEntry>
virtual void stapl::paragraph_impl::task_base_intermediate< SchedulerEntry >::migrate ( size_t  ,
tg_callback const &   
)
virtual

◆ has_succs()

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

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
protectedinherited

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
protectedinherited

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
inherited

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 virtualinherited

◆ migratable()

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

◆ reinvoke()

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

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 virtualnoexceptinherited

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