[Mlir-commits] [mlir] [mlir][linalg] Implement TilingInterface for winograd operators (PR #96184)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Jul 19 08:02:20 PDT 2024
https://github.com/Max191 requested changes to this pull request.
My main comments are that you should add the filter transform tiledImplementation, and this needs to support more flexible tile sizes for the input and output transforms. One of the main purposes of the tiling interface is to break down a workload into a user defined tile size so that the workload can fit into caches, SIMD registers, etc. The implementation right now appears to only support tile sizes of `[0, 0, 1, 1, 0, 0]`, but it should be able to support `[0, 0, ?, ?, ?, ?]`. The only dimensions that are required to stay as a full tile are the outermost dimensions that get extracted for the matmuls in the inner loop.
Another common theme in tiling interface implementations is that sizes need to be clamped when extracting slices. This is a result of having more flexible tile size selection. For example:
For an input transform with result shape `tensor<6x6x10x10x16x32>`, the tile sizes may be something like `[0, 0, 4, 4, 8, 16]`. In this case, the tile sizes for tileH and tileW do not fit evenly into the problem size. So, the tiling interface implementation should provide some logic to extract a dynamically sized tile that is either `6x6x4x4x8x16` for the normal tiles, or `6x6x2x2x8x16` for the tiles that don't fit at the end. This is what most tiling interface implementations do in order to support more general tile size selection.
https://github.com/llvm/llvm-project/pull/96184
More information about the Mlir-commits
mailing list