cuda.core.graph.HostCallbackNode#

class cuda.core.graph.HostCallbackNode#

A host callback node.

Properties#

callbackcallable or None

The Python callable (None for ctypes function pointer callbacks).

Methods

__init__()#
allocate(
self,
size_t size,
options=None,
) AllocNode#

Add a memory allocation node depending on this node.

Parameters:
  • size (int) – Number of bytes to allocate.

  • options (GraphAllocOptions, optional) – Allocation options. If None, allocates on the current device.

Returns:

A new AllocNode representing the allocation. Access the allocated device pointer via the dptr property.

Return type:

AllocNode

deallocate(self, int dptr: int) FreeNode#

Add a memory free node depending on this node.

Parameters:

dptr (int) – Device pointer to free (typically from AllocNode.dptr).

Returns:

A new FreeNode representing the free operation.

Return type:

FreeNode

destroy(self)#

Destroy this node and remove all its edges from the parent graph.

After this call, is_valid returns False and the node cannot be re-added to any graph. Safe to call on an already-destroyed node (no-op).

embed(
self,
GraphDefinition child: GraphDefinition,
) ChildGraphNode#

Add a child graph node depending on this node.

Embeds a clone of the given graph definition as a sub-graph node. The child graph must not contain allocation, free, or conditional nodes.

Parameters:

child (GraphDefinition) – The graph definition to embed (will be cloned).

Returns:

A new ChildGraphNode representing the embedded sub-graph.

Return type:

ChildGraphNode

if_else(
self,
GraphCondition condition: GraphCondition,
) IfElseNode#

Add an if-else conditional node depending on this node.

Two body graphs: the first executes when the condition is non-zero, the second when it is zero.

Parameters:

condition (GraphCondition) – GraphCondition from GraphDefinition.create_condition().

Returns:

A new IfElseNode with branches accessible via .then and .else_.

Return type:

IfElseNode

if_then(
self,
GraphCondition condition: GraphCondition,
) IfNode#

Add an if-conditional node depending on this node.

The body graph executes only when the condition evaluates to a non-zero value at runtime.

Parameters:

condition (GraphCondition) – GraphCondition from GraphDefinition.create_condition().

Returns:

A new IfNode with one branch accessible via .then.

Return type:

IfNode

join(self, *nodes: GraphNode) EmptyNode#

Create an empty node that depends on this node and all given nodes.

This is used to synchronize multiple branches of execution.

Parameters:

*nodes (GraphNode) – Additional nodes to depend on.

Returns:

A new EmptyNode that depends on all input nodes.

Return type:

EmptyNode

launch(
self,
LaunchConfig config: LaunchConfig,
Kernel kernel: Kernel,
*args,
) KernelNode#

Add a kernel launch node depending on this node.

Parameters:
  • config (LaunchConfig) – Launch configuration (grid, block, shared memory, etc.)

  • kernel (Kernel) – The kernel to launch.

  • *args – Kernel arguments.

Returns:

A new KernelNode representing the kernel launch.

Return type:

KernelNode

memcpy(
self,
int dst: int,
int src: int,
size_t size,
) MemcpyNode#

Add a memcpy node depending on this node.

Copies size bytes from src to dst. Memory types are auto-detected via the driver, so both device and pinned host pointers are supported.

Parameters:
  • dst (int) – Destination pointer (device or pinned host).

  • src (int) – Source pointer (device or pinned host).

  • size (int) – Number of bytes to copy.

Returns:

A new MemcpyNode representing the copy operation.

Return type:

MemcpyNode

memset(
self,
int dst: int,
value,
size_t width,
size_t height=1,
size_t pitch=0,
) MemsetNode#

Add a memset node depending on this node.

Parameters:
  • dst (int) – Destination device pointer.

  • value (int or buffer-protocol object) – Fill value. int for 1-byte fill (range [0, 256)), or buffer-protocol object of 1, 2, or 4 bytes.

  • width (int) – Width of the row in elements.

  • height (int, optional) – Number of rows (default 1).

  • pitch (int, optional) – Pitch of destination in bytes (default 0, unused if height is 1).

Returns:

A new MemsetNode representing the memset operation.

Return type:

MemsetNode

record(self, Event event: Event) EventRecordNode#

Add an event record node depending on this node.

Parameters:

event (Event) – The event to record.

Returns:

A new EventRecordNode representing the event record operation.

Return type:

EventRecordNode

switch(
self,
GraphCondition condition: GraphCondition,
unsigned int count,
) SwitchNode#

Add a switch conditional node depending on this node.

The condition value selects which branch to execute. If the value is out of range, no branch executes.

Parameters:
Returns:

A new SwitchNode with branches accessible via .branches.

Return type:

SwitchNode

wait(self, Event event: Event) EventWaitNode#

Add an event wait node depending on this node.

Parameters:

event (Event) – The event to wait for.

Returns:

A new EventWaitNode representing the event wait operation.

Return type:

EventWaitNode

while_loop(
self,
GraphCondition condition: GraphCondition,
) WhileNode#

Add a while-loop conditional node depending on this node.

The body graph executes repeatedly while the condition evaluates to a non-zero value.

Parameters:

condition (GraphCondition) – GraphCondition from GraphDefinition.create_condition().

Returns:

A new WhileNode with body accessible via .body.

Return type:

WhileNode

Attributes

callback#

The Python callable, or None for ctypes function pointer callbacks.

graph#

‘GraphDefinition’

Return the GraphDefinition this node belongs to.

Type:

GraphNode.graph

handle#

driver.CUgraphNode

Return the underlying driver CUgraphNode handle.

Returns None for the entry node.

Type:

GraphNode.handle

is_valid#

Whether this node is valid (not destroyed).

Returns False after destroy() has been called.

pred#

A mutable set-like view of this node’s predecessors.

succ#

A mutable set-like view of this node’s successors.

type#

Return the CUDA graph node type.

Returns:

The node type enum value, or None for the entry node.

Return type:

CUgraphNodeType or None