[LLVMdev] Scheduler Roadmap
dag at cray.com
dag at cray.com
Wed May 9 08:34:07 PDT 2012
Andrew Trick <atrick at apple.com> writes:
>> When I asked about enhancing scheduler heuristics a month or so ago, I
>> got a response about a MachineInstr scheduler and that that was the way
>> of the LLVM future. Is that so? Is the ScheduleDAG going away?
>
> You sent a lengthy RFC on Apr 20 that demonstrated you aren't
> following developments on trunk. That's perfectly fine, but if you
> want to use the new scheduler before it is mature, you'll need to
> follow trunk.
Ok, but that doesn't answer the question. Is SchedulerDAG going away?
If so, what's the timeframe for that? 3.2?
> Feel free to use the patch and send your thanks to Hal. It doesn't
> serve any purpose to mainline a partial solution only to replace it
> before it can ever be enabled by default, which would require a major
> performance investigation and introduces a huge risk (AliasAnalysis in
> CodeGen has not be well tested).
Er, but as I understand it the MachineInstr scheduler will also use
alias analysis.
>> So we are in a quandry. Do we continue our ScheduleDAG enhancements or
>> do we wait for a MachineInstr scheduler? Will we have to throw away
>> work on ScheduleDAG schedulers?
>
> If you're basing development on anything other than today's trunk,
> then please continue working on the SelectionDag scheduler.
But is that going to be throw away work? That's what we need to
understand.
> Either way, you won't need to throw much away. Target-specific
> heuristics should be easy to transfer to an MI ScheduleDag from an SD
> ScheduleDAG. ScheduleDAG doesn't change.
Ok, if that's the case it will help. But we also need the flexibility
provided by Hal's patch. I see that there is some work in that area in
the MachineInstr scheduler. A timeline would be help as to when you
expect this all to be ready.
>> Is there a roadmap for the scheduler? When should we expect a
>> MachineInstr scheduler to be usable? Can it be backported to 3.1?
>
> Only use MachineInstr scheduler now if it solves a pressing problem
> for you. If you need it in 3.1, then develop your own MachineInstr
> scheduler using the trunk implementation as a helpful reference.
>
> If you're developing based on 3.1, don't expect to upstream changes.
Again, this doesn't answer the questions:
- What's the expected release time for the new schedueler? 3.2?
- How difficult do you expect a backport to 3.1 to be? We have to work
from 3.1. Trunk is too buggy.
>> In general, it would be very helpful for folks to post about major
>> architectural changes like this before work begins so the rest of us can
>> plan our work. After all, we are likely to run into the same problems
>> that need solutions. As it is, it gets pretty frustrating to do a bunch
>> of work in the current release only to have to throw it away because
>> someone else did something different.
>
> There's a difference between having an intention to replace the
> scheduler (for over a year now) and planning the work.
Ok, but I don't recall any post about replacing the scheduler. If there
was I missed it. That's easy to do on a list with hundreds of messages
a day. It would be helpful to have a roadmap page on the LLVM web site
to call attention to decisions like this. Such a page could be updated
as timelines become firmer.
> The actual planning coincided nicely with your RFC, providing a good
> opportunity to air it on llvm-dev.
I'm not sure what you mean by "planning." Do you mean design work? I
think that's quite different from a roadmap with timelines. It's really
the former that us non-Apple people need to have to effectively plan our
work. The last thing we want to do is duplicate what's already planned
to happen.
-Dave
More information about the llvm-dev
mailing list