cuda::experimental::stf::stream_task#
-
template<typename ...Data>
class stream_task# Task running on stream with fixed, typed dependencies.
This type models tasks that have known dependencies in arity and type. Dependencies are set statically at construction and must be statically-typed (i.e., must have type
task_dep<T>as opposed totask_dep_untyped). Therefore, the choice betweenstream_taskandstream_task<>is made depending on the nature of the task’s dependencies.Most of the time a
stream_taskobject is created for the sake of using its->*method that effects execution. The execution place can be set in the constructor and also dynamically. An invocation of->*takes place on the last set execution place.It is possible to copy or move this task into a
stream_task<>by implicit conversion. Subsequently, the obtained object can be used with dynamic dependencies.- Template Parameters:
Data – A list of data that this task depends on
Public Functions
- inline stream_task(
- backend_ctx_untyped ctx,
- exec_place e_place,
- task_dep<Data>... deps,
Construct with an execution place and dependencies.
- Parameters:
ctx – The backend context
e_place – Place where execution will be carried
deps – A list of
task_depobjects that this task depends on
-
inline stream_task(stream_ctx *ctx, task_dep<Data>... deps)#
Construct with given dependencies, will execute on the current device.
- Parameters:
ctx – The stream context
deps – A list of
task_depobjects that this task depends on
-
inline stream_task &set_symbol(::std::string s) &#
Set the symbol object.
- Parameters:
s –
- Returns:
-
inline stream_task &&set_symbol(::std::string s) &&#
-
template<typename Fun>
inline auto operator->*(Fun &&fun)# Run lambda function on the specified device, automatically passing it the dependencies.
If
fun’s first parameter has is declared as one ofstream_task<Data...>,stream_task<Data...>&,auto,auto&, orauto&&, then*thisis passed asfun’s first argument. Otherwise,this->get_stream()is passed asfun’s first argument. In either case, the first argument is followed bysliceobjects that the task depends on. The framework automatically binds dependencies to slices andfunmay invoke a kernel passing it the slices.- Template Parameters:
Fun – Type of lambda
- Parameters:
fun – Lambda function