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
