`PassUpDomain` can also be conservative in some cases. This can be illustrated
with the following test case.
```
import tvm
import numpy as np
M = 64
N = 64
B = tvm.compute((M, N), lambda i, j: i+j, name='B')
C = tvm.compute(
(M, N),
lambda i, j: B[i,j],
name='C'
)
s = tvm.create_schedule(C.op)
all = s[C].fuse(C.op.axis[0], C.op.axis[1])
i, j = s[C].split(all, nparts=512)
s[B].compute_at(s[C], i)
print(tvm.lower(s, [C], simple_mode=True))
```
Output
```
// attr [B] storage_scope = "global"
allocate B[int32 * 4096]
produce C {
for (i.j.fused.outer, 0, 512) {
produce B {
for (i, 0, 64) {
for (j, 0, 64) {
B[((i*64) + j)] = (i + j)
}
}
}
for (i.j.fused.inner, 0, 8) {
C[((i.j.fused.outer*8) + i.j.fused.inner)] = B[((i.j.fused.outer*8) +
i.j.fused.inner)]
}
}
}
```
Note that whole `B` is realized although it is at the loop `i`, not at the root.
This also affects the Tensorise feature, which uses the same `PassUpDomain()`.
See the discussion
[here](https://discuss.tvm.ai/t/tensorize-which-use-case-is-correct/2140/4?u=yuanlin).
---
[Visit
Topic](https://discuss.tvm.ai/t/discuss-contributing-new-docs-for-inferbound/2151/9)
to respond.
You are receiving this because you enabled mailing list mode.
To unsubscribe from these emails, [click
here](https://discuss.tvm.ai/email/unsubscribe/0cafcf280eb1c3e42b2a0819e26ebdbde13fffe813de97a244cd3e8d5728f9cc).
Tianqi Chen, UW, Seattle, WA, 98105, United States
http://tracking.discuss.tvm.ai/tracking/unsubscribe?msgid=FFulO36TMFrUPXRm5470Sg2