STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
List of all members | Public Member Functions | Public Types | Public Attributes | Protected Member Functions | Protected Attributes
stapl::paragraph_impl::paragraph< Scheduler, Factory, Views > Class Template Referencefinal

The PARAGRAPH is the dependence graph representation of programs in STAPL. It's generally not advised for users to instantiate it directly, but rather use stapl::make_paragraph. More...

Public Member Functions

 paragraph (paragraph const &other)
 
 paragraph (Factory factory, Views const &... views, Scheduler scheduler=Scheduler(), const bool enable_migration=false, rmi_handle::reference parent_handle_ref=rmi_handle::reference(), location_type parent_location=invalid_location_id, bool b_parent_notify_all_locations=false, size_t task_id=0, std::size_t num_succs=0)
 Constructor called to initialize a new PARAGRAPH collectively. More...
 
template<typename ... PackagedViews>
 paragraph (nested_tag const &ignored, Factory factory, Scheduler const &scheduler, const bool enable_migration, rmi_handle::reference parent_handle_ref, location_type parent_location, bool b_parent_notify_all_locations, size_t task_id, std::size_t num_succs, PackagedViews &&... packaged_views)
 Constructor for one-sided initialization of a new PARAGRAPH. More...
 
bool has_span (void) const final
 
void pulse_terminator (void) final
 Starts termination detection.
 
void set_result (std::size_t index, task_graph::task_id_t task_id) final
 For port flow PARAGRAPHs, connect the output of the given task to the given index of the output port.
 
result_type operator() (int unused, bool blocking=false, bool force_evaluation=false, bool one_sided=false)
 Method that starts population and execution of a PARAGRAPH. More...
 
result_type operator() (void)
 Function operator signature that engages blocking semantic of the PARAGRAPH. The function call does not return until termination detection has succeeded and the result value for this location is available.
 
factory_task< Factory, view_manager< coarsener_type< Factory >::type, Views... >::result_type, Scheduler::entry_type, paragraph_impl::paragraph_view< Scheduler > > & get (void)
 
factory_task< Factory, view_manager< coarsener_type< Factory >::type, Views... >::result_type, Scheduler::entry_type, paragraph_impl::paragraph_view< Scheduler > > const & get (void) const
 
bool has_only_local_tasks (void) const override
 Return true if PARAGRAPH scheduler has signalled that all tasks are locally executed.
 
bool is_persistent (void) const final
 Indicate if the task_graph is persistent.
 
template<typename WF , typename ExplicitPreds , typename ... Args>
std::enable_if<!is_factory< WF >::value, void >::type add_task (std::size_t tid, WF const &wf, sched_info_type const &si, ExplicitPreds const &pred_list, std::size_t num_succs, loc_qual qualifier, Args const &... args)
 Construct non-factory tasks of the PARAGRAPH. More...
 
template<typename Factory , typename ExplicitPreds , typename ... Args>
std::enable_if< is_factory< Factory >::value, void >::type add_task (std::size_t tid, Factory const &f, sched_info_type const &si, ExplicitPreds const &pred_list, std::size_t num_succs, loc_qual qualifier, Args const &... args)
 Construct a nested PARAGRAPH task. More...
 
template<typename T , typename PortFilter , typename ValueFilter , typename LocationMapper >
void child_setup_flow (size_t producer, rmi_handle::reference consumer_handle, location_type consumer_location, PortFilter port_filter, ValueFilter value_filter, LocationMapper location_mapper)
 Forward dataflow setup request from child PARAGRAPH to the nested PARAGRAPH directory data member. More...
 
template<typename T , typename PortFilter , typename ValueFilter , typename LocationMapper >
void request_out_flow (rmi_handle::reference consumer, location_type parent_location, PortFilter port_filter, ValueFilter value_filter, LocationMapper location_mapper)
 Forward sibling PARAGRAPH dataflow request to result_container (the output port of this PARAGRAPH).
 
