it seems you need to call
lower_call
twice (one inTETranslator
and another inScheduleGetter
). In this case, seems like you still select the schedule inTETranslator
So yes, I do call it twice and really this is a consequence of ‘lower_call’ also probably needing a similar refactor. What I’m actually doing is ignoring the schedule information in TETranslator even though the lower_call does provide it. That way the output of the TETranslator would just be a TE Compute DAG rather than a TE Schedule. I really like that Ansor acts directly on TE rather than Relay and think that’s a pattern to work towards going forward with scheduling optimizations.
it sounds weird to select a compute by referring to the quality of its corresponding TOPI schedule which you won’t apply.
I agree with this. Perhaps we would need to provide TETranslator with a ‘StrategySelector’ that could be customized? For my envisioned use-case this happens to not be an issue, but I’d be interested in hearing opinions.
In summary, I agree that there’s probably some distance to go in completing this refactor to expose something truly flexible. Once I get some more view/opinions on the best direction to take, I can make a start on improving the WIP PR.