Skip to content

Separate fusion from compilation/lowering as a standalone pass #1540

@zhiics

Description

@zhiics

Currently, TVM implements fusion in two steps: GraphFuseParition and GraphFuseCompile. The second pass actually does both fusion and lowering together.

Would it be more appropriate to make fusion as a separate pass so that both the input and output are a graph? Compilation/lowering is decoupled as a separate pass as well. This way, other graph level optimization(s) might still be applicable.

Furthermore, we could probably make fusion more extensible, i.e. operators could be fused with certain given rules. I think it can probably be even more aggressive to apply fusion multiple times where each time a rule is used.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions