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

Reply via email to