Hal Finkel via llvm-dev
2015-Nov-09 18:31 UTC
[llvm-dev] Is there a way to convert between SchedMachineModel and Itineraries?
----- Original Message -----> From: "Rail Shafigulin via llvm-dev" <llvm-dev at lists.llvm.org> > To: "llvm-dev" <llvm-dev at lists.llvm.org> > Sent: Monday, November 9, 2015 10:09:07 AM > Subject: Re: [llvm-dev] Is there a way to convert between SchedMachineModel and Itineraries? > > > Anybody? Does anyone at all know how to do it?There is no direct conversion. Although they are similar models, they are different. The strength of Itineraries lies in modeling pipelines with complex hazards (especially those that are not fully pipelined, or have other similar ordering constraints). SchedMachineModel can't do that. Unless you need to represent those kinds of constraints, SchedMachineModel is preferred. We'd like to move toward using SchedMachineModel for most things. -Hal> > On Friday, November 6, 2015, Rail Shafigulin < rail at esenciatech.com > > wrote: > > > > Is there a way to convert between SchedMachineModel and Itineraries? > > > I was trying to write a very simple VLIW packetizer (Hexagon was my > starting point). It turns out that current DFAPacketizer is using > itineraries, but my schedule is based on SchedMachineModel (I was > recommended to use it since the itineraries are being phased out). I > was wondering if there is an automated tool that would convert from > SchedMcahineModel to Itinerary based mode? As far as I understand > they both convey the same information so there should be a way to > convert between them. > > -- > > > > > Rail Shafigulin > Software Engineer > Esencia Technologies > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-- Hal Finkel Assistant Computational Scientist Leadership Computing Facility Argonne National Laboratory
Rail Shafigulin via llvm-dev
2015-Nov-09 18:49 UTC
[llvm-dev] Is there a way to convert between SchedMachineModel and Itineraries?
On Mon, Nov 9, 2015 at 10:31 AM, Hal Finkel <hfinkel at anl.gov> wrote:> ----- Original Message ----- > > From: "Rail Shafigulin via llvm-dev" <llvm-dev at lists.llvm.org> > > To: "llvm-dev" <llvm-dev at lists.llvm.org> > > Sent: Monday, November 9, 2015 10:09:07 AM > > Subject: Re: [llvm-dev] Is there a way to convert between > SchedMachineModel and Itineraries? > > > > > > Anybody? Does anyone at all know how to do it? > > There is no direct conversion. Although they are similar models, they are > different. The strength of Itineraries lies in modeling pipelines with > complex hazards (especially those that are not fully pipelined, or have > other similar ordering constraints). SchedMachineModel can't do that. > Unless you need to represent those kinds of constraints, SchedMachineModel > is preferred. We'd like to move toward using SchedMachineModel for most > things. > > -Hal >Thanks for the reply Hal. I thought my thread was dead. I was recommended to use SchedMachineModel for my VLIW, which is what I've done (it took me a month to learn tblgen and write the scheduling model and one more month do get my head around LLVM. My experience with compilers is limited to a class I took in college a year ago). The scheduling part seems to be working (at least this is what my limited testing shows). However current DFAPacketizer is based on itineraries (DFAPacketizer.cpp, lines 66-73). I was hoping there is a way to convert between these two representations so that I wouldn't have to rewrite the packetizer. Unfortunately my experience with compilers is very limited and I still have a lot to learn. Right now I have two options. In both of the cases there are significant drawbacks. 1. Rewrite the scheduling model using itineraries. Unfortunately there is very little help available on this topic, I even asked on the IRC channel and nobody seems to know how it is done, since everyone is moving towards the SchedMachineModel. 2. Write a new packetizer which will use the SchedMachineModel, however, as I said before, I have a very limited experience with compilers and this looks like some major work. I'm not afraid of it, it is just there is not much information and help available. I would greatly appreciate any help on this Rail -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151109/25eef072/attachment.html>
Andrew Trick via llvm-dev
2015-Nov-09 20:52 UTC
[llvm-dev] Is there a way to convert between SchedMachineModel and Itineraries?
> On Nov 9, 2015, at 10:49 AM, Rail Shafigulin <rail at esenciatech.com> wrote: > > On Mon, Nov 9, 2015 at 10:31 AM, Hal Finkel <hfinkel at anl.gov <mailto:hfinkel at anl.gov>> wrote: > ----- Original Message ----- > > From: "Rail Shafigulin via llvm-dev" <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> > > To: "llvm-dev" <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> > > Sent: Monday, November 9, 2015 10:09:07 AM > > Subject: Re: [llvm-dev] Is there a way to convert between SchedMachineModel and Itineraries? > > > > > > Anybody? Does anyone at all know how to do it? > > There is no direct conversion. Although they are similar models, they are different. The strength of Itineraries lies in modeling pipelines with complex hazards (especially those that are not fully pipelined, or have other similar ordering constraints). SchedMachineModel can't do that. Unless you need to represent those kinds of constraints, SchedMachineModel is preferred. We'd like to move toward using SchedMachineModel for most things. > > -Hal > > Thanks for the reply Hal. I thought my thread was dead. > > I was recommended to use SchedMachineModel for my VLIW, which is what I've done (it took me a month to learn tblgen and write the scheduling model and one more month do get my head around LLVM. My experience with compilers is limited to a class I took in college a year ago). The scheduling part seems to be working (at least this is what my limited testing shows). However current DFAPacketizer is based on itineraries (DFAPacketizer.cpp, lines 66-73). I was hoping there is a way to convert between these two representations so that I wouldn't have to rewrite the packetizer. Unfortunately my experience with compilers is very limited and I still have a lot to learn. > > Right now I have two options. In both of the cases there are significant drawbacks. > 1. Rewrite the scheduling model using itineraries. Unfortunately there is very little help available on this topic, I even asked on the IRC channel and nobody seems to know how it is done, since everyone is moving towards the SchedMachineModel.Not many people work with either the machine model or itineraries. Be careful! I think the DFAPacketizer will only be effective on a very simple itinerary (which could easily have been expressed in the new machine model instead). I’ve heard stories of it “blowing up” on large itineraries. I have no direct experience with it.> 2. Write a new packetizer which will use the SchedMachineModel, however, as I said before, I have a very limited experience with compilers and this looks like some major work. I'm not afraid of it, it is just there is not much information and help available.This looks like an opportunity for you to learn something interesting. Generating a state machine from a set of constraints is fairly straightforward. The only difficultly lies in limiting the total number of states so you don’t end up with a giant table. If you were able to express those constraints in the machine model they must not be too complicated. If your state machine is really just modeling the number of functional units that can be used by a given VLIW bundle, then you don’t need to generate a state machine at all. All you need are counters. MachineScheduler can do this for you. It already has some support for scheduling instruction groups for a simple in-order machine (without plugging in your own scheduler at all). Currently, this isn’t fully implemented—it isn’t modeling multiple functional units per cycle. But that would be *very* easy to fix and is something I could help with. It’s just that no one has asked for it. Andy> > I would greatly appreciate any help on this > > Rail-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151109/47c9665c/attachment.html>
Reasonably Related Threads
- Is there a way to convert between SchedMachineModel and Itineraries?
- Is there a way to convert between SchedMachineModel and Itineraries?
- DFAPacketizer, Scheduling and LoadLatency
- How to get started with instruction scheduling? Advice needed.
- How to get started with instruction scheduling? Advice needed.