pub struct FusionOptions {
pub skip_fusion: bool,
pub unfuse_elementwise_regions: bool,
pub keep_elementwise_regions: bool,
pub decompose_fusion_regions: bool,
pub fk_fusion: bool,
pub fuse_region_prologue: bool,
pub fuse_batch_preprocess: bool,
pub native_fk_regions: bool,
pub fusion_limits: FusionLimits,
}Expand description
Per-target fusion toggles (env-driven on Metal today).
Fields§
§skip_fusion: boolSkip all pattern fusions (Metal: RLX_METAL_NO_FUSION).
unfuse_elementwise_regions: boolBreak ElementwiseRegion back into primitives after marking.
keep_elementwise_regions: boolKeep fused ElementwiseRegion through lowering (env: RLX_KEEP_ELEMENTWISE_REGIONS).
decompose_fusion_regions: boolDecompose FKL-style transform / batch regions before backend lowering.
fk_fusion: boolRun FKL passes (MarkTransformRegions, prologue, batch). Env: RLX_NO_FK_FUSION=1 disables.
fuse_region_prologue: boolFold ResizeNearest2x into ElementwiseRegion prologue. Env: RLX_FUSE_REGION_PROLOGUE=0 disables.
fuse_batch_preprocess: boolMerge parallel region slices into BatchElementwiseRegion. Env: RLX_FUSE_BATCH_PREPROCESS=0 disables.
native_fk_regions: boolKeep TransformRegion / BatchElementwiseRegion in MIR for native lowering. Env: RLX_NATIVE_FK_REGIONS=1.
fusion_limits: FusionLimitsCaps for fused elementwise chains (encoder / scratch limits).
Implementations§
Source§impl FusionOptions
impl FusionOptions
Sourcepub fn from_metal_env() -> FusionOptions
pub fn from_metal_env() -> FusionOptions
Read Metal-specific env overrides.
Sourcepub fn merge_env(self) -> FusionOptions
pub fn merge_env(self) -> FusionOptions
Merge session options with compile-time env overrides.
Sourcepub fn apply_native_fk_defaults(self, target: FusionTarget) -> FusionOptions
pub fn apply_native_fk_defaults(self, target: FusionTarget) -> FusionOptions
GPU-class targets keep native FKL regions unless opted out.
Sourcepub fn for_cpu() -> FusionOptions
pub fn for_cpu() -> FusionOptions
CPU executes element-wise chains as per-op thunks — mark then unfuse.
Sourcepub fn for_metal() -> FusionOptions
pub fn for_metal() -> FusionOptions
Metal keeps RMSNorm / matmul fusions but unfuses ElementwiseRegion
(fused MSL mis-lowers long chains on deep transformer graphs).
Sourcepub fn for_wgpu() -> FusionOptions
pub fn for_wgpu() -> FusionOptions
wgpu region kernel only supports trailing/scalar broadcast via modulus — unfuse so LegalizeBroadcast Expand + Binary run separately.
Trait Implementations§
Source§impl Clone for FusionOptions
impl Clone for FusionOptions
Source§fn clone(&self) -> FusionOptions
fn clone(&self) -> FusionOptions
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for FusionOptions
Source§impl Debug for FusionOptions
impl Debug for FusionOptions
Source§impl Default for FusionOptions
impl Default for FusionOptions
Source§fn default() -> FusionOptions
fn default() -> FusionOptions
impl Eq for FusionOptions
Source§impl PartialEq for FusionOptions
impl PartialEq for FusionOptions
Source§fn eq(&self, other: &FusionOptions) -> bool
fn eq(&self, other: &FusionOptions) -> bool
self and other values to be equal, and is used by ==.