As is shown in ISCA-tutorial,I tried to warm up the cache
when the barnes benchmark was running:
1) first run
(Simics)
----------------------------------------------------------------------------------------
* The Console command:
./BARNES < input_p16.8192
2) second
run (Need
Simics+Ruby)
-------------------------------------------------------------------------------------------
load
"cold" checkpoint generated in the first run,
set up
ruby
./BARNES <
input_p16.8192
ruby0.save-caches
barnes.caches.gz
write-configuration
CHKPT_DIR/barnes-warm-16p.check
3) third
run (Real simulation--RUBY+OPAL)
----------------------------------------------------------------------------------------------
load
barnes-warm-16p.check
load
barnes.cache.gz
clear
ruby stats
start
simulcation
*The
Console Commands:./BARNES < input_p16.8192; magic_call break
But the running can't be interruptted by the magic_call which
really exists in barnes/code.C
In splash2_simics/codes/apps/barnes/code.C
main(argc, argv)
{
......
Global->tracktime =
0;
Global->partitiontime = 0;
Global->treebuildtime = 0;
Global->forcecalctime =
0;
MEMSYS_ON /*macro
definition--#define MEMSYS_ON MAGIC(1) in
splash2_simics/codes/solaris.threads/magic.h*/
/* Create
the slave processes: number of processors less
one,
since the master will do work as well
*/
Global->current_id = 0;
for(ProcessId = 1;
ProcessId < NPROC; ProcessId++) {
CREATE(SlaveStart);
}
/* Make the master do slave work so
we don't waste the processor */
CLOCK(Global->computestart);
printf("COMPUTESTART =
%12u\n",Global->computestart);
SlaveStart();
......
}
However, here is the warning:
Warning: in fn
void magic_instruction_callback(void*, void*, integer_t) in
simics/commands.C:476: val is 1
Warning: in fn void
magic_instruction_callback(void*, void*, integer_t) in simics/commands.C:476:
val is 1
Warning: in fn void magic_instruction_callback(void*, void*,
integer_t) in simics/commands.C:477: SIMICS_get_program_counter(proc_num) is
[0x145b8, line 0x14580]
Warning: in fn void magic_instruction_callback(void*,
void*, integer_t) in simics/commands.C:477: SIMICS_get_program_counter(proc_num)
is [0x145b8, line 0x14580]
Warning: in fn void
magic_instruction_callback(void*, void*, integer_t) in simics/commands.C:478:
Unexpected magic call
Warning: in fn void magic_instruction_callback(void*,
void*, integer_t) in simics/commands.C:478: Unexpected magic call
I
am sorry for so long mail. My question is how to implement the magic_call break
function, so I can stop the simulation wherever I expected.
As is in the barnes,how can I managed to stop
the simulation by the MEMSYS_ON call?
Any help is
appreciated!