Hi Pei, 

IMO, after InferRootBound step, the root iter vars of the current producer 
stage may change, because all the consumers requested a different range of each 
dim.

For example, here we split the axis of **z_global**.
```
import tvm
from tvm import te

n = 16
factor = 3

x = te.placeholder((n,), name="vx")
y = te.placeholder((n,), name="vy")
z = te.compute(x.shape, lambda i: x[i] + y[i], name="z")
s = te.create_schedule(z.op)
z_global = s.cache_write(z, "global")
_, _ = s[z_global].split(z_global.op.axis[0], factor=factor)

tvm.lower(s, [x, y, z])
```
```
# IR
// attr [compute(z.global, body=[(vx[i.c] + vy[i.c])], axis=[iter_var(i.c, 
range(min=0, ext=16))], reduce_axis=[], tag=, attrs={})] realize_scope = 
"global"
producer_realize z.global([0, 16]) {
  for (i.c.outer, 0, 6) {
    for (i.c.inner, 0, 3) {
      if (tir.likely(((i.c.inner + (i.c.outer*3)) < 16))) {
        z.global[(i.c.inner + (i.c.outer*3))] =(vx[(i.c.inner + (i.c.outer*3))] 
+ vy[(i.c.inner + (i.c.outer*3))])
      }
    }
  }
  // attr [compute(z, body=[(vx[i] + vy[i])], axis=[iter_var(i, range(min=0, 
ext=16))], reduce_axis=[], tag=, attrs={})] realize_scope = ""
  producer_realize z([0, 16]) {
    for (i, 0, 16) {
      z[i] =z.global[i]
    }
  }
}
```
As we can see, for stage **z.global**, the consumer **z** requests the whole 
range in the dim i. Imaging the complicated cases (compute_at + split), 
different consumers may request different ranges per dim. 
> https://github.com/apache/tvm/blob/b7e0cfb6d469c3745ae2195908daadea9c64d87e/src/te/operation/compute_op.cc#L217

Then, the next step is to unite all the request bounds.
> https://github.com/apache/tvm/blob/b7e0cfb6d469c3745ae2195908daadea9c64d87e/src/te/operation/compute_op.cc#L245

For now, the range per dim of the current producer stage may change. So we need 
another step, **PassDownDomain** to propagate the bounds of root to leaf.





---
[Visit 
Topic](https://discuss.tvm.apache.org/t/why-need-passdown-domain-after-inferrootbound/9152/2)
 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/6be8bd59774e83f0945c038dab9da4e07ea695ca830f85ccd92353d4002a5f8f).

Reply via email to