muda
host_node.h
1 #pragma once
2 #include <muda/graph/graph_base.h>
3 
4 namespace muda
5 {
6 class HostNode : public GraphNode
7 {
8  public:
9  using this_type = HostNode;
10  friend class Graph;
11 };
12 
13 template <typename T>
14 class HostNodeParms : public NodeParms
15 {
16  cudaHostNodeParams m_parms;
17 
18  public:
19  T hostData;
20  using this_type = HostNodeParms;
21  friend class Graph;
22  friend class std::shared_ptr<this_type>;
23  friend class std::unique_ptr<this_type>;
24  friend class std::weak_ptr<this_type>;
25 
26  HostNodeParms(const T& f)
27  : hostData(f)
28  , m_parms({})
29  {
30  m_parms.userData = &hostData;
31  }
32  auto fn() const { return m_parms.fn; }
33  void fn(cudaHostFn_t fn) { m_parms.fn = fn; }
34  auto userdata() const { return m_parms.userData; }
35  void userdata(void* userdata) { m_parms.userData = userdata; }
36  const cudaHostNodeParams* handle() const { return &m_parms; }
37  cudaHostNodeParams* handle() { return &m_parms; }
38 };
39 } // namespace muda
Definition: host_node.h:6
Definition: graph_base.h:19
Definition: host_node.h:14
Definition: assert.h:13
Definition: graph_base.h:26
Definition: graph.h:17