Hi,

I had problems that sound very similar to your case just a couple days ago. Did 
you happen to have to write a module yourself? or did you have to call « 
schedule » inside your module in order to tick your own clock?

Thanks,
Timothy Chong
Boston University


> Le Feb 10, 2016 à 1:31 PM, Felipe Rocha da Rosa <[email protected]> 
> a écrit :
> 
> Hi!
> 
> I'm trying to execute several slightly different executions of the same 
> application using the Detailed (DerivO3CPU) CPU mode and compare then. For 
> the purpose, my idea was executing the application and create a checkpoint at 
> the end. However, the checkpoint is never complete. I trace the cause to the 
> drain function in gem5-stable/src/python/m5/simulate.py, where the simulator 
> is called again and so remaining in the loop forever. My question is if I can 
> comment/change this line and do not perform the drain() without changing the 
> final results.
> 
> 
> def drain(root):
>     # Try to drain all objects. Draining might not be completed unless
>     # all objects return that they are drained on the first call. This
>     # is because as objects drain they may cause other objects to no
>     # longer be drained.
>     def _drain():
>         all_drained = False
>         dm = internal.drain.createDrainManager()
>         unready_objs = sum(obj.drain(dm) for obj in root.descendants())
>         # If we've got some objects that can't drain immediately, then 
> simulate
>         if unready_objs > 0:
>             dm.setCount(unready_objs)
>             #WARNING: if a valid exit event occurs while draining, it will not
>             # get returned to the user script
>             exit_event = simulate()
>             while exit_event.getCause() != 'Finished drain':
>                 exit_event = simulate()
>         else:
>             all_drained = True
>         internal.drain.cleanupDrainManager(dm)
>         return all_drained
> 
>     all_drained = _drain()
>     while (not all_drained):
>         all_drained = _drain()
> 
> def checkpoint(dir):
>     root = objects.Root.getInstance()
>     if not isinstance(root, objects.Root):
>         raise TypeError, "Checkpoint must be called on a root object."
>     drain(root)
>     memWriteback(root)
>     print "Writing checkpoint"
>     internal.core.serializeAll(dir)
>     resume(root)
> 
> Command:
> ./build/ARM/gem5.opt ./configs/example/se.py  -c queens -o 10 
> --cpu-type=detailed --caches --l1i_size=32kB --l1i_assoc=4 --l1d_size=32kB 
> --l1d_assoc=4  --l2_size=512kB --l2_assoc=8 --checkpoint-at-end
> 
> Thanks in advance!
> 
> Best regards, 
> Felipe Rocha da Rosa
> _______________________________________________
> gem5-users mailing list
> [email protected] <mailto:[email protected]>
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users 
> <http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to