template<typename Mapper >
void request_parent_out_flow (Mapper mapper)
 Forward parent PARAGRAPH output port dataflow request to result_container (the output port of this PARAGRAPH).
 
template<typename T >
void child_add_producer (rmi_handle::reference child, size_t index)
 Forward dataflow initialization from a given index of a producer PARAGRAPH output port to the input port on this PARAGRAPH with the specified handle.
 
template<typename T >
void child_set_element (rmi_handle::reference child, size_t index, T const &val)
 Forward dataflow from a given index of a producer PARAGRAPH output port to the input port on this PARAGRAPH with the specified handle.
 
bool called_before (void) const
 Returns true if the given PARAGRAPH has been called at least once before (i.e., this is a reinvocation).
 
trivial_p_object const & succs_p_object (void) const
 Return successor task p_object used in gang switcher.
 
trivial_p_object const & no_succs_p_object (void) const
 Return no successor task p_object used in gang switcher.
 
bool has_successors (void) const
 
std::size_t num_successors (void) const
 
rmi_handle::reference const & parent_handle (void) const
 
location_type parent_location (void) const
 
bool parent_notify_all_locations (void) const
 
size_t task_id (void) const
 
edge_containeredges (void)
 
nested_pg_directorynested_pgs (void)
 
nested_pg_directory const & nested_pgs (void) const
 
void try_os_delete (void)
 Called by task wrapper of one-sided, persistent paragraphs to signal time for deletion. More...
 
bool migration_enabled () const
 Indicate if the task_graph was instantiated with task migration support enabled.
 
executor_baseexecutor_ptr (void) const
 Return a pointer to the executor responsible for processing this instance. More...
 
executor_baseexecutor (void) const
 Return the executor responsible for processing this instance.
 
void set_executor (executor_base *exec_base_ptr)
 Receive the pointer to the executor from the PARAGRAPH function operator.
 
void set_result (task_id_t task_id)
 Allows the factory to specify which task produces the PARAGRAPH result on this location, which can be used to customize termination detection.
 
template<typename Mapper >
void set_result_pg (task_id_t task_id, Mapper mapper)
 Specify that a child PARAGRAPH with the given task id will connect to some of the ports of this parent PARAGRAPH as defined by the passed mapper.
 
template<typename Result , typename Notifier >
void request_notify (size_t tid, Notifier const &notifier)
 Receive the request from a task to receive notification when a task has been processed. More...
 
void notify_termination ()
 Method invoked by a notifier when the PARAGRAPH has terminated.
 
template<typename SchedulerEntry , typename WF , typename ViewSet , std::size_t ... Indices>
void add_migrated_task (std::size_t tid, size_t unknown_consumer_cnt, typename SchedulerEntry::sched_info_type const &sched_info, WF const &wf, ViewSet const &, index_sequence< Indices... > const &)
 Receive a task being migrated from another location. More...
 
void count_local_task (size_t cnt=1)
 Increment the count of tasks placed on this location.
 
void count_task (size_t cnt=1)
 Increment the count of tasks specified on this location. More...
 
void processed_local (void)
 
void processed_remote_void (task_id_t tid, bool b_has_succs)
 Receive notification from a task that it has executed. Method is called by task_base::processed when the task has a void return value and possibly intra-PARAGRAPH successors.
 
template<typename ReturnValue >
void processed_remote (task_id_t tid, bool has_succs, ReturnValue &&val)
 Receive notification from a task that it has executed. More...
 
void result_processed ()
 Invoked by the result notifier.
 
void set_num_succs (std::size_t task_id, std::size_t num_succs) const
 Set the number of successors that will require notification of a tasks execution. More...
 
template<typename SchedulerEntry , typename WF , typename ViewWrapper , std::size_t ... Indices>
void migrate_task (Task< SchedulerEntry, std::true_type, std::false_type, WF, ViewWrapper > *task, std::size_t dest, index_sequence< Indices... > const &)
 Migrate a task to another location. More...
 
