Re: [Gems-users] Question about warm application in Simics


Date: Wed, 22 Mar 2006 16:58:01 -0500
From: Liping Xue <lxue@xxxxxxxxxxx>
Subject: Re: [Gems-users] Question about warm application in Simics
Liping,

Liping Xue wrote:

Hi, I have a question about warm application in Simics.
In the ISCA tutorial about gems, they use "Barnes" as a example.
It said that to warm up application in Simics, in the console window, using
--------------------------------------------------------------------------------------
*./BARNES < input-warm*
After this, write checkpoint "barnes-cold-16p.check"
and they use the second run to warm up cache:
the command is:
*./BARNES < input-run >output; magic_call break
--------------------------------------------------------------------------------------------------------

*I have several questions about the above procedure:
1. What is the difference between parameter "input-warm" and "input-run"? Can I use a small size of "input-warm" and a big size of "input-output"?

That is OK. You can use a small input set for "input-warm" and the big input for "input-run". You just need to have memories/caches warmed up to avoid cold start misses.


2. What is the meaning of "magic_call break", I typed it in the console window, but it says that "command not found".

You should consult the Simics manual on how to use magic break points. You would like to have a binary (maybe in /bin) that calls the Simics magic break function. Alternatively, you can add a magic break call (and include the corresponding .h file) in your source code and recompile.


3. What's the purpose of "warm-checkpoint"? How to get a "warm-checkpoint"? (I know in the slides it give the example to use the "go.simics" script, but when I use it, it gives me so many errors).

The warm checkpoint should have warmed up caches. After you run for the warmup interval, you should save cache data using something like:

ruby0.save-caches CHECKPOINT_NAME.caches.gz

(in addition to saving the checkpoint using the simics command "write-configuration"

Then when you load your checkpoint for your real run, you should have ruby warm up caches using:

ruby0.load-caches CHECKPOINT_NAME.caches.gz

And then proceed to clear ruby stats and start the simulation.

I hope that helps.

-Alaa


Hi, Alaa,
 Thanks for your replay, it really helpful. But I am still have some questions.
The following is my understanding of your reply, please correct me if I made a mistake.
For each application, we need "three runs".
1) first run  (Only need Simics to simulation)
----------------------------------------------------------------------------------------
 * The Console command: ./BARNES < input-warm *
  write-configuration CHKPT_DIR/barnes-cold-16p.check  (generate cold checkpoint)
-----------------------------------------------------------------------------------------

2) second run  (Need Simics+Ruby)
-------------------------------------------------------------------------------------------
load "cold" checkpoint generated in the first run,
set up ruby
  *The Console command: ./BARNES < input-warm *

  ruby0.save-caches barnes.caches.gz  (generate warmup cache file)
   write-configuration CHKPT_DIR/barnes-warm-16p.check (generate warm checkpoint)
----------------------------------------------------------------------------------------------
3) third run (Real simulation)
----------------------------------------------------------------------------------------------
load barnes-warm-16p.check
load barnes.cache.gz
clear ruby stats
start simulcation
*The Console Commands:./BARNES < input-run > output; magic_call break
*------------------------------------------------------------------------------------------------

For the above process, why we need "magic_call break" only in the third run. What is the purpose of this
command? I can not find a executable named "magic_call" in my machine. But I find a file named "magic_call.c" in
~/ruby/simics. It is seems a file provided by Ruby designer.

Thanks for your help!

-- Liping



[← Prev in Thread] Current Thread [Next in Thread→]