3 #include "cuda_graph.hpp" 42 template <
typename... Ts>
54 template <
typename... Ts>
85 cudaNode* _node {
nullptr};
92 template <
typename T,
typename... Ts>
93 void _precede(T&&, Ts&&...);
100 template <
typename T,
typename... Ts>
101 void _succeed(T&&, Ts&&...);
109 template <
typename... Ts>
111 _precede(std::forward<Ts>(tasks)...);
117 template <
typename T>
118 void cudaTask::_precede(T&& other) {
119 _node->_precede(other._node);
124 template <
typename T,
typename... Ts>
125 void cudaTask::_precede(T&& task, Ts&&... others) {
126 _precede(std::forward<T>(task));
127 _precede(std::forward<Ts>(others)...);
131 template <
typename... Ts>
133 _succeed(std::forward<Ts>(tasks)...);
139 template <
typename T>
140 void cudaTask::_succeed(T&& other) {
141 other._node->_precede(_node);
146 template <
typename T,
typename... Ts>
147 void cudaTask::_succeed(T&& task, Ts&&... others) {
148 _succeed(std::forward<T>(task));
149 _succeed(std::forward<Ts>(others)...);
154 return _node ==
nullptr;
170 return _node->_successors.size();
cudaTask & precede(Ts &&... tasks)
adds precedence links from this to other tasks
Definition: cuda_task.hpp:110
cudaTask & succeed(Ts &&... tasks)
adds precedence links from other tasks to this
Definition: cuda_task.hpp:132
methods for building a CUDA task dependency graph.
Definition: cuda_flow.hpp:26
bool empty() const
queries if the task is associated with a cudaNode
Definition: cuda_task.hpp:153
handle to a node in a cudaGraph
Definition: cuda_task.hpp:12
cudaTask()=default
constructs an empty cudaTask
size_t num_successors() const
queries the number of successors
Definition: cuda_task.hpp:169
cudaTask & operator=(const cudaTask &)=default
copy-assigns a cudaTask
const std::string & name() const
queries the name of the task
Definition: cuda_task.hpp:164