template<typename T >
void setup_promise_flow (std::size_t task_id, promise< typename df_stored_type< T >::type > pr)
 
int hold_termination (void) const
 Detects whether participation in global quiescence should be initiated, based on whether there are local conditions that would certainly cause it to fail (eg, all tasks in the local queue have not been retired). More...
 
std::pair< int, bool > termination_value (void) const
 Return the termination value of the PARAGRAPH on this location. More...
 
bool query_factory (void)
 Call back to the factory to allow for incremental construction of the task graph. More...
 
bool local_empty (void) const
 
bool is_blocking (void) const
 
runtime::location_md const & get_location_md (void) const noexcept
 Returns the location metadata of the location this object registered in.
 
runtime::location_mdget_location_md (void) noexcept
 Returns the location metadata of the location this object registered in. noexcept More...
 
void reset (void)
 
result_type apply (task_graph &tg, bool one_sided)
 Setup the result_view and underlying result_container storage for the PARAGRAPH, and register the appropriate callback with PARAGRAPH.
 
void set_result_impl (std::size_t, task_graph::task_id_t task_id, task_graph &tg)
 Signature for non-void return types. Redirect to the edge_container. More...
 
os_td_wait_tset_os_result_notifier (task_graph &tg, result_type &)
 If the return type of the paragraph is non-void, initializes an instance of one_sided_wait_td_notifier to tie parent paragraph notification to both this paragraph's dataflow and termination detection. More...
 
result_type & finalize_result (result_type &res)
 For the primary class template, this method is an identity op. More...
 
Distributed Object Management
rmi_handle::const_reference const & get_rmi_handle (void) const noexcept
 Returns the associated rmi_handle.
 
rmi_handle::reference const & get_rmi_handle (void) noexcept
 Returns the associated rmi_handle.
 
size_type get_location_id (void) const noexcept
 Returns the location id of the local sub-object.
 
size_type get_num_locations (void) const noexcept
 Returns the number of locations of the gang of this p_object.
 
void advance_epoch (void)
 Advances the epoch of the object. More...
 
void unlock (void)
 Used by lock_guard functionality in method of derived classes to request atomicity with respect to incoming RMIs. More...
 
void lock (void)
 Used by lock_guard functionality in method of derived classes to request atomicity with respect to incoming RMIs. More...
 
bool try_lock (void)
 Attempt to maintain atomicity with respect to incoming RMIs. More...
 

Public Types

using result_type = typename result_manager_t::result_type
 
using sched_info_type = typename Scheduler::sched_info_type
 
using sched_entry_type = typename Scheduler::entry_type
 
using scheduler_type = Scheduler
 
using task_type = task_base_intermediate< sched_entry_type >
 
using persistent_t = std::integral_constant< bool, has_enable_persistence< Scheduler >::value >
 
using migration_t = typename has_enable_migration< sched_info_type >::type
 
using task_id_t = std::size_t
 
typedef void stapl_is_paragraph_
 
using size_type = rmi_handle::size_type
 
using edge_type = wf_invoke< Factory, view_manager< coarsener_type< Factory >::type, Views... >::result_type >::result_type
 
using tmp_result_type = result_type
 
using stored_value_t = typename df_stored_type< edge_type >::type
 
using notifier_t = boost::function< void(std::size_t, stored_value_t const &)>
 
using os_td_wait_t = one_sided_wait_td_notifier< edge_type >
 

Public Attributes

edge_containerm_edge_ct_ptr
 
notifier_t m_result_notifier
 The notifier this PARAGRAPH invokes when the task marked as the result task for this location finishes execution.
 
edge_info_holder< edge_type > m_out_edge_info
 Holds information about internal edge that is serving outgoing paragraph edge so that zero copy /move can be attempted upon exit.
 

Protected Member Functions

persister_t & persister (void)
 
persister_t const & persister (void) const
 
