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]