tqchen opened a new pull request #5743:
URL: https://github.com/apache/incubator-tvm/pull/5743


   In the HalideIR's design, DSL components and IR are mixed together.
   For example, Call::Halide can containa reference to a function which is
   constructed in the tensor expression language.
   
   While this coupled design simplifies certain aspect of the DSL construction,
   it prevents the TIR to evolve as a clean standalone IR:
   
   - The additional tensor expression provided in the function is opaque to the 
IR
     and may become obsolete as we transform them.
   - The duplication of the information in the DSL tensor and IR makes it hard 
to
     design a stand-alone text format (when there are elements shared in the 
tensor
     expression and normal statements).
   
   This PR aims to clearly de-couple the TIR from high-level DSL 
structures(tensor expression),
   while still provide clear extensions to build DSLs on top of the TIR.
   
   We introduce a DataProducer as a base class for high level tensor 
expressions objects
   that produce data. We then introduce ProducerLoad to replace the 
Call::Halide usage,
   so that the Call node can always be self contained and used for low-level 
calls.
   
   The high-level tensor expression DSL can still generate a PrimExpr that 
contains a ProducerLoad.
   These PrimExprs contains fragments of information that can be combined 
together to
   generate a low-level TIR PrimFunc.
   
   We also state clearly that DataProducer **should not** appear in any TIR 
PrimFunc.
   Instead, the high-level DSL layer should lowered DataProducers to Buffers 
and TIR statements
   that produces these buffers. We can further provide verifications to 
validate such invariance.
   
   Changes:
   - Introduce DataProducer to serve as a base class for Tensor in tensor 
expressions.
   - Migrate use of Call::Halide to ProducerLoad
   - Migrate the other usages of Calls.
   
   We will also create follow-up PRs to migrate the remaining two DSL related 
IR nodes(Realize/Provide)
   to use the DataProducer.
   


----------------------------------------------------------------
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.

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


Reply via email to