3 #include "cuda_graph.hpp" 13 constexpr
bool is_cudaflow_task_v = is_invocable_r_v<void, C, cudaFlow&>;
50 template <
typename... Ts>
62 template <
typename... Ts>
93 cudaNode* _node {
nullptr};
100 template <
typename T,
typename... Ts>
101 void _precede(T&&, Ts&&...);
104 template <
typename T>
108 template <
typename T,
typename... Ts>
109 void _succeed(T&&, Ts&&...);
117 template <
typename... Ts>
119 _precede(std::forward<Ts>(tasks)...);
125 template <
typename T>
126 void cudaTask::_precede(T&& other) {
127 _node->_precede(other._node);
132 template <
typename T,
typename... Ts>
133 void cudaTask::_precede(T&& task, Ts&&... others) {
134 _precede(std::forward<T>(task));
135 _precede(std::forward<Ts>(others)...);
139 template <
typename... Ts>
141 _succeed(std::forward<Ts>(tasks)...);
147 template <
typename T>
148 void cudaTask::_succeed(T&& other) {
149 other._node->_precede(_node);
154 template <
typename T,
typename... Ts>
155 void cudaTask::_succeed(T&& task, Ts&&... others) {
156 _succeed(std::forward<T>(task));
157 _succeed(std::forward<Ts>(others)...);
162 return _node ==
nullptr;
178 return _node->_successors.size();
cudaTask & precede(Ts &&... tasks)
adds precedence links from this to other tasks
Definition: cuda_task.hpp:118
cudaTask & succeed(Ts &&... tasks)
adds precedence links from other tasks to this
Definition: cuda_task.hpp:140
Building methods of a cuda task dependency graph.
Definition: cuda_flow_builder.hpp:12
bool empty() const
queries if the task is associated with a cudaNode
Definition: cuda_task.hpp:161
handle to a node in a cudaGraph
Definition: cuda_task.hpp:20
cudaTask()=default
constructs an empty cudaTask
size_t num_successors() const
queries the number of successors
Definition: cuda_task.hpp:177
cudaTask & operator=(const cudaTask &)=default
copy-assigns a cudaTask
const std::string & name() const
queries the name of the task
Definition: cuda_task.hpp:172