ttg 1.0.0
Template Task Graph (TTG): flowgraph-based programming model for high-performance distributed-memory algorithms
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid > Struct Template Reference

#include <task.h>

Inheritance diagram for ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >:
[legend]
Collaboration diagram for ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >:
[legend]

Public Types

using key_type = typename TT::key_type
 
- Public Types inherited from ttg_parsec::detail::parsec_ttg_task_base_t
typedef void() release_task_fn(parsec_ttg_task_base_t *)
 

Public Member Functions

 parsec_ttg_task_t (parsec_thread_mempool_t *mempool, parsec_task_class_t *task_class, TT *tt_ptr)
 
 parsec_ttg_task_t (const key_type &key, parsec_thread_mempool_t *mempool, parsec_task_class_t *task_class, parsec_taskpool_t *taskpool, TT *tt_ptr, int32_t priority)
 
void destroy ()
 
template<ttg::ExecutionSpace Space>
parsec_hook_return_t invoke_op ()
 
template<ttg::ExecutionSpace Space>
parsec_hook_return_t invoke_evaluate ()
 
parsec_key_t pkey ()
 
- Public Member Functions inherited from ttg_parsec::detail::parsec_ttg_task_base_t
void release_task ()
 
void set_dummy (bool d)
 
bool is_dummy ()
 

Static Public Member Functions

static void release_task (parsec_ttg_task_base_t *task_base)
 

Public Attributes

TT * tt = nullptr
 
key_type key
 
std::array< stream_info_t, num_streams > streams
 
device_state_t< TT::derived_has_device_op()> dev_state
 
ttg_data_copy_t * copies [num_copies] = { nullptr }
 
- Public Attributes inherited from ttg_parsec::detail::parsec_ttg_task_base_t
parsec_task_t parsec_task
 
int32_t in_data_count = 0
 
int32_t data_count = 0
 
ttg_data_copy_t ** copies
 
parsec_hash_table_item_t tt_ht_item = {}
 
release_task_fn * release_task_cb = nullptr
 
device_ptr_t * dev_ptr = nullptr
 
bool remove_from_hash = true
 
bool dummy = false
 
bool defer_writer = TTG_PARSEC_DEFER_WRITER
 
ttg_parsec_data_flags data_flags
 

Static Public Attributes

static constexpr size_t num_streams = TT::numins
 
static constexpr size_t num_copies
 

Additional Inherited Members

- Protected Member Functions inherited from ttg_parsec::detail::parsec_ttg_task_base_t
template<std::size_t i = 0, typename TT >
void init_stream_info_impl (TT *tt, std::array< stream_info_t, TT::numins > &streams)
 
template<typename TT >
void init_stream_info (TT *tt, std::array< stream_info_t, TT::numins > &streams)
 
 parsec_ttg_task_base_t (parsec_thread_mempool_t *mempool, parsec_task_class_t *task_class, int data_count, ttg_data_copy_t **copies, bool defer_writer=TTG_PARSEC_DEFER_WRITER)
 
 parsec_ttg_task_base_t (parsec_thread_mempool_t *mempool, parsec_task_class_t *task_class, parsec_taskpool_t *taskpool, int32_t priority, int data_count, ttg_data_copy_t **copies, release_task_fn *release_fn, bool defer_writer=TTG_PARSEC_DEFER_WRITER)
 

Detailed Description

template<typename TT, bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
struct ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >

Definition at line 221 of file task.h.

Member Typedef Documentation

◆ key_type

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
using ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::key_type = typename TT::key_type

Definition at line 222 of file task.h.

Constructor & Destructor Documentation

◆ parsec_ttg_task_t() [1/2]

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::parsec_ttg_task_t ( parsec_thread_mempool_t *  mempool,
parsec_task_class_t *  task_class,
TT *  tt_ptr 
)
inline

Definition at line 237 of file task.h.

Here is the call graph for this function:

◆ parsec_ttg_task_t() [2/2]

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::parsec_ttg_task_t ( const key_type &  key,
parsec_thread_mempool_t *  mempool,
parsec_task_class_t *  task_class,
parsec_taskpool_t *  taskpool,
TT *  tt_ptr,
int32_t  priority 
)
inline

Definition at line 247 of file task.h.

Here is the call graph for this function:

Member Function Documentation

◆ destroy()

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
void ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::destroy ( )
inline

Runs the destructor of the task. Tasks are placement-new'd into a PaRSEC mempool and never deleted, so this must be called before the task's memory is returned to the mempool. Running the full destructor (rather than destroying selected members) stays correct when members are added. The PaRSEC task header is trivially destructible, so the mempool can still read it afterwards.

Note
tasks still pending when the TT is destroyed are not destroyed: the mempool frees their memory as raw chunks, so their members leak.

Definition at line 275 of file task.h.

Here is the caller graph for this function:

◆ invoke_evaluate()

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
template<ttg::ExecutionSpace Space>
parsec_hook_return_t ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::invoke_evaluate ( )
inline

Definition at line 295 of file task.h.

Here is the call graph for this function:

◆ invoke_op()

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
template<ttg::ExecutionSpace Space>
parsec_hook_return_t ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::invoke_op ( )
inline

Definition at line 286 of file task.h.

Here is the call graph for this function:

◆ pkey()

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
parsec_key_t ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::pkey ( )
inline

Definition at line 303 of file task.h.

Here is the caller graph for this function:

◆ release_task()

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
static void ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::release_task ( parsec_ttg_task_base_t *  task_base)
inlinestatic

Definition at line 279 of file task.h.

Here is the call graph for this function:

Member Data Documentation

◆ copies

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
ttg_data_copy_t* ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::copies[num_copies] = { nullptr }

Definition at line 235 of file task.h.

◆ dev_state

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
device_state_t<TT::derived_has_device_op()> ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::dev_state

Definition at line 234 of file task.h.

◆ key

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
key_type ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::key

Definition at line 228 of file task.h.

◆ num_copies

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
constexpr size_t ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::num_copies
staticconstexpr
Initial value:
= TT::derived_has_device_op() ? static_cast<size_t>(MAX_PARAM_COUNT)
static constexpr bool derived_has_device_op()
Definition ttg.h:1262
static constexpr size_t num_streams
Definition task.h:223

Definition at line 225 of file task.h.

◆ num_streams

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
constexpr size_t ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::num_streams = TT::numins
staticconstexpr

Definition at line 223 of file task.h.

◆ streams

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
std::array<stream_info_t, num_streams> ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::streams

Definition at line 229 of file task.h.

◆ tt

template<typename TT , bool KeyIsVoid = ttg::meta::is_void_v<typename TT::key_type>>
TT* ttg_parsec::detail::parsec_ttg_task_t< TT, KeyIsVoid >::tt = nullptr

Definition at line 227 of file task.h.


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