Hi Brad,
Thanks for the reply and the explanation about Ruby.
I've attached the runscript.rcS file that I was using. I'm using the
kernel from the M5 website and disk image from UTexas
(http://www.cs.utexas.edu/~parsec_m5/linux-parsec-2-1-m5-with-test-inputs.img.bz2)
I looked at the config file and checkpoint files. The CPUs do have the
same names and I don't get any unserialization warnings at all when
running from the checkpoint. I did notice that the CPU types were
different (since I was creating checkpoints with AtomicSimpleCPU) but
adding the '-t' switch to the creation command didn't make the error go
away.
I also tried using the ruby_fs.py script to create checkpoints too by
adding support for '--script' within it using the attached patch. This
created a checkpoint without problems. Loading from it caused a
segmentation fault in the simulated program though. These were the
commands I used for that:
./build/ALPHA_FS/m5.fast -d ../outputs --remote-gdb-port 0
./configs/example/ruby_fs.py -n 2 --script=../scripts/runscript.rcS
--max-checkpoints=1
./build/ALPHA_FS/m5.fast -d ../outputs --remote-gdb-port 0
./configs/example/ruby_fs.py -n 2 -r 0
Thanks again
Tim
Beckmann, Brad wrote:
Hi Tim,
Before I try to help you with your specific problem, I want to point out that
is Ruby's current support for checkpointing is a little confusing and that is
one area that we are actively improving. In particular Ruby currently uses
physmem as a functional memory image and thus messages within Ruby only impact
the timing of memory accesses. Thus, loading a checkpoint with Ruby is nothing
more than loading Ruby's backing image of physmem with the checkpointed memory
image. Also there is no current support for cache warmup. We are in the process
of changing that, but that code is not yet ready.
Having said that, I suspect that your problem is something different. In general, your sequence of commands should work and I can't reproduce your specific error since I don't have your particular rcS script. I'd be curious to know if you see any unserialzation warnings complaining that certain simobjects aren't in the loaded checkpoint. In particular, do the cpus have the exact same name between the config.ini file with ruby and the m5.cpt file in your checkpoint?
Sorry I can't be more help, but if you send me your rcS script, I'd be happy to
investigate further.
Brad
-----Original Message-----
From: [email protected] [mailto:m5-users-
[email protected]] On Behalf Of Timothy M Jones
Sent: Wednesday, May 04, 2011 5:49 AM
To: M5 users mailing list
Subject: [m5-users] Creating ruby checkpoints
Hello,
I'm trying to create checkpoints for use with ruby using ALPHA_FS. It takes
ages to boot linux with ruby enabled, and since I want several checkpoints
for different numbers of cores, I was hoping I'd be able to create checkpoints
without ruby, then run from the checkpoints with.
This doesn't appear to work. If I create a checkpoint with this command:
./build/ALPHA_FS/m5.fast -d ../outputs --remote-gdb-port 0
./configs/example/fs.py -n 2 --max-checkpoints=1 --
script=../scripts/runscript.rcS
Then I can run it fine with this command:
./build/ALPHA_FS/m5.fast -d ../outputs --remote-gdb-port 0
./configs/example/fs.py -n 2 -r 0
But switching to ruby causes errors:
/build/ALPHA_FS/m5.fast -d ../outputs --remote-gdb-port 0
./configs/example/ruby_fs.py -n 2 -r 0
In the system.terminal file I get this error output:
script(759): unhandled unaligned exception pc = [<fffffc00006b83c0>] ra =
[<fffffc00006b83bc>] ps = 0007
r0 = 000000001f6c8000 r1 = fffffc00003111a0 r2 = fffffc0000018000
r3 = 000000000000002b r4 = 0000000000000720 r5 = fffffc000085ecb8
r6 = 0000000000000059 r7 = 0000000000000040 r8 = 0000000000003fff
r9 = fffffc001f5c5580 r10= fffffc001f3eec00 r11= fffffc0000d09b80 r12=
fffffc001f6b0740 r13= 0000000000000001 r14= 0000000000000008 r15=
fffffc001f657e48 r16= 000000001f654000 r17= fffffc001f3eec00 r18=
fffffc001f6b0740 r19= 0000000000000001 r20= 0000000000000000 r21=
fffffc0000860640 r22= 0000000000000000 r23= 000000200618a0cf r24=
4000000000000000 r25= 00000000000003ff r27= fffffc0000311190 r28=
fffffc001f5c5580
This seems to happen no matter which protocol I compile into the binary,
although this was with MESI_CMP_directory. Does anyone have any
suggestions as to how I can go about creating some checkpoints to use like
this or what I'm doing wrong?
Thanks
Tim
--
Timothy M. Jones
http://www.cl.cam.ac.uk/~tmj32
_______________________________________________
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
--
Timothy M. Jones
http://www.cl.cam.ac.uk/~tmj32
#!/bin/sh
# File to run the blackscholes benchmark using 2 cores.
cd /parsec/install/bin
/sbin/m5 checkpoint
./blackscholes 2 /parsec/install/inputs/blackscholes/in_16.txt
/parsec/install/inputs/blackscholes/prices.txt
echo "Done :D"
/sbin/m5 exit
diff -r b55de4c2a472 -r 1b9122296c1f configs/example/ruby_fs.py
--- a/configs/example/ruby_fs.py Wed Apr 27 11:16:13 2011 +0100
+++ b/configs/example/ruby_fs.py Wed May 04 11:58:42 2011 +0100
@@ -71,6 +71,7 @@
parser.add_option("-i", "--input", default="", help="Read stdin from a file.")
parser.add_option("--output", default="", help="Redirect stdout to a file.")
parser.add_option("--errout", default="", help="Redirect stderr to a file.")
+parser.add_option("--script", action="store", type="string")
#
# Add the ruby specific and protocol specific options
@@ -117,6 +118,9 @@
else:
fatal("incapable of building non-alpha or non-x86 full system!")
+if options.script is not None:
+ system.readfile = options.script
+
system.ruby = Ruby.create_system(options,
system,
system.piobus,
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users