tvm-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yuan Lin via TVM Discuss <nore...@discuss.tvm.ai>
Subject [TVM Discuss] [Development] [DISCUSS] Contributing new docs for InferBound
Date Fri, 12 Apr 2019 05:07:44 GMT


`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
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message