[all-commits] [llvm/llvm-project] 1992e9: [mlir][linalg] Enable scalable vectorization of li...
Andrzej WarzyĆski via All-commits
all-commits at lists.llvm.org
Fri Aug 1 03:29:45 PDT 2025
Branch: refs/heads/users/banach-space/linalg/unpack_vec_update
Home: https://github.com/llvm/llvm-project
Commit: 1992e9ae230e32d4c981676e1237d836b57abafe
https://github.com/llvm/llvm-project/commit/1992e9ae230e32d4c981676e1237d836b57abafe
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/include/mlir/Dialect/Vector/Utils/VectorUtils.h
M mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
M mlir/lib/Dialect/Vector/Utils/VectorUtils.cpp
M mlir/test/Dialect/Linalg/vectorization/linalg-ops.mlir
Log Message:
-----------
[mlir][linalg] Enable scalable vectorization of linalg.unpack (WIP)
This patch updates `vectorizeAsTensorUnpackOp` to support scalable
vectorization by requiring user-specified vector sizes for both the
_read_ and _write_ operations involved in `linalg.unpack`. Detailed
rationale and an example are provided below.
Conceptually, `linalg.unpack` consists of the following high-level steps:
1. _Read_ from the source tensor.
2. Transpose the value read in step (1).
3. _Write_ the value from step (2) into the destination tensor.
Currently, when vectorizing with user-provided vector sizes, only the
sizes for the _write_ operation (step 3) are required. Sizes for the
_read_ operation (step 1) are inferred from static shapes and inner tile
sizes.
This logic breaks when the input shapes or tile sizes are dynamic
(indeed, `vectorizeUnPackOpPrecondition` rejects such cases ATM and the
vectorization fails). This patch addresses the issue by requiring
explicit vector sizes for both the read and write sides, enabling
scalable vectorization in such cases.
Example:
```mlir
func.func @unpack(%in: tensor<1x1x8x?xf32>, %out: tensor<8x?xf32>) -> tensor<8x?xf32> {
%vs = vector.vscale
%c8 = arith.constant 8 : index
%tile_size = arith.muli %vs, %c8 : index
%unpack = linalg.unpack %in
inner_dims_pos = [0, 1]
inner_tiles = [8, %tile_size]
into %out : tensor<1x1x8x?xf32> -> tensor<8x?xf32>
return %unpack : tensor<8x?xf32>
}
module attributes {transform.with_named_sequence} {
transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {
%0 = transform.structured.match ops{["linalg.unpack"]} in %arg0 : (!transform.any_op) -> !transform.any_op
transform.structured.vectorize %0 vector_sizes [1, 1, 8, [8], 8, [8]] : !transform.any_op
// \ / \ /
// read-sizes write-sizes
transform.yield
}
}
```
Finally, this patch also extends `createReadOrMaskedRead` and
`createWriteOrMaskedWrite` to take scalable flags.
Commit: 8509428b05830bf6ac9e40fa4053c6554014a3e6
https://github.com/llvm/llvm-project/commit/8509428b05830bf6ac9e40fa4053c6554014a3e6
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
Log Message:
-----------
fixup! [mlir][linalg] Enable scalable vectorization of linalg.unpack (WIP)
Remove leftover code + comments
Commit: f9766cf2118487d3f017e89ecb0b3d69eebf62af
https://github.com/llvm/llvm-project/commit/f9766cf2118487d3f017e89ecb0b3d69eebf62af
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
Log Message:
-----------
fixup! fixup! [mlir][linalg] Enable scalable vectorization of linalg.unpack (WIP)
Fix pre-condition calculation
Commit: fdcf92ac2589ba579ce496e1ad651ac5d0413e8b
https://github.com/llvm/llvm-project/commit/fdcf92ac2589ba579ce496e1ad651ac5d0413e8b
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
M mlir/test/Dialect/Linalg/vectorization/linalg-ops.mlir
Log Message:
-----------
fixup! fixup! [mlir][linalg] Enable scalable vectorization of linalg.unpack (WIP)
Improve documentation + fix test after rebasing on top of
* https://github.com/llvm/llvm-project/pull/150602
Commit: a8452e9c7b97abd8072a0752ec03325a5d2255e0
https://github.com/llvm/llvm-project/commit/a8452e9c7b97abd8072a0752ec03325a5d2255e0
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/test/Dialect/Linalg/vectorization/linalg-ops.mlir
Log Message:
-----------
fixup! fixup! fixup! [mlir][linalg] Enable scalable vectorization of linalg.unpack (WIP)
Remove unintended test change
Commit: 771a1f165d7e996b26b7eb327222fe706123e728
https://github.com/llvm/llvm-project/commit/771a1f165d7e996b26b7eb327222fe706123e728
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
Log Message:
-----------
fixup! fixup! fixup! fixup! [mlir][linalg] Enable scalable vectorization of linalg.unpack (WIP)
Remove TODO
Commit: 8a06fd57be094f4bbe50df07afbe29e87cd45e1e
https://github.com/llvm/llvm-project/commit/8a06fd57be094f4bbe50df07afbe29e87cd45e1e
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
Log Message:
-----------
fixup! fixup! fixup! fixup! fixup! [mlir][linalg] Enable scalable vectorization of linalg.unpack (WIP)
Fix comment
Commit: d2f14b9b61ef3f1ffa2f618e068a9999b550d1e1
https://github.com/llvm/llvm-project/commit/d2f14b9b61ef3f1ffa2f618e068a9999b550d1e1
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
M mlir/lib/Dialect/Vector/Utils/VectorUtils.cpp
Log Message:
-----------
Simplify code as per comments from HanHan
Commit: acfe43252e32a1f13dfb3c6a965024d500dccf93
https://github.com/llvm/llvm-project/commit/acfe43252e32a1f13dfb3c6a965024d500dccf93
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
Log Message:
-----------
Address the remaining comments from HanHan
Commit: 65488765fa9b71606c41515fce1b6101aab270cf
https://github.com/llvm/llvm-project/commit/65488765fa9b71606c41515fce1b6101aab270cf
Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
Date: 2025-08-01 (Fri, 01 Aug 2025)
Changed paths:
M mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
M mlir/test/Dialect/Linalg/vectorization/linalg-ops.mlir
Log Message:
-----------
Simplify to only require read-vector-sizes.
Compare: https://github.com/llvm/llvm-project/compare/97fbccdc118f...65488765fa9b
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list