[quote="merrymercy, post:37, topic:7872"]
I mean the original TE is a declarative language so it can know all
transformation before it starts to generate low-level AST. But the new schedule
primitives are done imperatively. In the original TE, we can share some
analysis results (e.g. dependency analysis), so it is expected to be faster.
[/quote]
@merrymercy Good question! Here's an example of TIR's schedule.
```python
s = tir.create_schedule(original_func)
update = s.get_block("C")
i, j, k = s.get_axes(update)
i_o, i_i = s.split(i, bn)
j_o, j_i = s.split(j, bn)
k_o, k_i = s.split(k, 4)
s.reorder(i_o, j_o, k_o, k_i, i_i, j_i)
```
TIR's schedule is not totally stateless. Scope info, dependency graph info is
actively maintained during the scheduling process in class Schedule. We don't
calculate them each time we apply a new primitive. After lowering to TIR
without blocks, we don't maintain these info any more since it is not
schedulable.
All in all, it is good to run the benchmark to compare them in practice. I hope
I understand your question correctly. :smile:
---
[Visit
Topic](https://discuss.tvm.apache.org/t/rfc-tensorir-a-schedulable-ir-for-tvm/7872/38)
to respond.
You are receiving this because you enabled mailing list mode.
To unsubscribe from these emails, [click
here](https://discuss.tvm.apache.org/email/unsubscribe/010365ba77175ff89f5b27d2ef08cfa25d6925e8d1de22308415b0f0a328715e).