diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-12-19 14:10:55 -0500 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-12-19 14:10:55 -0500 |
commit | 64e7516c91d9f2f7ca86928f8db00ca29f3eb544 (patch) | |
tree | b2eacbb36292918b48252b3ae69b7322272590ee | |
parent | 8a5da068956f9f428ed138d2cabbc712918d52e6 (diff) |
Bug fix
-rw-r--r-- | run/executable/executable.py | 3 | ||||
-rw-r--r-- | run/experiment.py | 21 | ||||
-rwxr-xr-x | 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): | |||
16 | if extra_args is None: | 16 | if extra_args is None: |
17 | self.extra_args = None | 17 | self.extra_args = None |
18 | else: | 18 | else: |
19 | self.extra_args = list(extra_args) # make a duplicate | 19 | self.extra_args = [str(a) for a in list(extra_args)] # make a duplicate |
20 | 20 | ||
21 | if not is_executable(self.exec_file): | 21 | if not is_executable(self.exec_file): |
22 | raise Exception("Not executable ? : %s" % self.exec_file) | 22 | raise Exception("Not executable ? : %s" % self.exec_file) |
@@ -44,6 +44,7 @@ class Executable(object): | |||
44 | return full_command | 44 | return full_command |
45 | 45 | ||
46 | def __str__(self): | 46 | def __str__(self): |
47 | print("Full command: %s" % self.__get_full_command()) | ||
47 | return " ".join(self.__get_full_command()) | 48 | return " ".join(self.__get_full_command()) |
48 | 49 | ||
49 | def execute(self): | 50 | 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): | |||
92 | map(assign_cwd, self.executables) | 92 | map(assign_cwd, self.executables) |
93 | 93 | ||
94 | def __run_tasks(self): | 94 | def __run_tasks(self): |
95 | exec_pause = 0.3 | 95 | self.log("Starting the programs") |
96 | self.log("Starting the programs over ({0} seconds)".format( | ||
97 | len(self.executables) * exec_pause)) | ||
98 | for e in self.executables: | 96 | for e in self.executables: |
99 | try: | 97 | try: |
100 | e.execute() | 98 | e.execute() |
101 | except: | 99 | except: |
102 | raise Exception("Executable failed: %s" % e) | 100 | raise Exception("Executable failed: %s" % e) |
103 | time.sleep(exec_pause) | ||
104 | 101 | ||
105 | sleep_time = len(self.executables) / litmus_util.num_cpus() | 102 | waiting = litmus_util.waiting_tasks() |
106 | self.log("Sleeping for %d seconds before release" % sleep_time) | 103 | |
107 | time.sleep(sleep_time) | 104 | if waiting: |
105 | sleep_time = len(self.executables) / litmus_util.num_cpus() | ||
106 | self.log("Sleeping for %d seconds before release" % sleep_time) | ||
107 | time.sleep(sleep_time) | ||
108 | 108 | ||
109 | # Overhead tracer must be started right after release or overhead | 109 | # Overhead tracer must be started right after release or overhead |
110 | # measurements will be full of irrelevant records | 110 | # measurements will be full of irrelevant records |
@@ -112,8 +112,11 @@ class Experiment(object): | |||
112 | self.log("Starting overhead trace") | 112 | self.log("Starting overhead trace") |
113 | self.overhead_trace.start_tracing() | 113 | self.overhead_trace.start_tracing() |
114 | 114 | ||
115 | self.log("Releasing %d tasks" % len(self.executables)) | 115 | if waiting: |
116 | released = litmus_util.release_tasks() | 116 | self.log("Releasing %d tasks" % len(self.executables)) |
117 | released = litmus_util.release_tasks() | ||
118 | else: | ||
119 | released = len(self.executables) | ||
117 | 120 | ||
118 | ret = True | 121 | ret = True |
119 | if released != len(self.executables): | 122 | 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 | |||
8 | import shutil | 8 | import shutil |
9 | import traceback | 9 | import traceback |
10 | 10 | ||
11 | from common import load_params | 11 | from common import load_params,get_executable |
12 | from optparse import OptionParser | 12 | from optparse import OptionParser |
13 | from run.executable.executable import Executable | 13 | from run.executable.executable import Executable |
14 | from run.experiment import Experiment,ExperimentDone | 14 | from run.experiment import Experiment,ExperimentDone |
@@ -46,7 +46,7 @@ def convert_data(data): | |||
46 | r"(?P<ENTRY>[\w\-\/]+)" | 46 | r"(?P<ENTRY>[\w\-\/]+)" |
47 | r"\s*{\s*(?P<CONTENT>.*?)\s*?}$)|" | 47 | r"\s*{\s*(?P<CONTENT>.*?)\s*?}$)|" |
48 | r"(?P<SPIN>^" | 48 | r"(?P<SPIN>^" |
49 | r"(?P<TYPE>\w+?spin)?\s*" | 49 | r"(?:(?P<TYPE>\w+) )?\s*" |
50 | r"(?P<ARGS>[\w\-_\d\. \=]+)\s*$)", | 50 | r"(?P<ARGS>[\w\-_\d\. \=]+)\s*$)", |
51 | re.S|re.I|re.M) | 51 | re.S|re.I|re.M) |
52 | 52 | ||
@@ -164,7 +164,9 @@ def run_exp(name, schedule, scheduler, kernel, duration, work_dir, out_dir): | |||
164 | # raise IndexError("No knowledge of program %s: %s" % (spin, name)) | 164 | # raise IndexError("No knowledge of program %s: %s" % (spin, name)) |
165 | 165 | ||
166 | real_spin = get_executable(spin, "") | 166 | real_spin = get_executable(spin, "") |
167 | real_args = ['-w'] + args.split() + [duration] | 167 | real_args = args.split() |
168 | if re.match(".*spin", real_spin): | ||
169 | real_args = ['-w'] + real_args + [duration] | ||
168 | 170 | ||
169 | if not lu.is_executable(real_spin): | 171 | if not lu.is_executable(real_spin): |
170 | raise OSError("Cannot run spin %s: %s" % (real_spin, name)) | 172 | raise OSError("Cannot run spin %s: %s" % (real_spin, name)) |