Hello, I'm relatively new to understanding MLIR and its use cases. I'm interested in learning about the passes in MLIR in the context of optimizations for dense matrix/dense linear algebra operations. More specifically the LoopTiling pass.
I see
here, in the comment on line#88, that loop tiling sizes in MLIR are determined based on the fact whether the tiles "fit" in the memory or not. However, there are several frameworks such as TVM, Timeloop, dMazeRunner etc. that have shown loop tiling (and loop ordering) to be a complicated problem. There are several factors affecting best tiling and ordering strategy for running loop-nests for dense arrays on hardware architecture such as levels of memory hierarchy, memory sizes, number of PEs, ranges of each of the loop dimensions etc. And several frameworks have proposed different search algorithms to find the best tiling and ordering for loop-nests on dense arrays.
My question is, does MLIR implements any sophisticated method to perform loop-nests optimization (that I may have missed)? Or is this not the scope of work for MLIR?
I'd appreciate any help regarding this.
Thanks in advance
Suyash