Open mcourteaux opened 3 months ago
Was this discussed, and if so, were there any conclusions?
I unfortunately could be there during the last dev-meeting. I don't know if it was discussed yet.
We can discuss it today, but it would tank the performance of a whole lot of existing production code by turning vector loads into vector gathers.
At the dev meeting we discussed making a target flag that changes the default
it would tank the performance of a whole lot of existing production code by turning vector loads into vector gathers.
That would potentially be a good heuristic for the Auto
strategy: does it turn load/stores into gathers/scatters. A simple TailStrategy::ShiftInwards
would not suffer from loads/stores being turned into gather/scatters.
I find myself literring my code with this directive everywhere. Now that we have it, and we all were able to use it for a while, I am tempted to argue that it should be the default. Loop partitioning is quite an extensive transformation that ...
ShiftInwards
(i.e. somemin(loop_var, image_bound - vectorsize)
) can fully disappear due to it)Auto
strategy is not smart enough yet; especially on GPU.Overall, I think that loop partitioning can be beneficial, but should be a conscious choice of the developer of the pipeline. My personal preference would go to loop partitioning being disabled by default; but as an alternative, I can see a lot of benefit into making the
Auto
strategy a lot smarter into deciding when to, and when not (which would change it from actually beingEverywherePossible
).Opinions? Perhaps something for the dev-meeting?