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
|