pub struct CapturedCudaGraph { /* private fields */ }Expand description
Instantiated CUDA Graph with owned graph + exec handles.
Implementations§
Source§impl CapturedCudaGraph
impl CapturedCudaGraph
Sourcepub fn bind_resident_lifecycle(self, runtime: &XlogDeviceRuntime) -> Self
pub fn bind_resident_lifecycle(self, runtime: &XlogDeviceRuntime) -> Self
Tie resident lifecycle accounting to this real graph/exec owner.
Binding is idempotent. The lease is created only after graph
instantiation has succeeded and is dropped after this type’s Drop
implementation destroys the executable and parent graph handles.
Sourcepub fn conditional_while_on_stream<F>(
stream: &CudaStream,
initial_value: u32,
assign_default_on_launch: bool,
populate_body: F,
) -> Result<Self, CudaConditionalGraphUnavailable>
pub fn conditional_while_on_stream<F>( stream: &CudaStream, initial_value: u32, assign_default_on_launch: bool, populate_body: F, ) -> Result<Self, CudaConditionalGraphUnavailable>
Create, populate, and instantiate a parent graph containing exactly one root conditional-WHILE node.
The handle and body passed to populate_body remain valid until this
CapturedCudaGraph is dropped. CUDA permits only one live executable
instantiation of a graph containing a conditional node.
Sourcepub unsafe fn instantiate_owned_graph(
graph: CUgraph,
context: Arc<CudaContext>,
) -> Result<Self, CudaConditionalGraphUnavailable>
pub unsafe fn instantiate_owned_graph( graph: CUgraph, context: Arc<CudaContext>, ) -> Result<Self, CudaConditionalGraphUnavailable>
Instantiate and assume sole ownership of graph.
The graph is destroyed on instantiation failure. On success, this value destroys the executable first and the source graph second.
§Safety
graph must be a valid, unowned graph in context, and no other owner
may destroy or instantiate it while this value exists.
Sourcepub fn capture_on_stream<F>(stream: &CudaStream, record: F) -> Result<Self>
pub fn capture_on_stream<F>(stream: &CudaStream, record: F) -> Result<Self>
Capture work submitted by record on stream, instantiate it, and take
ownership of the resulting graph handles.
Sourcepub fn launch(&self, stream: &CudaStream) -> Result<()>
pub fn launch(&self, stream: &CudaStream) -> Result<()>
Replay the instantiated graph on stream.
Sourcepub fn node_count(&self) -> Result<usize>
pub fn node_count(&self) -> Result<usize>
Number of nodes in the captured graph. Used by bounded CSM CUDA Graph cache-key and node-inventory certs to prove topology stability.
Sourcepub fn nodes(&self) -> Result<Vec<CudaGraphNode>>
pub fn nodes(&self) -> Result<Vec<CudaGraphNode>>
Return graph nodes in CUDA’s enumeration order with their node type.
CUDA does not define this list as dependency or execution order. Use
Self::linear_chain_node_kinds when a linear topology is required.
Sourcepub fn linear_chain_node_kinds(&self) -> Result<Vec<CudaGraphNodeKind>>
pub fn linear_chain_node_kinds(&self) -> Result<Vec<CudaGraphNodeKind>>
Return actual node kinds in root-to-leaf dependency order.
This fails unless the graph is one connected linear chain with exactly one root, one leaf, one immediate dependency per non-root node, and no branches, duplicate dependencies, foreign dependencies, or cycles.
Sourcepub fn kernel_node_params(
&self,
node: CudaGraphNode,
) -> Result<CUDA_KERNEL_NODE_PARAMS>
pub fn kernel_node_params( &self, node: CudaGraphNode, ) -> Result<CUDA_KERNEL_NODE_PARAMS>
Read CUDA’s raw kernel-node params for inventory/update code.
The returned kernelParams pointer is CUDA-owned capture metadata. Treat
it as read-only unless constructing a fresh params object for
Self::set_kernel_node_params.
Sourcepub unsafe fn set_kernel_node_params(
&self,
node: CudaGraphNode,
params: &CUDA_KERNEL_NODE_PARAMS,
) -> Result<()>
pub unsafe fn set_kernel_node_params( &self, node: CudaGraphNode, params: &CUDA_KERNEL_NODE_PARAMS, ) -> Result<()>
Update a kernel node in the instantiated graph.
§Safety
CUDA requires the replacement params to be topology-compatible with the captured node. The caller must keep every pointed-to kernel argument alive until CUDA has consumed the update and launched work that uses it.
Sourcepub fn memset_node_params(
&self,
node: CudaGraphNode,
) -> Result<CUDA_MEMSET_NODE_PARAMS>
pub fn memset_node_params( &self, node: CudaGraphNode, ) -> Result<CUDA_MEMSET_NODE_PARAMS>
Read CUDA’s raw memset-node params for inventory/update code.
Sourcepub fn set_memset_node_params(
&self,
node: CudaGraphNode,
params: &CUDA_MEMSET_NODE_PARAMS,
stream: &CudaStream,
) -> Result<()>
pub fn set_memset_node_params( &self, node: CudaGraphNode, params: &CUDA_MEMSET_NODE_PARAMS, stream: &CudaStream, ) -> Result<()>
Update a memset node in the instantiated graph.
Sourcepub fn exec(&self) -> CUgraphExec
pub fn exec(&self) -> CUgraphExec
Raw instantiated graph handle for low-level graph-exec update code.