[quote="xiacijie, post:9, topic:10113"]
I am confused when we already declare a 128 * 128 loop outer, we still have to
put `[128, 128]` as a parameter when using `tir.block`
[/quote]
The syntax below describes the signature of a block:
```python
with tir.block([128, 128], "init") as [vi, vj]:
```
TensorIR is designed with the "block isolation" philosophy, and a block here
describes a chunk of computation without needing context. When desugared, your
particular example above expands to:
```python
for i in range(0, 128):
for j in range(0, 128):
with tir.block([128, 128], "init") as [vi, vj]:
# vi's domain is [0, 128), and it is data-parallel
# vj's domain is [0, 128), and it is data-parallel
tir.bind(vi, i) # binds `i` to `vi`
tir.bind(vi, j) # binds `j` to `vj`
tir.reads([]) # reads nothing
tir.writes(C[vi : vi + 1, vj : vj + 1])
C[vi, vj] = 0
```
The property of the block is that:
* Instances of block execution are described with pair `(vi, vj)`, where `vi,
vj \in [0, 128)`.
* For a certain instance of a block `(vi, vj)`, it doesn't read anything, and
writes to a buffer region `C[vi : vi + 1, vj : vj + 1]`
* `vi, vj` are both data parallel, which means block instances `(vi, vj)` can
be executed in arbitrary orders or in parallel
Block bindings (`tir.bind`) describe how those loops "drags" the block
execution. It is possible that we execute in another order:
```python
for i in range(0, 128):
for j in range(0, 128):
with tir.block([128, 128], "init") as [vi, vj]:
tir.bind(vi, 127 - i) # binds `127 - i` to `vi`
tir.bind(vi, 127 - j) # binds `127 - j` to `vj`
```
In short, in TensorIR, we decouple "in which order loop runs" and "the
computation in the block body". Therefore, over-complete information may occur
(as you described) when the binding is trivial, and we provide syntactic sugars
for this case.
---
[Visit
Topic](https://discuss.tvm.apache.org/t/combining-separate-tir-block-using-compute-at/10113/11)
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/52f01f94c94b2908e2847278951e45a9464a2393fdd3cac14a8d9b38c5609d6d).