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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions