Skip to main content

ronn_graph/passes/
mod.rs

1// Optimization passes for graph transformation
2
3mod constant_folding;
4mod dead_code;
5mod fusion;
6mod layout;
7mod provider_specific;
8
9pub use constant_folding::ConstantFoldingPass;
10pub use dead_code::DeadCodeEliminationPass;
11pub use fusion::NodeFusionPass;
12pub use layout::LayoutOptimizationPass;
13pub use provider_specific::{CpuOptimizationPass, GpuOptimizationPass};
14
15use crate::error::Result;
16use crate::optimizer::PassStats;
17use ronn_core::ModelGraph;
18
19/// Trait for optimization passes
20pub trait OptimizationPass: Send + Sync {
21    /// Get the name of the pass
22    fn name(&self) -> &str;
23
24    /// Run the optimization pass on a graph
25    fn run(&self, graph: &mut ModelGraph) -> Result<PassStats>;
26
27    /// Check if the pass should run (can be overridden for conditional passes)
28    fn should_run(&self, _graph: &ModelGraph) -> bool {
29        true
30    }
31}