Hello,

I notice that the plan to support `compute_at()` on Tir is on this issue 
[https://github.com/apache/tvm/issues/7527#](https://Issue) 

The `compute_at()` API in TVM schedules primitives enables the combination of 
separate stages of computation when possible. This operation would bring 
performance gain or other potential optimization opportunities. For example, 
two loops with the exact same looping range can be combined into one loop by 
`compute_at()`.

```
A = te.placeholder((m,), name="A")
B = te.compute((m,), lambda i: A[i] + 1, name="B")
C = te.compute((m,), lambda i: B[i] * 2, name="C")

s = te.create_schedule(C.op)
s[B].compute_at(s[C], C.op.axis[0])
```

Similarly, when defining computations using tir.Block, we notice that there are 
situations where combining Blocks are beneficial. For example, 

```
for i, j in tir.grid(128, 128):
     with tir.block([128, 128], "A_Block") as [vi, vj]:
         A[vi, vj] = tir.float32(0)
for i, j in tir.grid(128, 128):
     with tir.block([128, 128], "B_Block") as [vi, vj]:
         B[vi, vj] = A[vi, vj]
```

There are two separate blocks in the above example. We would like to know if 
`compute_at()` will support combining two blocks into one block in the future? 
If so, what are the conditions on those two blocks needed to be satisfied to 
enable ` compute_at()` performing the combination?





---
[Visit 
Topic](https://discuss.tvm.apache.org/t/combining-separate-tir-block-using-compute-at/10113/1)
 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/4d9d82da67ee3b42096374e791cafa441e76820ec6653341ed8049bdfc41dff8).

Reply via email to