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