Dear Community:

TVM makes use of HalideIR as our low-level IR structure, and it has served us 
well. One of the main gains we get is the integer simplification infrastructure 
provided by HalideIR. As the project moves forward, we start to introduce our 
own integer simplification infra to tackle new problems, and as of now, we 
start to use the new integer analysis infra in TVM. 

We also see increasing needs to evolve our own version of low-level IRs. Here 
is a brief summary of needs:

- Introducing new IR nodes to enhance the analysis required by TVM (Reduce, 
ConstraintHints)
- Different dialect and intrinsics support, mainly in the case of pragma, and 
region annotations, both of which will make the IR more coupled with the 
project.
    - Examples include dma_copy regions, thread bindings, and bound hints.
 - Unification of the object protocol with the rest of the project, in 
particular, runtime::Object, Node, and NDArray.
- General refactoring concerns to reduce duplicated objects(Var, Range)
- Long term: unification of IR infra, in particular between low-level IR and 
high-level IRs(relay).

These technical needs will require us to evolve the IR more frequently, and it 
starts to make sense to build and evolve our own version of low-level IR.

Action Items
- [ ] Create include/tvm/node to introduce the node infra
    - As we start to unify node with objects, we might consider moving certain 
things to runtime.
- [ ] Create include/tvm/ir folder to introduce IR structures, 
    - The initial structure will directly reflect the structures in HalideIR 
and new additions like Reduce with clear acknowledgment to the original design 
(Halide).
- Start to evolve new IRs, refactoring and remove duplicated objects and 
further changes as mentioned above.
 
Please share your thoughts and suggestions about the proposal

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/dmlc/tvm/issues/3474

Reply via email to