oxicuda-graph
Part of the OxiCUDA ecosystem — Pure Rust CUDA replacement for the COOLJAPAN ecosystem.
Overview
oxicuda-graph is a high-level CUDA Graph execution engine that models GPU workloads as directed acyclic graphs (DAGs) of operations. It applies analysis and optimisation passes — operator fusion, buffer lifetime colouring, and multi-stream partitioning — and lowers the result to an oxicuda_driver::graph::Graph for low-overhead CUDA Graph submission.
Features
- Ergonomic
GraphBuilderAPI for constructing kernel, memcpy, and memset nodes with explicit buffer dependencies - Analysis passes: topological ordering (ASAP/ALAP scheduling, slack, levels), buffer liveness intervals, and a Lengauer–Tarjan dominator tree
- Optimisation passes: element-wise kernel fusion, interval-graph buffer colouring (minimises peak allocation), and multi-stream partitioning
ExecutionPlanlowering to orderedPlanStepsequences ready forSequentialExecutor(CPU simulation) orCudaGraphExecutor- Execution statistics: kernels launched, nodes visited, fused ops count
#![forbid(unsafe_code)]— fully safe Rust
Usage
Add to your Cargo.toml:
[]
= "0.3.0"
use GraphBuilder;
use ;
use MemcpyDir;
let mut b = new;
let buf_in = b.alloc_buffer;
let buf_out = b.alloc_buffer;
let upload = b.add_memcpy;
let kernel = b.add_kernel
.fusible.inputs.outputs.finish;
let download = b.add_memcpy;
b.chain;
let graph = b.build.unwrap;
let plan = build.unwrap;
let stats = new.run.unwrap;
println!;
Status
v0.3.0 (2026-06-25) — 299 tests passing
License
Apache-2.0 — © 2026 COOLJAPAN OU (Team KitaSan)