I am recently interested in polyhedral technology in mlir.
There are two ways of achieving this tiling in MLIR: one by calling [mlir::tile] (which is also what the loop tiling pass in MLIR uses), and then performing the desired loop interchange via mlir::interchangeLoops The other is by implementing a higher order polyhedral (HOP) approach based on domains and schedules. We use this latter approach here since MLIR’s affine analysis machinery does not yet have the necessary simplification to get rid of certain redundant bounds resulting from tiled code generation in advanced cases. The HOP approach depends on an external library, ISL, and we implement this as part of the -hopt pass.
Looking at the MLIR repo, it seems that MLIR tends to exclude ISL, and explore new approach to solve the code optimization/generation problem.
I have a few questions about that, and I am a new comer on this area. Any reply/suggestion would be much appreciated.
What is the current state of polyhedral code generation in MLIR ?
- Are there some test cases or documentation about auto schedule ? – comparison with TensorComprehensions for example.
- What is your current opinion about the code optimization/generation thoughts ?
What is the difference between MLIR new approach with the ISL approach ?
- Or there is no essential difference ?
- What is the problem of pluto + ISL approach which MLIR target to solve ?
What is the plan ?
- Will there new algorithm based on new IR ? – comparison with pluto for example.
- Will there be any auto schedule implementation ?