pub struct FusionRule { /* private fields */ }Expand description
Auto-generated fusion rule from a FusedOpEntry. Matches the
canonical primitive-subgraph pattern carried by the entry’s
SubgraphPattern and emits a single Op::Fused(id, params)
node. Round-trips with LoweringRule for the same id.
Currently params are reconstructed by-id: SoftmaxLastDim’s variant
is parameterless, so the fusion rule emits
FusedOpParams::SoftmaxLastDim. Step 4 extends crate::registry::PatternMatch
(or adds a sibling extract_params field on FusedOpEntry) so
param-bearing fused ops can recover their parameters from the
matched subgraph.
Implementations§
Source§impl FusionRule
impl FusionRule
pub fn from_entry(entry: &FusedOpEntry) -> Self
Sourcepub fn declarative(id: FusedOpId, tree: PatternTree) -> Self
pub fn declarative(id: FusedOpId, tree: PatternTree) -> Self
Fusion rule from a declarative pattern (the runtime path): match the
region and stamp tree.params on the emitted Op::Fused(id, _).
Trait Implementations§
Source§impl Rule for FusionRule
impl Rule for FusionRule
Source§fn name(&self) -> &'static str
fn name(&self) -> &'static str
Stable, human-readable name. Shows up in panic messages and
debug traces.
Source§fn family(&self) -> RuleFamily
fn family(&self) -> RuleFamily
Which family this rule belongs to. Determines pass ordering.
Source§fn matches(&self, graph: &Graph, id: NodeId) -> bool
fn matches(&self, graph: &Graph, id: NodeId) -> bool
Whether this rule can rewrite the node at
id. Should be
pure — same inputs, same answer. Called once per node per
pass; the first matching rule wins.Source§fn rewrite(
&self,
graph: &mut Graph,
id: NodeId,
remap: &mut HashMap<NodeId, NodeId>,
)
fn rewrite( &self, graph: &mut Graph, id: NodeId, remap: &mut HashMap<NodeId, NodeId>, )
Apply the rewrite: append fresh nodes to the graph, declare
any side-effect roots if the rewrite emits side-effecting
ops, and write
remap.insert(id, replacement_id) so the
driver can redirect consumer edges. Calling this method
implies matches returned true for the
same (graph, id) — rewriters can rely on the structure
the matcher checked for.Auto Trait Implementations§
impl Freeze for FusionRule
impl RefUnwindSafe for FusionRule
impl Send for FusionRule
impl Sync for FusionRule
impl Unpin for FusionRule
impl UnsafeUnpin for FusionRule
impl UnwindSafe for FusionRule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more