cuda::experimental::graph_node_ref#
-
struct graph_node_ref#
A reference wrapper for a CUDA graph node.
This structure provides an interface to manage and interact with a CUDA graph node within a CUDA graph. It includes functionality for swapping, retrieving node information, and managing dependencies between nodes.
Public Functions
-
graph_node_ref() = default#
Default constructor.
-
graph_node_ref(int, int = 0) = delete#
Disallow construction from an
int, e.g.,0.
- graph_node_ref(
- ::cuda::std::nullptr_t,
- ::cuda::std::nullptr_t = nullptr,
Disallow construction from
nullptr.
- inline explicit constexpr graph_node_ref(
- cudaGraphNode_t __node,
- cudaGraph_t __graph,
Constructs a graph_node_ref with a given CUDA graph node and graph.
- Parameters:
__node – The CUDA graph node.
__graph – The CUDA graph containing the node.
- Pre:
Both of __node and __graph are non-null.
- Post:
get() == __node
-
inline explicit constexpr operator bool() const noexcept#
Checks if the graph node reference is valid.
This operator allows the graph node reference to be used in a boolean context to determine if it is valid. A valid graph node reference is one where the internal node pointer is not null.
- Returns:
trueif the internal node pointer is not null, otherwisefalse.
-
inline constexpr auto operator!() const noexcept -> bool#
Checks if the graph node reference is not null.
- Returns:
trueif the internal node pointer is null, otherwisefalse.
-
inline constexpr void swap(graph_node_ref &__other) noexcept#
Swaps the contents of this graph_node_ref with another.
- Parameters:
__other – The other graph_node_ref to swap with.
-
inline constexpr auto get() const noexcept -> cudaGraphNode_t#
Retrieves the underlying CUDA graph node.
- Returns:
The CUDA graph node.
- inline constexpr auto get_native_graph_handle(
Retrieves the CUDA graph this node belongs to.
- Returns:
The CUDA graph.
-
inline auto type() const -> graph_node_type#
Retrieves the type of the CUDA graph node.
- Throws:
If – the CUDA API call to retrieve the node type fails.
- Returns:
The type of the graph node as a graph_node_type.
- Pre:
The internal graph node handle is not null.
-
template<class ..._Nodes>
inline constexpr void depends_on( - const _Nodes&... __nodes,
Establishes dependencies between this node and other nodes.
This function sets up dependencies such that this node depends on the provided nodes.
- Template Parameters:
_Nodes – Variadic template parameter for the types of the dependent nodes.
- Parameters:
__nodes – The nodes that this node depends on.
- Throws:
If – the CUDA API call to add dependencies fails.
- Pre:
The internal graph node handle is not null.
-
template<size_t _Extent>
inline constexpr void depends_on( - ::cuda::std::span<cudaGraphNode_t, _Extent> __deps,
Establishes dependencies between this node and other nodes.
This function sets up dependencies such that this node depends on the provided nodes.
This function first initializes an array of “dependant” nodes, where all dependant nodes correspond to this node.
The function then uses the CUDA API
cudaGraphAddDependenciesto establish the dependencies between this node and the nodes provided in the__depsspan.If the number of dependencies is small, a stack-allocated buffer is used; otherwise, a dynamically allocated array is used to store the dependant nodes.
- Template Parameters:
_Node – The type of the node to be added.
_Extent – The extent of the span representing the dependencies.
- Parameters:
__deps – A span of
cudaGraphNode_trepresenting the dependencies of this node. Each node in the span will become a dependency of this node.- Throws:
cuda::std::cuda_error – If the CUDA API call
cudaGraphAddDependenciesfails.
Friends
- inline friend bool operator==(
- const graph_node_ref &__lhs,
- const graph_node_ref &__rhs,
Compares two
graph_node_refobjects for equality.- Parameters:
__lhs – The left-hand side
graph_node_refobject to compare.__rhs – The right-hand side
graph_node_refobject to compare.
- Returns:
trueif bothgraph_node_refobjects are equal,falseotherwise.
- inline friend bool operator!=(
- const graph_node_ref &__lhs,
- const graph_node_ref &__rhs,
Compares two
graph_node_refobjects for inequality.- Parameters:
__lhs – The left-hand side
graph_node_refobject to compare.__rhs – The right-hand side
graph_node_refobject to compare.
- Returns:
trueif bothgraph_node_refobjects are not equal,falseotherwise.
- inline friend bool operator==(
- ::cuda::std::nullptr_t,
- const graph_node_ref &__rhs,
Test whether a
graph_node_refobject is null.- Returns:
trueif__rhsis null,falseotherwise.
- inline friend bool operator==(
- const graph_node_ref &__lhs,
- ::cuda::std::nullptr_t,
Test whether a
graph_node_refobject is null.- Returns:
trueif__rhsis null,falseotherwise.
- inline friend bool operator!=(
- ::cuda::std::nullptr_t,
- const graph_node_ref &__rhs,
Test whether a
graph_node_refobject is not null.- Returns:
trueif__rhsis not null,falseotherwise.
- inline friend bool operator!=(
- const graph_node_ref &__lhs,
- ::cuda::std::nullptr_t,
Test whether a
graph_node_refobject is not null.- Returns:
trueif__lhsis not null,falseotherwise.
- inline friend void swap(
- graph_node_ref &__left,
- graph_node_ref &__right,
Swaps the contents of two graph_node_ref objects.
- Parameters:
__left – The first graph_node_ref.
__right – The second graph_node_ref.
-
graph_node_ref() = default#