Meng Wang <meng <at> tupleapes.com> writes:

> 
> 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 <mitch.hayenga+gem5 <at> 
gmail.com> 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 <meng <at> tupleapes.com> 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
> gem5-users <at> gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Hi Mitch and Meng,

Thanks for bringing this thread up!
I am fairly new to gem5. Please execuse me if my questions are silly. 

My questions are:
I am wondering, if we would like to find some representative points of 
program behavior, what should we do after we generate this BBV file?
Should we feed this BBV file to UCSD SimPoint? 
(http://cseweb.ucsd.edu/~calder/simpoint)
If yes, after getting the result from UCSD SimPoint, how should we execute 
those representative points on gem5? 

I saw from Mitch's reply that we can run a specific simpoint by executing:
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

however, when I studied the patch, I figured that the patch was for 
generating the BBV file, but not for resuming the simpoint. Is this 
functionality (resuming the selected simpoint) has already been shipped with 
the latest gem5-stable?

Thanks!

-Chang-Hong

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

Reply via email to