Happy new year!
After reading the inferbound_tutorial, I’m quiet confused about the effect of the passdown domain. And I’m sorry that I didn’t get the point neither after reading the code.
If there’s a compute op in one state, we get one compute relation, such as split. Then we use the leaf nodes’ range and the relation information to compute the iter root node’s range of this state.
Why not set the leaf nodes of this state immediately, but re-compute the leaf nodes’ range according to the relation by passdown domain?
I guess, there might be a situation that the leaf nodes’ ranges are overlaped, so we need to passdown domain. Take the split node as an example.
Iter X is a split node which factor is 3, and it split to two axis(Xi in [0, 5] and Xo in [3, 6]). Then X’s range is [0, 23]. But we need to set the outer iter axis to [0, factor] and the inner iter axis to [0, ceil_div(extent, factor)]. Then the X.inner is [0, 3], X.outer is [0, 8].
But I never met such condition and I’m not sure if my guess is correct. It might be other reasons that we need to recalculate the range of the child node after infer root bound.
If there are any problems in my understanding, please feel free to point it out.
Thanks for your time!