You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: documentation/docs/scheduling.md
+21Lines changed: 21 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -46,6 +46,15 @@ for (int32_t i = 0; i < A1_dimension; i++) {
46
46
}
47
47
```
48
48
49
+
# Fuse
50
+
51
+
The `fuse(i, j, f)` transformation takes in two index variables `i` and `j`, where `j` is directly nested under `i`, and collapses them into a fused index variable `f` that iterates over the product of the coordinates `i` and `j`.
52
+
53
+
For the SpMV example, we could have:
54
+
```c++
55
+
stmt = stmt.fuse(i, j, IndexVar("f"));
56
+
```
57
+
49
58
# Split
50
59
51
60
The `split(i, i0, i1, splitFactor)` transformation splits (strip-mines) an index variable `i` into two nested index variables `i0` and `i1`. The size of the inner index variable `i1` is then held constant at `splitFactor`, which must be a positive integer.
The `reorder(vars)` transformation takes in a new ordering for a set of index variables in the expression that are directly nested in the iteration order.
@@ -86,5 +99,13 @@ for (int32_t jA = A2_pos[iA]; jA < A2_pos[(iA + 1)]; jA++) {
0 commit comments