Scheduler & passed_scheduler (void)
 
Scheduler & current_scheduler (void)
 
bool finished (void) const
 Return whether the PARAGRAPH has terminated or not.
 
void reset (void)
 Clear all counters and booleans modified by execution of the PARAGRAPH to allow it to be reinvoked.
 

Protected Attributes

bool m_b_no_tasks_escaped
 
executor_basem_exec_ptr
 The executor for this PARAGRAPH.
 
bool m_b_blocking
 Indicate if the PARAGRAPH is blocking.
 
unsigned int m_execs_started
 The number of invocations of this paragraph that have been started.
 
unsigned int m_execs_terminated
 The number of invocations of this paragraph that have been finished.
 

Detailed Description

template<typename Scheduler, typename Factory, typename... Views>
class stapl::paragraph_impl::paragraph< Scheduler, Factory, Views >

The PARAGRAPH is the dependence graph representation of programs in STAPL. It's generally not advised for users to instantiate it directly, but rather use stapl::make_paragraph.

Template Parameters
SchedulerThe scheduler this PARAGRAPH passes to the executor that is responsible for ordering runnable tasks for execution. It may also request migration of runnable tasks, to support policies such as dynamic, cross location task load balancing.
FactoryThe task factory for this PARAGRAPH which is responsible for populating the PARAGRAPH with tasks and edges. One instance of the factory will be inserted into the executor on each location of the PARAGRAPH during the first invocation (subsequent calls on a persistent PARAGRAPH avoid this operation).
...A list of views that the PARAGRAPH should provide to the factory when it is invoked. The factory may provide a data coarsening method to be applied prior to factory invocation.

Most of the implementation is located in untyped (or less typed) base classes to avoid code bloat. This derived class exists mainly to hold data members needing the full PARAGRAPH type (i.e., views, factory, and scheduler) and to implement several virtual functions providing an interface to these members. The primary public operator is the function operator (to those creating a PARAGRAPH, it appears as function object). It also has interfaces for result specification by the factory.

Constructor & Destructor Documentation

◆ paragraph() [1/3]

template<typename Scheduler , typename Factory , typename... Views>
stapl::paragraph_impl::paragraph< Scheduler, Factory, Views >::paragraph ( paragraph< Scheduler, Factory, Views > const &  other)

◆ paragraph() [2/3]

template<typename Scheduler , typename Factory , typename... Views>
stapl::paragraph_impl::paragraph< Scheduler, Factory, Views >::paragraph ( Factory  factory,
Views const &...  views,
Scheduler  scheduler = Scheduler(),
const bool  enable_migration = false,
rmi_handle::reference  parent_handle_ref = rmi_handle::reference(),
location_type  parent_location = invalid_location_id,
bool  b_parent_notify_all_locations = false,
size_t  task_id = 0,
std::size_t  num_succs = 0 
)

Constructor called to initialize a new PARAGRAPH collectively.

Parameters
factoryThe factory for this PARAGRAPH.
schedulerThe scheduler to use with this PARAGRAPH.
enable_migrationBoolean denoting whether migration support should be enabled in this PARAGRAPH instantiation.
parent_handle_refHandle to the parent paragraph of this paragraph.
parent_locationThe location in the parent paragraph responsible for metadata about this paragraph.
b_parent_notify_all_locationsFlags whether this paragraph should flag all colocated locations in the parent when it finishes.
task_idThe task identifier in the parent paragraph for this paragraph.
b_has_succsBoolean denoting whether paragraph has intra-paragraph successors within the parent paragraph.
...Variadic list of views to pass to factory invocation.

◆ paragraph() [3/3]

template<typename Scheduler , typename Factory , typename... Views>
template<typename ... PackagedViews>
stapl::paragraph_impl::paragraph< Scheduler, Factory, Views >::paragraph ( nested_tag const &  ignored,
Factory  factory,
Scheduler const &  scheduler,
const bool  enable_migration,
rmi_handle::reference  parent_handle_ref,
location_type  parent_location,
bool  b_parent_notify_all_locations,
size_t  task_id,
std::size_t  num_succs,
PackagedViews &&...  packaged_views 
)

