use ManagedMemoryHandle;
use CUgraphExec;
/// An instantiated CUDA executable graph (`CUgraphExec`), destroyed on drop.
///
/// Owned by the [`CudaServer`](super::server::CudaServer) registry and referenced
/// by [`GraphId`](cubecl_runtime::id::GraphId); the raw handle never leaves the
/// server actor, which serializes access, so it is only ever touched on the one
/// thread allowed to. The client references the graph by id and, on the last
/// drop, asks the actor to release it — `graph_destroy` syncs the stream first
/// so the executable is never destroyed while a replay is still running.