Thanks Mitch! Your script does a great favor for me. I think It's very helpful 
to anyone who wants to reduce the simulation runtime or make the interval 
analysis more efficiently. Thanks again.

Meng
On Apr 5, 2013, at 6:54 PM, Mitch Hayenga <[email protected]> wrote:

> Hi Meng,
> 
> I'm CC'ing the mailing list in case anyone else has interest in running with 
> the simpoint patch.
> 
> This part of the patch was coded by Ali I think.  I originally wrote the 
> profiling bit that generated the bbv file. I use this current patch with with 
> my own custom se.py script.  I've linked it as an example of how to use this 
> patch (though its not greatly commented).
> 
> A version of my config script can be found at 
> http://www.ece.wisc.edu/~hayenga/mitch_config.tgz. I just didn't want to go 
> through the trouble of hacking this into the main gem5 se.py script. It has a 
> few modes 1) Running normally 2) Generating the BBV data 3) Swapping between 
> detailed/atomic simulation at simpoints 4) Generating checkpoints at 
> simpoints 5) Simulating a single simpoint (restored from a checkpoint) with a 
> detailed CPU.
> 
> Usage:
> 1) General running of benchmarks (works like regular se.py, just fewer 
> options)
> ./build/ARM/gem5.opt configs/pharm/se2.py --cfg=configs/pharm/nehalem.cfg 
> --cmd=../tests/libquantum_base.armv7a-O3-vfpv3d16-vect -o "15 2"
> 
> 2) Running a benchmark dropping simpoint info (with an interval size of 1M 
> instructions)
> ./build/ARM/gem5.opt configs/pharm/se2.py --cfg=configs/pharm/nehalem.cfg 
> --cmd=../tests/libquantum_base.armv7a-O3-vfpv3d16-vect -o "15 2"  
> --simpoint-mode=generate --simpoint-interval=1000000
> 
> 3) Running with an atomic cpu, swapping to detailed only during simpoints 
> (stats are dumped for each simpoint)
> ./build/ARM/gem5.opt configs/pharm/se2.py --cfg=configs/pharm/nehalem.cfg 
> --cmd=../tests/libquantum_base.armv7a-O3-vfpv3d16-vect -o "15 2" 
> --simpoint-mode=fastfwd --simpoint-interval=1000000 
> --simpoint-points=simpoints
> 
> 4) Generating checkpoints at every simpoint
> ./build/ARM/gem5.opt configs/pharm/se2.py --cfg=configs/pharm/nehalem.cfg 
> --cmd=../tests/libquantum_base.armv7a-O3-vfpv3d16-vect -o "15 2" 
> --simpoint-mode=checkpoint_gen --simpoint-interval=1000000 
> --simpoint-points=simpoints --checkpoint-dir=ckpt
> 
> 5) Running a specific simpoint (restored from a checkpoint)
> ./build/ARM/gem5.opt configs/pharm/se2.py --cfg=configs/pharm/nehalem.cfg 
> --cmd=../tests/libquantum_base.armv7a-O3-vfpv3d16-vect -o "15 2" 
> --simpoint-mode=checkpoint --simpoint-interval=1000000 
> --simpoint-points=simpoints --checkpoint-dir=ckpt --checkpoint-num=1
> 
> Hope this helps.
> 
> 
> On Fri, Apr 5, 2013 at 9:43 AM, Meng Wang <[email protected]> wrote:
> Hi Mitch,
> I am reading your patch for profiling simpoint 
> vector.(http://reviews.gem5.org/r/1705/) I don't understand the code snippet:
> 
> 155   
> 156   
>     // Set up instruction-count-based termination events for SimPoints
> 157   
>     // Typically, there are more than one action points.
> 158   
>     // Simulation.py is responsible to take the necessary actions upon
> 159   
>     // exitting the simulation loop.
> 160   
>     if (!p->simpoint_start_insts.empty()) {
> 161   
>         const char *cause = "simpoint starting point found";
> 162   
>         for (size_t i = 0; i < p->simpoint_start_insts.size(); ++i) {
> 163   
>             Event *event = new SimLoopExitEvent(cause, 0);
> 164   
>             comInstEventQueue[0]->schedule(event, p->simpoint_start_insts[i]);
> 165   
>         }
> 166   
>     }
> Why does exiting event has to be specified explicitly? When the binary calls 
> exit(), should gem5 terminate simulation?
> 
> Best Wishes,
> Meng Wang
> 

_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to