Skip to content

Create a Pipeline Module #30

@rengolin

Description

@rengolin

Same as #29, we need to create a module that will take that ingress, in the form of an Python MLIR module, and run through a pipeline.

This module, however, is more complicated. It should allow one to create a pipeline in different ways, for example:

  1. Load a transform schedule from an MLIR file and apply it to the payload.
  2. Build a pass pipeline (in Python) and run it on the payload.
  3. Build schedules (statically or dynamically) and apply it on the payload.

The output of this module should be a Python MLIR module with the result of the payload through the pipeline. This can be taken by the subsequent runtime module for final execution.

Key deliverable: Abstract away the multiple ways we run pipelines in the examples into this module and move the examples to use the module instead.

Future considerations:

  • This module could guide users on building their own schedules / pipelines (refined API), but not in its first instance. For now, the pipeline should be provided to the module as is.
  • This is where we connect an auto-tuner as an external program / interface that builds and mutates schedules and pipelines, iterating the payload through them, perhaps multi-versioning, etc. This should be tackled later on a separate issue, but we should design it now with the intent of having that soon after.
  • We should be aware of external usage (downstream compilers) and interoperate lighthouse schedules with external tool pipelines, to reach the final output.

Ref: #16, #23

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