Thanks for the work on this, after thinking about it for a while I believe the 
proposed hooks runs counter to goals of the TECompiler and "unified lowering" 
refactor that we've been working on in pieces. Our design goal is to not allow 
arbitrary customization of "lowering"  but instead seal it behind a stable 
interface. The lowering process should be a straight forward mapping from TE -> 
TIR, and then any necessary customization should be possible in resulting 
passes which are allowed to view the entire program including both the Relay 
code and TIR code.

The goal is to remove the need for many slightly different code paths through 
the central parts of the compiler and instead provide standard interfaces that 
allow targets, and users to customize the compiler without having to touch any 
of the flows or modify the data structures.  The proliferation of 
customizations in the old compile engine for example makes it nearly impossible 
to refactor the compiler in its current state, and has lead to the world where 
we need lots of per-flow customization because the compiler is insufficiently 
factored into a common prefix of code. 

I plan on providing a longer form document on this hopefully this week that 
argues this more in depth but I believe the tenants should be customization of 
the compiler happens via passes, passes only can produce IRModules, and all 
data is stored in the IRModule. Today's compiler requires a little more work to 
get to this world, but I think we should push in this direction.

Now that doesn't mean the desire to have per target behavior is necessarily 
bad, but I think instead of overriding the lowering code with arbitrary 
functions we could provide hooks that allow the insertion of target specific 
passes at the "correct" time in the compiler flow. In this world the proposed 
hooks should return a `Pass` object which can be inserted after the appropriate 
phases. 

Happy to discuss more, and have others such as @electriclilies @csullivan 
@mbs-octoml 

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/tvm-rfcs/pull/10#issuecomment-891293282

Reply via email to