Constructor for one-sided initialization of a new PARAGRAPH.

Parameters
ignoredTag dispatch to select this constructor in one-sided spawning process.
factoryThe factory for this PARAGRAPH. from skeleton parameter, as the former is not serializable.
schedulerThe scheduler to use with this PARAGRAPH.
enable_migrationBoolean denoting whether migration support should be enabled in this PARAGRAPH instantiation.
parent_handle_refHandle to the parent paragraph of this paragraph.
parent_locationThe location in the parent paragraph responsible for metadata about this paragraph.
b_parent_notify_all_locationsFlags whether this paragraph should flag all colocated locations in the parent when it finishes.
task_idThe task identifier in the parent paragraph for this paragraph.
b_has_succsBoolean denoting whether paragraph has intra-paragraph successors within the parent paragraph.
packaged_viewsSet of packaged views which are unpackaged, coarsened, and then passed to factory invocation.

Member Function Documentation

◆ operator()()

template<typename Scheduler , typename Factory , typename... Views>
result_type stapl::paragraph_impl::paragraph< Scheduler, Factory, Views >::operator() ( int  unused,
bool  blocking = false,
bool  force_evaluation = false,
bool  one_sided = false 
)

Method that starts population and execution of a PARAGRAPH.

Parameters
unusedUnused parameter that provides unique signature to function that enables non-blocking behavior by default.
blockingTrue if blocking behavior of PARAGRAPH (i.e., heap allocate structures, etc) should be enabled.
force_evaluationWhen in non-blocking mode, still enforce that the the function operator doesn't return until termination detection succeeds and the value is available.
force_evaluationWhen in non-blocking mode, still enforce that the the function operator doesn't return until termination detection succeeds and the value is available.
one_sidedWhen true, this paragraph was created via a one-sided, nested parallelism invocation. Enforce non-blocking semantics, and make sure the terminator was initialized in the paragraph constructor.
Returns
Type is defined by result_manager, but in general is a proxy over the value returned by the PARAGRAPH on this location (defined by factory via call to paragraph_view::set_result).

◆ add_task() [1/2]

template<typename Scheduler >
template<typename WF , typename ExplicitPreds , typename ... Args>
std::enable_if<!is_factory< WF >::value, void >::type stapl::paragraph_impl::task_graph_impl< Scheduler >::add_task ( std::size_t  tid,
WF const &  wf,
sched_info_type const &  si,
ExplicitPreds const &  pred_list,
std::size_t  num_succs,
loc_qual  qualifier,
Args const &...  args 
)
inherited

Construct non-factory tasks of the PARAGRAPH.

Parameters
tidTask id.
wfThe new task's workfunction.
siInformation to determine relative priority of task.
pred_listList of tasks from which the task requires signals, but not results.
num_succsNumber of tasks that will depend on this task.
qualifierIndicates whether the task placement algorithm needs to be run on this location.
argsSpecification of the view elements passed to the task invocation.

◆ add_task() [2/2]

template<typename Scheduler >
template<typename Factory , typename ExplicitPreds , typename ... Args>
std::enable_if< is_factory< Factory >::value, void >::type stapl::paragraph_impl::task_graph_impl< Scheduler >::add_task ( std::size_t  tid,
Factory const &  f,
sched_info_type const &  si,
ExplicitPreds const &  pred_list,
std::size_t  num_succs,
loc_qual  qualifier,
Args const &...  args 
)
inherited

Construct a nested PARAGRAPH task.

Parameters
tidTask id.
fThe new PARAGRAPH's factory workfunction.
siInformation to determine relative priority of task.
pred_listList of tasks from which the task requires signals, but not results.
num_succsNumber of tasks that will depend on this task.
qualifierIndicates whether the task placement algorithm needs to be run on this location. Not used for this signature.
argsSpecification of the view elements passed to the task invocation.

