manupa-arm commented on pull request #10:
URL: https://github.com/apache/tvm-rfcs/pull/10#issuecomment-892594559


   Hi @jroesch @Mousius ,
   
   I think having Pass'es (instead of functions) could also work.
   
   I guess what we are after is the ability to assemble and re-use TVM's 
compilation passes on a target basis.
   
   https://github.com/apache/tvm/pull/8110#discussion_r639559530
   Continuing the above comment, this also removes various places otherwise 
devs need to insert custom passes. Therefore, centralizing them closer to the 
target seems much cleaner to me. Therefore, it becomes straightforward to 
follow what passes are being run in the lowering for a given target while also 
not running passes that are not relevant (that are currently run anyway due to 
them having identity effect on IRModule in the absense of special 
attr/nodes/vars in the IRModule). 
   
   > 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.
   
   I think we broadly agrees on this. @Mousius ?
   
   >  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.
   
   While we agree that its better to share the many passes that are required, 
but does it need to mandate a monolith of TIR passes being applied irrespective 
of the target ? We'd like to hear you thoughts (I think this has a connection 
to the so-called phases in lower implementation, right ?). While we could 
codify the requirement, is it absolutely necessary ? Also will it (having 
target based pass pipeline) preclude us from having the code factored into a 
common prefix ?
   
   > 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.
   
   The arbitrary function mentioned here could be a pass pipeline (and we could 
make it a requirement by making it a Pass as you suggested). However, it is 
interesting know if we can define a universally 'correct' time for the flow 
considering targets beyond CPUs and GPUs (w/o needing to do inverse lowering to 
recreate high-level abstraction that was forced lowered due to mandatory 
passes).  We would love to hear if you have an alternative suggestion to 
support target-based lowering
   
   
   
   
   
   
   
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to