From 2519d116c9171ed4bf220d5049f244b333aa0842 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Tue, 17 Aug 2010 05:17:06 -0700 Subject: sim: fold checkpoint restore code into instantiate() The separate restoreCheckpoint() call is gone; just pass the checkpoint dir as an optional arg to instantiate(). This change is a precursor to some more extensive reworking of the startup code. --- configs/common/Simulation.py | 12 +++--------- src/python/m5/simulate.py | 14 ++++++-------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py index 8e1f84cdf..79e3066a8 100644 --- a/configs/common/Simulation.py +++ b/configs/common/Simulation.py @@ -190,8 +190,7 @@ def run(options, root, testsys, cpu_class): for i in xrange(np): testsys.cpu[i].max_insts_any_thread = offset - m5.instantiate() - + checkpoint_dir = None if options.checkpoint_restore != None: from os.path import isdir, exists from os import listdir @@ -212,10 +211,6 @@ def run(options, root, testsys, cpu_class): "cpt.%s.%s" % (options.bench, inst)) if not exists(checkpoint_dir): fatal("Unable to find checkpoint directory %s", checkpoint_dir) - - print "Restoring checkpoint ..." - m5.restoreCheckpoint(checkpoint_dir) - print "Done." else: dirs = listdir(cptdir) expr = re.compile('cpt\.([0-9]*)') @@ -234,10 +229,9 @@ def run(options, root, testsys, cpu_class): ## Adjust max tick based on our starting tick maxtick = maxtick - int(cpts[cpt_num - 1]) + checkpoint_dir = joinpath(cptdir, "cpt.%s" % cpts[cpt_num - 1]) - ## Restore the checkpoint - m5.restoreCheckpoint(joinpath(cptdir, - "cpt.%s" % cpts[cpt_num - 1])) + m5.instantiate(checkpoint_dir) if options.standard_switch or cpu_class: if options.standard_switch: diff --git a/src/python/m5/simulate.py b/src/python/m5/simulate.py index 28ba10c0d..0cf0a254e 100644 --- a/src/python/m5/simulate.py +++ b/src/python/m5/simulate.py @@ -46,7 +46,7 @@ MaxTick = 2**63 - 1 # The final hook to generate .ini files. Called from the user script # once the config is built. -def instantiate(): +def instantiate(ckpt_dir=None): root = objects.Root.getInstance() if not root: @@ -86,6 +86,11 @@ def instantiate(): # We're done registering statistics. Enable the stats package now. stats.enable() + # Restore checkpoint (if any) + if ckpt_dir: + internal.core.unserializeAll(ckpt_dir) + need_resume.append(root) + # Reset to put the stats in a consistent state. stats.reset() @@ -160,13 +165,6 @@ def checkpoint(dir): internal.core.serializeAll(dir) resume(root) -def restoreCheckpoint(dir): - root = objects.Root.getInstance() - print "Restoring from checkpoint" - internal.core.unserializeAll(dir) - need_resume.append(root) - stats.reset() - def changeToAtomic(system): if not isinstance(system, (objects.Root, objects.System)): raise TypeError, "Parameter of type '%s'. Must be type %s or %s." % \ -- cgit v1.2.3