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