jcf94 edited a comment on pull request #6142:
URL: https://github.com/apache/incubator-tvm/pull/6142#issuecomment-664167975
Hi, all. This is an student intern of us, who is now helping us with the
Ansor upstreaming. 😄
The follow_split & follow_fused_split are two steps extent to
`te.Stage.Split`. Each of these will collect information from the former
history and process the split.
## FollowSplit
This is mainly used in stage fusion using compute at.
For example we have stages: `Dense -> Relu`:
We've already done some tiling on Relu, and we would like to compute the
Dense at the Relu stage. FollowSplit step is used to keep the outer most few
iterators the same as the Relu stage.
Since in Ansor, the split factor of Relu stage may be left as a None
placeholder to be filled by search policy, by this way we can easily write a
schedule with dynamic dependent.
## FollowFusedSplit
This is mainly used in GPU cooperative fetching.
For example we have stages: `Input -> Dense`:
```
for [email protected] = ... : Bind to blockIdx.x
for [email protected] = ... : Bind to threadIdx.x
for [email protected] = ...
Input_shared = Input ...
for k = ...
Dense = ...
```
In Ansor's search policy, the outer stage has been tiled. The the
threadIdx.x axis is binded to a iterator generated by split & fuse step. We use
this step to compute out the final extent of the threadIdx.x binded iterator,
to make sure that Input_shared stage can split out a iterator with same extent.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]