Thanks, Ali. Is a "tick" in M5 a nanosecond (10^-9) or picosecond (10^-12)? The M5ops page says:
" checkpoint [*delay* [*period*]]: Create a checkpoint in *delay* ticks; repeat this every *period* ticks." By looking at these numbers, I think a tick is 1ps, while the argument passed to Checkpoint is 1 ns (i.e. 1000 ticks, instead of 1 tick). Am I correct? On Thu, Oct 7, 2010 at 11:37 AM, Ali Saidi <[email protected]> wrote: > 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 <[email protected]> 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 <[email protected]> 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 >> > > > > _______________________________________________ > m5-users mailing list > [email protected] > http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >
_______________________________________________ m5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