◆ child_setup_flow()

template<typename T , typename PortFilter , typename ValueFilter , typename LocationMapper >
void stapl::paragraph_impl::task_graph::child_setup_flow ( size_t  producer,
rmi_handle::reference  consumer_handle,
location_type  consumer_location,
PortFilter  port_filter,
ValueFilter  value_filter,
LocationMapper  location_mapper 
)
inherited

Forward dataflow setup request from child PARAGRAPH to the nested PARAGRAPH directory data member.

Template Parameters
TThe type of elements stored in the target producer's output port.
Parameters
producerTask identifier of the producer PARAGRAPH in its enclosing / parent PARAGRAPH.
consumer_handleRMI handle to the consuming PARAGRAPH.
consumer_locationlocation in the consuming PARAGRAPH initiating the point to point consumption request.
port_filterUsed to select which pins of the producer port are forwarded to this consumer.
value_filterApplied to each flowed pin's value, prior to dataflow to the consumer.
location_mappermaps producer pin to location in this consumer where it should be flowed.

◆ try_os_delete()

void stapl::paragraph_impl::task_graph::try_os_delete ( void  )
inherited

Called by task wrapper of one-sided, persistent paragraphs to signal time for deletion.

◆ executor_ptr()

executor_base* stapl::paragraph_impl::task_graph::executor_ptr ( void  ) const
inherited

Return a pointer to the executor responsible for processing this instance.

Use pointer to allow cases where inter-paragraph input ports receive dataflow prior to initialization of executor (they won't use it, as no intra-paragraph consumers could have been initialized as the factory hasn't been called yet).

◆ request_notify()

template<typename Result , typename Notifier >
void stapl::paragraph_impl::task_graph::request_notify ( size_t  tid,
Notifier const &  notifier 
)
inherited

Receive the request from a task to receive notification when a task has been processed.

Parameters
tidId of the task whose completion will trigger the notifier.
notifierThe notifier to invoke.

◆ add_migrated_task()

template<typename SchedulerEntry , typename WF , typename ViewSet , std::size_t ... Indices>
void stapl::paragraph_impl::task_graph::add_migrated_task ( std::size_t  tid,
size_t  unknown_consumer_cnt,
typename SchedulerEntry::sched_info_type const &  sched_info,
WF const &  wf,
ViewSet const &  vs,
index_sequence< Indices... > const &   
)
inherited

Receive a task being migrated from another location.

Parameters
tidId of the task
unknown_consumer_cntNumber of successors that have not yet requested notification of the task's completion or result.
sched_infoInformation used to determine relative priority of task.
wfwork function the task will invoke.
viewsThe packed view of the migrated task.

◆ count_task()

void stapl::paragraph_impl::task_graph::count_task ( size_t  cnt = 1)
inherited

Increment the count of tasks specified on this location.

Called in paragraph_view::add_task() methods, which is entry point for both factories and dynamic_wfs

◆ processed_remote()

template<typename ReturnValue >
void stapl::paragraph_impl::task_graph::processed_remote ( task_id_t  tid,
bool  has_succs,
ReturnValue &&  val 
)
inherited

Receive notification from a task that it has executed.

Called by Task objects with non-void return type. The produced value is passed so that edge_container can forward it to consumers.

◆ set_num_succs()

void stapl::paragraph_impl::task_graph::set_num_succs ( std::size_t  task_id,
std::size_t  num_succs 
) const
inherited

Set the number of successors that will require notification of a tasks execution.

This method is used by dynamic skeletons where the number of successors of a task isn't known when the task is created (e.g., while loop skeleton).

◆ migrate_task()

template<typename SchedulerEntry , typename WF , typename ViewWrapper , std::size_t ... Indices>
void stapl::paragraph_impl::task_graph::migrate_task ( Task< SchedulerEntry, std::true_type, std::false_type, WF, ViewWrapper > *  task,
std::size_t  dest,
index_sequence< Indices... > const &   
)
inherited

