Nate,

Sorry I didn't reply sooner. I just saw your email today when I was
searching through this thread. I must have missed it.

> Since this isn't likely to be the case any time soon, I don't think we
> should spend time trying to optimize for this.  For the next several
> years, I'm pretty sure we'll want to simulate either a ton of simple
> cores on a modest number of real cores, or simulate, in more detail,
> more closely matched guest/host systems.  There's also caches that
> should increase cycles.
>
> Anyway, we won't know how things will perform until we try.
>
>   

Since a low amount of thread blocks implies a low amount of mandatory
context switches, and vice versa, solving one should pretty much solve
the other. So both problems have the same solutions.

>> It may be easier to try to schedule a phone call or something like
>> that.  If you're really committed to making this happen, I'm willing
>> to spend some time walking you through code.
>>
>>   
First, let me get a clearer picture of which code changes will be
required. I'll email my ideas and after some revision I would appreciate
it if you walked me through some of the code over the phone (do you Skype?).

As far as me being committed to making this happen. I would like to but
I can't say for sure that I will have enough time (finishing my thesis
is still my primary objective). However I'm pretty sure that
implementing the code to parallelize m5 safely and generically will be
beneficial to my research and require less time, in the long run, than
quick and dirty solutions. So unless some major issue emerges I plan to
get the job done.

I already have an idea of how m5 could safely simulate disjoint
collections of SimObjects of a configuration on different eventqueues in
parallel. The guarantee m5 would need to have, to let two collections
simulate out of sync safely, is that objects from different collections
only interact through events that can only affect the targeted object.
We would then have disjoint collections of SimObjects where the only
references an object from one collection can have to objects from
another are those of a safe type which only allow event communication.
The python initialization code could then check the SimObjects and their
references and partition the SimObjects in such collections. It could
then automatically assign eventqueues or check if the existing
assignment of eventqueues is safe. If key SimObjects in m5 are then
modified to interact through the safe type, large sections of the
simulator could safely run concurrently. Memory ports would be good
candidates for this.

Such a safe, generic type could be implemented using templates so it
wouldn't just be a interface with one method "triggerEvent(Event *e)".
Thus still allowing event type checking . I need to figure out a few
more things and then I'll email some more concrete pseudocode.

Stijn
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to