-
Notifications
You must be signed in to change notification settings - Fork 12.6k
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
[mlir][linalg][nfc] Delete references to args_in/args_out #111517
[mlir][linalg][nfc] Delete references to args_in/args_out #111517
Conversation
After the refactor in: * ed22913, the `args_in` and `args_out` attributes are no longer used by `linalg.generic`. This patch removes all the remaining references.
@llvm/pr-subscribers-mlir @llvm/pr-subscribers-mlir-bufferization Author: Andrzej Warzyński (banach-space) ChangesAfter the refactor in: the Full diff: https://github.com/llvm/llvm-project/pull/111517.diff 6 Files Affected:
diff --git a/mlir/docs/BufferDeallocationInternals.md b/mlir/docs/BufferDeallocationInternals.md
index 00830ba9d2dc2e..d6c556ab380d22 100644
--- a/mlir/docs/BufferDeallocationInternals.md
+++ b/mlir/docs/BufferDeallocationInternals.md
@@ -664,8 +664,6 @@ merged into a single step. Canonicalization removes the clone operation and
func.func @reuseTarget(%arg0: memref<2xf32>, %result: memref<2xf32>){
%temp = memref.alloc() : memref<2xf32>
test.generic {
- args_in = 1 : i64,
- args_out = 1 : i64,
indexing_maps = [#map0, #map0],
iterator_types = ["parallel"]} %arg0, %temp {
^bb0(%gen2_arg0: f32, %gen2_arg1: f32):
@@ -683,8 +681,6 @@ Will be transformed to:
```mlir
func.func @reuseTarget(%arg0: memref<2xf32>, %result: memref<2xf32>){
test.generic {
- args_in = 1 : i64,
- args_out = 1 : i64,
indexing_maps = [#map0, #map0],
iterator_types = ["parallel"]} %arg0, %result {
^bb0(%gen2_arg0: f32, %gen2_arg1: f32):
diff --git a/mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.td b/mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.td
index a610ddcc9899ed..a683a905cd2d6b 100644
--- a/mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.td
@@ -32,8 +32,6 @@ def BufferDeallocation : Pass<"buffer-deallocation", "func::FuncOp"> {
^bb2:
%0 = memref.alloc() : memref<2xf32>
linalg.generic {
- args_in = 1 : i64,
- args_out = 1 : i64,
indexing_maps = [#map0, #map0],
iterator_types = ["parallel"]} %arg1, %0 {
^bb0(%gen1_arg0: f32, %gen1_arg1: f32):
@@ -63,8 +61,6 @@ def BufferDeallocation : Pass<"buffer-deallocation", "func::FuncOp"> {
^bb2: // pred: ^bb0
%1 = memref.alloc() : memref<2xf32>
linalg.generic {
- args_in = 1 : i64,
- args_out = 1 : i64,
indexing_maps = [#map0, #map0],
iterator_types = ["parallel"]} %arg1, %1 {
^bb0(%arg3: f32, %arg4: f32):
@@ -143,8 +139,6 @@ def OwnershipBasedBufferDeallocation : Pass<
^bb2:
%0 = memref.alloc() : memref<2xf32>
linalg.generic {
- args_in = 1 : i64,
- args_out = 1 : i64,
indexing_maps = [#map0, #map0],
iterator_types = ["parallel"]}
outs(%arg1, %0 : memref<2xf32>, memref<2xf32>) {
@@ -179,7 +173,6 @@ def OwnershipBasedBufferDeallocation : Pass<
indexing_maps = [#map, #map],
iterator_types = ["parallel"]}
outs(%arg1, %alloc : memref<2xf32>, memref<2xf32>)
- attrs = {args_in = 1 : i64, args_out = 1 : i64} {
^bb0(%out: f32, %out_0: f32):
%2 = math.exp %out : f32
linalg.yield %2, %out_0 : f32, f32
diff --git a/mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp b/mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp
index 90ee0fb3bf0b6b..bacc634f5ee554 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp
+++ b/mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp
@@ -178,8 +178,6 @@ struct MoveInitOperandsToInput : public OpRewritePattern<GenericOp> {
/// ]
///
/// #trait = {
-/// args_in = 2,
-/// args_out = 1,
/// indexing_maps = #accesses,
/// iterator_types = ["parallel", "parallel"],
/// library_call = "some_external_fn"
@@ -210,8 +208,6 @@ struct MoveInitOperandsToInput : public OpRewritePattern<GenericOp> {
/// ]
///
/// #trait = {
-/// args_in = 2,
-/// args_out = 1,
/// indexing_maps = #accesses,
/// iterator_types = ["parallel", "parallel"],
/// library_call = "some_external_fn"
diff --git a/mlir/test/Dialect/Linalg/loops.mlir b/mlir/test/Dialect/Linalg/loops.mlir
index 6ddbd06389f5eb..6286a11c11a21f 100644
--- a/mlir/test/Dialect/Linalg/loops.mlir
+++ b/mlir/test/Dialect/Linalg/loops.mlir
@@ -254,8 +254,6 @@ func.func @copy_view(%arg0: memref<?xf32, strided<[1], offset: ?>>, %arg1: memre
affine_map<(i, j, k) -> (i, k, j)>
]
#trait2 = {
- args_in = 1,
- args_out = 2,
iterator_types = ["parallel", "parallel", "parallel"],
indexing_maps = #accesses,
library_call = "some_external_function_name_2",
@@ -296,8 +294,6 @@ func.func @generic_region(%arg0: memref<?x?xf32, strided<[?, 1], offset: ?>>, %a
// CHECKPARALLEL: store %[[e]], %{{.*}}[%[[i]], %[[k]], %[[j]]] : memref<?x?x?xf32, strided<[?, ?, 1], offset: ?>>
#trait4 = {
- args_in = 1,
- args_out = 2,
iterator_types = ["parallel", "parallel", "parallel"],
indexing_maps = #accesses,
library_call = "some_external_function_name_2",
@@ -366,8 +362,6 @@ func.func @generic_index_region(
]
#trait_broadcast = {
- args_in = 1,
- args_out = 1,
indexing_maps = #broadcast_access,
iterator_types = ["parallel", "parallel"],
library_call = "some_broadcast_external_fn"
@@ -466,8 +460,6 @@ func.func @generic_index_op_zero_rank(%arg0: memref<i32>, %arg1: memref<3x4xi32>
]
#trait_reduce_1D = {
- args_in = 1,
- args_out = 1,
indexing_maps = #reduce_1D_access,
iterator_types = ["reduction"],
library_call = "some_reduce_external_fn"
@@ -510,8 +502,6 @@ func.func @generic_op_1D_reduce(%arg0: memref<?xf32>, %arg1: memref<f32>)
]
#trait_reduce_init_1D = {
- args_in = 2,
- args_out = 1,
indexing_maps = #reduce_init_1D_access,
iterator_types = ["reduction"],
library_call = "some_reduce_external_fn"
@@ -559,8 +549,6 @@ func.func @generic_index_op_1D_reduce(%arg0: memref<?xf32>,
// CHECKPARALLEL: store %[[e]], %[[ARG2]][]
#trait_const_fill = {
- args_in = 0,
- args_out = 1,
indexing_maps = [affine_map<(i) -> (i)>],
iterator_types = ["parallel"],
library_call = "some_external_fn"
@@ -591,8 +579,6 @@ func.func @generic_const_init(%arg0: memref<?xf32>) {
affine_map<() -> ()>
]
#scalar_trait = {
- args_in = 2,
- args_out = 1,
iterator_types = [],
indexing_maps = #scalar_access,
library_call = "some_external_fn"
diff --git a/mlir/test/Dialect/Linalg/transform-patterns.mlir b/mlir/test/Dialect/Linalg/transform-patterns.mlir
index 87b7664198dae1..176e55e3e6c4aa 100644
--- a/mlir/test/Dialect/Linalg/transform-patterns.mlir
+++ b/mlir/test/Dialect/Linalg/transform-patterns.mlir
@@ -118,8 +118,6 @@ module attributes {transform.with_named_sequence} {
affine_map<(m, n, k) -> (m, n)>
]
#generic_matmul_trait = {
- args_in = 2,
- args_out = 1,
indexing_maps = #matmul_accesses,
library_call = "linalg_matmul",
iterator_types = ["parallel", "parallel", "reduction"]
diff --git a/mlir/test/Dialect/Linalg/vectorization-with-patterns.mlir b/mlir/test/Dialect/Linalg/vectorization-with-patterns.mlir
index e7beb725471123..1c6a786bfa436d 100644
--- a/mlir/test/Dialect/Linalg/vectorization-with-patterns.mlir
+++ b/mlir/test/Dialect/Linalg/vectorization-with-patterns.mlir
@@ -83,8 +83,6 @@ module attributes {transform.with_named_sequence} {
// -----
#matmul_trait = {
- args_in = 2,
- args_out = 1,
indexing_maps = [
affine_map<(m, n, k) -> (m, k)>,
affine_map<(m, n, k) -> (k, n)>,
@@ -125,8 +123,6 @@ module attributes {transform.with_named_sequence} {
// -----
#matmul_transpose_out_trait = {
- args_in = 2,
- args_out = 1,
indexing_maps = [
affine_map<(m, n, k) -> (m, k)>,
affine_map<(m, n, k) -> (k, n)>,
@@ -196,8 +192,6 @@ module attributes {transform.with_named_sequence} {
// -----
#matmul_trait = {
- args_in = 2,
- args_out = 1,
indexing_maps = [
affine_map<(m, n, k) -> (m, k)>,
affine_map<(m, n, k) -> (k, n)>,
@@ -528,8 +522,6 @@ func.func @generic_vectorize(%arg0: memref<4x256xf32>,
// CHECK-DAG: %[[C0:.*]] = arith.constant 0 : index
%c1_f32 = arith.constant 1.0 : f32
linalg.generic {
- args_in = 0 : i64,
- args_out = 10 : i64,
indexing_maps = [
affine_map<(d0, d1) -> (d0, d1)>,
affine_map<(d0, d1) -> (d1)>,
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @banach-space for spotting these. Some comments on getting it totally fixed.
@@ -664,8 +664,6 @@ merged into a single step. Canonicalization removes the clone operation and | |||
func.func @reuseTarget(%arg0: memref<2xf32>, %result: memref<2xf32>){ | |||
%temp = memref.alloc() : memref<2xf32> | |||
test.generic { | |||
args_in = 1 : i64, | |||
args_out = 1 : i64, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just deleting will still leave IR incorrect. The IR below should be like (Notice the ins , outs and math.exp, and braces ...
%alloc = memref.alloc() : memref<2xf32>
linalg.generic
{indexing_maps = [#map, #map],
iterator_types = ["parallel"]}
ins(%arg1 : memref<2xf32>)
outs(%alloc : memref<2xf32>) {
^bb0(%in: f32, %out: f32):
%1 = math.exp %in : f32
linalg.yield %1 : f32
}
``
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for spotting that. This example is broken in other ways too, e.g (the parser rejects this):
%result = bufferization.clone %temp : (memref<2xf32>) -> (memref<2xf32>)
Also, at the top of the file:
**Note:** This pass is deprecated. Please use the ownership-based buffer
deallocation pass instead.
I feel that I should skip this file altogether, it clearly hasn't been maintained for a while now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Even if you don’t fix everything … fixing some parts is already an improvement .
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What are you suggesting? Partial update in this file? TBH, I'd rather skip it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Up to you really.
I meant if args_in args_out are present in files like mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.td
which lot of folks read, removing it is still better than 'fix everything or fix nothing' approach.
then
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds like I've addressed your comment then? Asking as according to GitHub you are still "requesting changes" :)
Restore changes in BufferDeallocationInternals.md, that file is not maintained anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Thanks.
After the refactor in: * ed22913, the `args_in` and `args_out` attributes are no longer used by `linalg.generic`. This patch removes most the remaining references. I've left out BufferDeallocationInternals.md, which doesn't seem maintained anymore and is quite out of sync with other bits of MLIR (e.g. `test.generic` instead of `linalg.generic`).
After the refactor in: * ed22913, the `args_in` and `args_out` attributes are no longer used by `linalg.generic`. This patch removes most the remaining references. I've left out BufferDeallocationInternals.md, which doesn't seem maintained anymore and is quite out of sync with other bits of MLIR (e.g. `test.generic` instead of `linalg.generic`).
After the refactor in:
the
args_in
andargs_out
attributes are no longer used bylinalg.generic
. This patch removes all the remaining references.