Migrate a task to another location.

Parameters
taskTask to be migrated
destLocation to which task is to be migrated.
sched_infoScheduling information of the task.

Called by a task to migrate itself to another location as part of the process of work stealing.

◆ hold_termination()

int stapl::paragraph_impl::task_graph::hold_termination ( void  ) const
inherited

Detects whether participation in global quiescence should be initiated, based on whether there are local conditions that would certainly cause it to fail (eg, all tasks in the local queue have not been retired).

Used to guard initialization of TD in pulse_terminator and as part of termination value in termination_value.

◆ termination_value()

std::pair<int, bool> stapl::paragraph_impl::task_graph::termination_value ( void  ) const
inherited

Return the termination value of the PARAGRAPH on this location.

Returns
non-zero if there are outstanding tasks.

Called by termination_detection.

◆ query_factory()

bool stapl::paragraph_impl::task_graph::query_factory ( void  )
inherited

Call back to the factory to allow for incremental construction of the task graph.

This method allows reinvocation of the factory without the task graph being aware of WF and View types.

Invoked by executor when the scheduler on this location has no runnable tasks. If the factory is finished no new tasks are added.

Returns
true if the factory needs to be queried again, otherwise false.

◆ local_empty()

bool stapl::paragraph_impl::task_graph::local_empty ( void  ) const
inherited

◆ get_location_md()

runtime::location_md& stapl::p_object::get_location_md ( void  )
noexceptinherited

Returns the location metadata of the location this object registered in. noexcept

noexcept

◆ advance_epoch()

void stapl::p_object::advance_epoch ( void  )
inherited

Advances the epoch of the object.

Advancing the epoch will flush any pending RMIs. It will also increase the epoch of the current gang if the object is not a named object.

◆ unlock()

void stapl::p_object::unlock ( void  )
inherited

Used by lock_guard functionality in method of derived classes to request atomicity with respect to incoming RMIs.

Mutates counter in the associated runqueue.

◆ lock()

void stapl::p_object::lock ( void  )
inherited

Used by lock_guard functionality in method of derived classes to request atomicity with respect to incoming RMIs.

Mutates counter in the associated runqueue.

◆ try_lock()

bool stapl::p_object::try_lock ( void  )
inherited

Attempt to maintain atomicity with respect to incoming RMIs.

Mutates counter in the associated runqueue.

Returns
true if the lock was able to be acquired. false if it is already locked.

◆ set_result_impl()

void stapl::detail::result_manager< wf_invoke< Factory, view_manager< coarsener_type< Factory >::type, Views... >::result_type >::result_type , b_has_span >::set_result_impl ( std::size_t  ,
task_graph::task_id_t  task_id,
task_graph tg 
)
inherited

Signature for non-void return types. Redirect to the edge_container.

◆ set_os_result_notifier()

os_td_wait_t* stapl::detail::result_manager< wf_invoke< Factory, view_manager< coarsener_type< Factory >::type, Views... >::result_type >::result_type , b_has_span >::set_os_result_notifier ( task_graph tg,
result_type &   
)
inherited

If the return type of the paragraph is non-void, initializes an instance of one_sided_wait_td_notifier to tie parent paragraph notification to both this paragraph's dataflow and termination detection.

◆ finalize_result()

result_type& stapl::detail::result_manager< wf_invoke< Factory, view_manager< coarsener_type< Factory >::type, Views... >::result_type >::result_type , b_has_span >::finalize_result ( result_type &  res)
inherited

For the primary class template, this method is an identity op.

Parameters
resThe PARAGRAPH result from this location.

Member Data Documentation

◆ m_edge_ct_ptr

edge_container* stapl::paragraph_impl::task_graph::m_edge_ct_ptr
inherited

Edge container storing the results of tasks.


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