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_task
andstream_task<>
is made depending on the nature of the task’s dependencies.Most of the time a
stream_task
object 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_dep
objects 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_dep
objects 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*this
is passed asfun
’s first argument. Otherwise,this->get_stream()
is passed asfun
’s first argument. In either case, the first argument is followed byslice
objects that the task depends on. The framework automatically binds dependencies to slices andfun
may invoke a kernel passing it the slices.- Template Parameters:
Fun – Type of lambda
- Parameters:
fun – Lambda function