Thank you for your interest.
A1: Current op fusing is based on stage
but the critical point is fusing the injective computation. We can also inline injective computation by traverse_inline
. So there is no doubt that FuseOps works. As for the philosophy, I think there are only few changes. TIR is not only an IR but only can be a computation declaration. We provide very user-friendly API (as easy as TE) to define compute rules.
A2: TIR is a general IR which can represent almost every program. It’s really hard to schedule a general program, but we promise TIR can schedule all programs which TE can schedule.
A3: Most of the primitives are similar to the TE ones. For now, only two new primitives are decompose_reduction
and merge_reduction
A4: Upstream on Oct and Nov. Ansor supporting is WIP
I hope I can answer your question.