Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replicate MLP examples in Linalg Named Ops #933

Open
rengolin opened this issue Jun 21, 2024 · 0 comments
Open

Replicate MLP examples in Linalg Named Ops #933

rengolin opened this issue Jun 21, 2024 · 0 comments
Assignees

Comments

@rengolin
Copy link
Contributor

Replicate tests and benchmarks written in Linalg generic to use named ops, for example, by changing mlir-gen to output named ops instead of generics.

We should compare the output between mlir-gen -output=generic with mlir-gen -output=named | mlir-opt -linalg-generalize and see that they're the same.

The output should pass through tpp-opt, tile and fuse in the same way. This may not work out of the box, so may need to be implemented. This may involve changing the upstream packing, tiling, fusing passes to cope with named ops.

The end result is a complete replacement of all benchmarks to named ops, with the same performance as current generic ones, and additional tests matching IR generation between the natively generic forms and the generalized via upstream pass.

Most of the logic should go upstream, other than the "usage wrappers" like our current framework. This work will be a mix of upstream and downstream PRs, LLVM bumps and fix-ups, until converging to a fixed point.

@rengolin rengolin assigned rolfmorel and unassigned rolfmorel Jun 21, 2024
@rolfmorel rolfmorel assigned rolfmorel and unassigned rolfmorel Jun 24, 2024
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 3, 2024
Adds support to generate linalg named Ops for matmul, bias, relu.
This feature can be controlled using a new flag '--output'.

For example:
To generate generic linalg Ops use '--output=generic"
To generate named linalg Ops use '--output=named"

The default behaviour is to generate linalg generic Ops.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 5, 2024
Adds support to generate linalg named Ops for matmul, bias, relu.
This feature can be controlled using a new flag '--output'.

For example:
To generate generic linalg Ops use '--output=generic"
To generate named linalg Ops use '--output=named"

The default behaviour is to generate linalg generic Ops.

Adds named op test which pass out of the box.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 5, 2024
Adds support to generate linalg named Ops for matmul, bias, relu.
This feature can be controlled using a new flag '--output'.

For example:
To generate generic linalg Ops use '--output=generic"
To generate named linalg Ops use '--output=named"

The default behaviour is to generate linalg generic Ops.

Adds named op test which pass out of the box.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 8, 2024
Adds support to generate linalg named Ops for matmul, bias, relu.
This feature can be controlled using a new flag '--output'.

For example:
To generate generic linalg Ops use '--output=generic"
To generate named linalg Ops use '--output=named"

The default behaviour is to generate linalg generic Ops.

Adds named op test which pass out of the box.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 9, 2024
Adds support to generate linalg named Ops for matmul, bias, relu.
This feature can be controlled using a new flag '--output'.

For example:
To generate generic linalg Ops use '--output=generic"
To generate named linalg Ops use '--output=named"

The default behaviour is to generate linalg generic Ops.

Adds named op test which pass out of the box.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 12, 2024
Adds support to generate linalg named Ops for matmul, bias, relu.
This feature can be controlled using a new flag '--output'.

For example:
To generate generic linalg Ops use '--output=generic"
To generate named linalg Ops use '--output=named"

The default behaviour is to generate linalg generic Ops.

Adds named op test which pass out of the box.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 17, 2024
Adds support to generate linalg named Ops for matmul, bias, relu.
This feature can be controlled using a new flag '--output'.

For example:
To generate generic linalg Ops use '--output=generic"
To generate named linalg Ops use '--output=named"

The default behaviour is to generate linalg generic Ops.

Adds named op test which pass out of the box.

-Adds another option "--keep-generic-matmul" to help generate generic
matmul when linalg named ops output was chosen.

-Refactors the code.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 18, 2024
Adds support to generate linalg named Ops for matmul, bias, relu.
This feature can be controlled using a new flag '--output'.

For example:
To generate generic linalg Ops use '--output=generic"
To generate named linalg Ops use '--output=named"

The default behaviour is to generate linalg generic Ops.

Adds named op test which pass out of the box.

-Adds another option "--keep-generic-matmul" to help generate generic
matmul when linalg named ops output was chosen.

-Refactors the code.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 18, 2024
Adds support to generate linalg named Ops for matmul, bias, relu.
This feature can be controlled using a new flag '--output'.

For example:
To generate generic linalg Ops use '--output=generic"
To generate named linalg Ops use '--output=named"

The default behaviour is to generate linalg generic Ops.

Adds named op test which pass out of the box.

-Adds another option "--keep-generic-matmul" to help generate generic
 matmul when linalg named ops output was chosen.

-Refactors the code.
shahidact added a commit that referenced this issue Jul 19, 2024
Mlir-Gen tool currently generates linalg generic ops for basic MLP
operators. We want to extend it to also generate
linalg named ops whenever required based on command line option.

This is the 1st PR to a larger goal to ensure we have enough test
coverage which passes through TPP-OPT pipeline.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 22, 2024
Linalg named ops supports destination style argument passing which
makes hasOneUse() API imprecise, which prevents tiling and fusion.
This patch extends this logic to handle destination style argument passing.

*Adds an option to keep-named-op which prevent generalization of named ops.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 25, 2024
Linalg named ops supports destination style argument passing which
makes hasOneUse() API imprecise, which prevents tiling and fusion.
This patch extends this logic to handle destination style argument passing.
shahidact added a commit to shahidact/tpp-mlir that referenced this issue Jul 30, 2024
Linalg named ops supports destination style argument passing which
makes hasOneUse() API imprecise, which prevents tiling and fusion.
This patch extends this logic to handle destination style argument passing.
shahidact added a commit that referenced this issue Jul 31, 2024
Linalg named ops supports destination style argument passing which makes
hasOneUse()
API imprecise, which prevents tiling and fusion. This patch extends this
logic to handle
destination style argument passing.

*Adds an option to keep-named-op which prevent generalization of named
ops.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants