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 of Dense 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 some kind of dynamic dependence.
   
   ## FollowFusedSplit
   
   This is mainly used in GPU cooperative fetching.
   For example we have stages: `Input -> Dense`:
   ```
               for i.0@j.0 = ... : Bind to blockIdx.x
                   for i.1@j.1 = ... : Bind to threadIdx.x
                       for i.2@j.2 = ...
                           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:
us...@infra.apache.org


Reply via email to