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