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
