From 64e7516c91d9f2f7ca86928f8db00ca29f3eb544 Mon Sep 17 00:00:00 2001 From: Jonathan Herman Date: Wed, 19 Dec 2012 14:10:55 -0500 Subject: Bug fix --- run/executable/executable.py | 3 ++- run/experiment.py | 21 ++++++++++++--------- run_exps.py | 8 +++++--- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/run/executable/executable.py b/run/executable/executable.py index 628f711..bc8edd7 100644 --- a/run/executable/executable.py +++ b/run/executable/executable.py @@ -16,7 +16,7 @@ class Executable(object): if extra_args is None: self.extra_args = None else: - self.extra_args = list(extra_args) # make a duplicate + self.extra_args = [str(a) for a in list(extra_args)] # make a duplicate if not is_executable(self.exec_file): raise Exception("Not executable ? : %s" % self.exec_file) @@ -44,6 +44,7 @@ class Executable(object): return full_command def __str__(self): + print("Full command: %s" % self.__get_full_command()) return " ".join(self.__get_full_command()) def execute(self): diff --git a/run/experiment.py b/run/experiment.py index 4bd47c6..ee1438d 100644 --- a/run/experiment.py +++ b/run/experiment.py @@ -92,19 +92,19 @@ class Experiment(object): map(assign_cwd, self.executables) def __run_tasks(self): - exec_pause = 0.3 - self.log("Starting the programs over ({0} seconds)".format( - len(self.executables) * exec_pause)) + self.log("Starting the programs") for e in self.executables: try: e.execute() except: raise Exception("Executable failed: %s" % e) - time.sleep(exec_pause) - sleep_time = len(self.executables) / litmus_util.num_cpus() - self.log("Sleeping for %d seconds before release" % sleep_time) - time.sleep(sleep_time) + waiting = litmus_util.waiting_tasks() + + if waiting: + sleep_time = len(self.executables) / litmus_util.num_cpus() + self.log("Sleeping for %d seconds before release" % sleep_time) + time.sleep(sleep_time) # Overhead tracer must be started right after release or overhead # measurements will be full of irrelevant records @@ -112,8 +112,11 @@ class Experiment(object): self.log("Starting overhead trace") self.overhead_trace.start_tracing() - self.log("Releasing %d tasks" % len(self.executables)) - released = litmus_util.release_tasks() + if waiting: + self.log("Releasing %d tasks" % len(self.executables)) + released = litmus_util.release_tasks() + else: + released = len(self.executables) ret = True if released != len(self.executables): diff --git a/run_exps.py b/run_exps.py index 43de422..cc348ec 100755 --- a/run_exps.py +++ b/run_exps.py @@ -8,7 +8,7 @@ import re import shutil import traceback -from common import load_params +from common import load_params,get_executable from optparse import OptionParser from run.executable.executable import Executable from run.experiment import Experiment,ExperimentDone @@ -46,7 +46,7 @@ def convert_data(data): r"(?P[\w\-\/]+)" r"\s*{\s*(?P.*?)\s*?}$)|" r"(?P^" - r"(?P\w+?spin)?\s*" + r"(?:(?P\w+) )?\s*" r"(?P[\w\-_\d\. \=]+)\s*$)", re.S|re.I|re.M) @@ -164,7 +164,9 @@ def run_exp(name, schedule, scheduler, kernel, duration, work_dir, out_dir): # raise IndexError("No knowledge of program %s: %s" % (spin, name)) real_spin = get_executable(spin, "") - real_args = ['-w'] + args.split() + [duration] + real_args = args.split() + if re.match(".*spin", real_spin): + real_args = ['-w'] + real_args + [duration] if not lu.is_executable(real_spin): raise OSError("Cannot run spin %s: %s" % (real_spin, name)) -- cgit v1.2.2