aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2012-12-19 14:10:55 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2012-12-19 14:10:55 -0500
commit64e7516c91d9f2f7ca86928f8db00ca29f3eb544 (patch)
treeb2eacbb36292918b48252b3ae69b7322272590ee
parent8a5da068956f9f428ed138d2cabbc712918d52e6 (diff)
Bug fix
-rw-r--r--run/executable/executable.py3
-rw-r--r--run/experiment.py21
-rwxr-xr-xrun_exps.py8
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
8import shutil 8import shutil
9import traceback 9import traceback
10 10
11from common import load_params 11from common import load_params,get_executable
12from optparse import OptionParser 12from optparse import OptionParser
13from run.executable.executable import Executable 13from run.executable.executable import Executable
14from run.experiment import Experiment,ExperimentDone 14from 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))