Checkpoint creates a checkpoint "now", passing a single value creates a checkpoint in now + that many nanoseconds, and passing two arguments creates a now+firstnumber+second number*N (where N is 0...large). Looking at this output that seems to be working.
M5 has similar magical instructions and that is how the m5 binary you're executing in the simulated program is working. Take a look at util/m5/* for some code that you can include with your program and call to create checkpoints progamatically. Ali On Thu, 7 Oct 2010 11:21:28 -0500, Lide Duan wrote: Sorry, probably I was wrong. This time, I lower the value to 500000 and issue the follows: /sbin/m5 checkpoint /sbin/m5 checkpoint 500000 ./my_alpha_program /sbin/m5 checkpoint Now I got three checkpoints as: cpt.1830187114500 cpt.1831068302000 cpt.1833296533000 However, I am still confused about the tick numbers: why are there so big gaps between them? Please comment... In particular, is there anything wrong with my entire approach? Finally, by using the above approach, I have a question regarding how to determine the ROI of a multi-threaded program. For such a workload (e.g. PARSEC, SPLASH2), we are usually interested in the parallel section. So if I need to create a checkpoint after the sequential initialization, how can I determine the # of instructions needs to be skipped (i.e. what value should be set after "m5 checkpoint", as the above)? I know Simics inserts magic instructions into the source code to pause the simulation to make checkpoints, etc. Is there any similar mechanism in M5, or should I roughly estimate this number as in above? Thank you very much! Lide On Thu, Oct 7, 2010 at 10:46 AM, Lide Duan wrote: Hi there, I am using M5 FS mode to run Alpha programs. My approach is the following: boot up the Linux using AtomicSimpleCPU, and make a checkpoint before my region of interest (ROI) of the program; Next time, restore the checkpoint initially with AtomicSimpleCPU, and then switch to TimingSimpleCPU (for warmup) and then DerivO3CPU (for actual measurement). Suppose my ROI begins after 10K instructions of my_alpha_program and the CPU frequency is 2GHz (which makes 1 cycle be 500 ticks), then my rcS file (to create checkpoint) is like the following: #!/bin/sh cd /benchmarks /sbin/m5 resetstats /sbin/m5 checkpoint 5000000 ./my_alpha_program /sbin/m5 exit In this way, the program runs correctly and the system exits normally, but the checkpoint is not created. I suspected that 10K instructions already exceeded the program length, but the checkpoint won't be created no matter what value the parameter is set to. Finally, I tried to dump a checkpoint before my_alpha_program starts and another one after it finishes: /sbin/m5 checkpoint ./my_alpha_program /sbin/m5 checkpoint now the two checkpoints are created as cpt.1830187131000 and cpt.1832925222000. We can see that the tick difference between them is much larger than 5000000, so I am confused why my ROI checkpoint cannot be created. Am I missing anything here (regarding the entire approach and the specific rcS script)?? Thanks, Lide Links: ------ [1] mailto:[email protected]
_______________________________________________ m5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
