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

Reply via email to