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

Reply via email to