cuda::experimental::stf::task_dep_vector

Defined in include/cuda/experimental/__stf/internal/task_dep.cuh

template<typename ...Data>
class task_dep_vector : public task_dep_vector_untyped

Typed dependencies - carries dependency objects along with their types.

If types are not needed, this type can be converted implicitly to task_dep_vector_untyped.

Template Parameters

Data – Types of the objects the task depends on

Public Types

template<size_t i>
using type_at = ::std::tuple_element_t<i, ::std::tuple<Data...>>

Get the type depended upon at position i.

Template Parameters

i – For example, typename task_dep_vector<int, double>::type_at<1> is double.

Public Functions

template<typename T>
inline task_dep_vector(task_dep<T> d)

Constructor (applies only for task_dep_vector<T>)

Template Parameters

T – Data type

Parameters

d – typed task dependency object

inline task_dep_vector(task_dep<Data>... deps)

Create given a number of task_dep instantiations.

Parameters

deps – typed dependency objects

template<size_t i>
inline task_dep<type_at<i>> &at()

Get the task_dep instantiation at position i.

Template Parameters

i – For example, typename task_dep_vector<int, double>::type_at<1> is an object type task_dep<double>.

inline ::std::tuple<Data...> instance(task &t)

Extracts physical data from this object to an ::std::tuple<Data...> object.

The physical data extracted is usable only after the dependencies have been satisfied.

Returns

::std::tuple<Data…>

Friends

friend class task_dep_vector