[LLVMdev] Scheduler Roadmap

dag at cray.com dag at cray.com
Fri May 11 10:13:43 PDT 2012


Sergei Larin <slarin at codeaurora.org> writes:

>   - We do need to have a way to assign bundles much earlier than we do now.

Yeah, I can imagine why this would be useful.

> And it needs to be intertwined with scheduling (Bundler currently reuses a
> good chunk of scheduler infrastructure). 

Just to clarify, is the need due to the current bundling implementation
of reusing scheduler infrastructure or is there a more fundamental
reason the two should be tied together?  I can imagine some advantages
of fusing the two but I'm no VLIW expert.

> It is also obvious that it will have adverse effect on all the
> downstream passes. 

How so?  Isn't the bundle representation supposed to be fairly
transparent to passes that don't care about it?

> It is further insulting due to the fact that bundling is trivial to do
> during scheduling, but it goes hard against the original assumptions
> made elsewhere. 

Can you explain more about this?

> Re-bundling is also a distinct task that might need to be addressed in
> this context.

Rebundling is certainly useful.  I'm not sure what you mean by "in this
context."

>   - We do need to have at least a distant plan for global scheduling. 

Yes, definitely!

> BB scope is nice and manageable, but I can easily get several percent
> of "missed" performance by simply implementing a pull-up pass at the
> very end of code generation... meaning multiple opportunities were
> lost earlier.  Current way to express and maintain state needed for
> global scheduling remains to be improved.

We could also use a global scheduler in the medium-term though it's not
absolutely critical.  A nice clean infrastructure to support global
scheduling with multiple heuristics, etc. would be very valuable.  It
would also be a lot of work.  :)

>   - SW pipelining and scheduler interaction with it. When (not if:) we will
> have a robust SW pipeliner it will likely to take place before first
> scheduling pass, and we do not want to "undo" some decision made there.

Right.  We (the LLVM community) will need ways to mark regions "don't
schedule."

                              -Dave



More information about the llvm-dev mailing list