add in checkpoint restoration option, you can restore a checkpoint by giving a direct...
authorLisa Hsu <hsul@eecs.umich.edu>
Mon, 9 Oct 2006 04:12:16 +0000 (00:12 -0400)
committerLisa Hsu <hsul@eecs.umich.edu>
Mon, 9 Oct 2006 04:12:16 +0000 (00:12 -0400)
so you can restore by a command line like this:

m5.opt fs.py --checkpoint_dir="/my/ckpt/dir" -c 3

configs/example/fs.py:
    add in checkpoint restoration option, you can restore a checkpoint by giving a directory, and then giving a checkpoint number, the earliest checkpoint is 1, the latest is N.

--HG--
extra : convert_revision : bf9c8d3265a3875cdfb6a878005baa7ae29af90d

configs/example/fs.py

index 6db26a02a47d6aaa06199664484002a1c0f13089..0dadcbe1bead5aa13b2693e493ed18ab8da810d7 100644 (file)
@@ -55,6 +55,8 @@ parser.add_option("--etherdump", action="store", type="string", dest="etherdump"
                   "ethernet traffic")
 parser.add_option("--checkpoint_dir", action="store", type="string",
                   help="Place all checkpoints in this absolute directory")
+parser.add_option("-c", "--checkpoint", action="store", type="int",
+                  help="restore from checkpoint <N>")
 
 (options, args) = parser.parse_args()
 
@@ -115,6 +117,31 @@ else:
 
 m5.instantiate(root)
 
+if options.checkpoint:
+    from os.path import isdir
+    from os import listdir, getcwd
+    import re
+    if options.checkpoint_dir:
+        cptdir = options.checkpoint_dir
+    else:
+        cptdir = getcwd()
+
+    if not isdir(cptdir):
+        m5.panic("checkpoint dir %s does not exist!" % cptdir)
+
+    dirs = listdir(cptdir)
+    expr = re.compile('cpt.([0-9]*)')
+    cpts = []
+    for dir in dirs:
+        match = expr.match(dir)
+        if match:
+            cpts.append(match.group(1))
+
+    if options.checkpoint > len(cpts):
+        m5.panic('Checkpoint %d not found' % options.checkpoint)
+
+    m5.restoreCheckpoint(root, "/".join([cptdir, "cpt.%s" % cpts[options.checkpoint - 1]]))
+
 if options.maxtick:
     maxtick = options.maxtick
 elif options.maxtime: