Hey,

Take this with a grain of salt since I am not an official voice of the people 
who developed those things.

The `compute` should be to register the naive/non-optimize/non-hwdependent 
computation rule of a Relay operator. You can think about it as a golden 
reference.

Now, there can be many algorithmic implementations of this computation 
especially for different HW backends. These different implementations are 
normally called `schedules` and all `schedules` were gathered into TOPI. 

At least to my understanding, a `strategy` is something somewhat more higher 
order than a `schedule` but its still describes and implementation variant of a 
`compute`. There could be moments when given the parameters of the operator and 
your HW, you can already decide on an algorithmic `strategy` and tune (or used 
an already optimized schedule) of the appropriate strategy.

If I had to give an example (warning I am not sure it's like this in the repo):
* Compute == the naive conv2d implementation
* Strategy == {winograd, direct convolution, im2col transformation} 
  * although all of these will give the same nummerical value, they have 
considerable difference in their implementations
* Schedule == {winograd({target_0, target_1}), direct 
convolution({target_0,...,target_n-1}), im2col({target_3, target_n})}
  * as you can see not all targets have `schedule` (template) implementations 
for each of the different `strategies`

Hope this helps





---
[Visit 
Topic](https://discuss.tvm.apache.org/t/hi-does-anyone-know-the-difference-between-reg-register-strategy-and-reg-register-compute/11452/2)
 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/2779ae8e817fa2d924c3e26383310101da17e1baab02937f412499ec10308dfc).

Reply via email to