diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2014-01-29 15:54:53 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2014-01-29 15:54:53 -0500 |
commit | 3e0f445a7643fcdd339069a08a4aa001ca061ee1 (patch) | |
tree | d8dcd35362f1c7991120813092c3a505b8805780 | |
parent | f21e72b2d22679154500e64bde37b83b3e587488 (diff) |
Attach ideal end-to-end resp. time to pgmrt args
-rw-r--r-- | gen/generator.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/gen/generator.py b/gen/generator.py index 682ea39..8b3a189 100644 --- a/gen/generator.py +++ b/gen/generator.py | |||
@@ -150,6 +150,7 @@ class Generator(object): | |||
150 | 150 | ||
151 | graph_desc_arg = [] | 151 | graph_desc_arg = [] |
152 | rates_arg = [] | 152 | rates_arg = [] |
153 | etoe_arg = [] | ||
153 | exec_arg = [] | 154 | exec_arg = [] |
154 | cluster_arg = [] | 155 | cluster_arg = [] |
155 | clustersz_arg = [] | 156 | clustersz_arg = [] |
@@ -203,6 +204,7 @@ class Generator(object): | |||
203 | split_arg.append(split_arg_t) | 204 | split_arg.append(split_arg_t) |
204 | rates_arg.append(rates_arg_t) | 205 | rates_arg.append(rates_arg_t) |
205 | 206 | ||
207 | |||
206 | clustersz_arg.append(str(pgm_params['cpus'] / pgm_params['nr_clusters'])) | 208 | clustersz_arg.append(str(pgm_params['cpus'] / pgm_params['nr_clusters'])) |
207 | 209 | ||
208 | # Use a wss cycle of 1.5x the graph depth to avoid cache | 210 | # Use a wss cycle of 1.5x the graph depth to avoid cache |
@@ -211,6 +213,11 @@ class Generator(object): | |||
211 | # and later reused after processing by the last node. | 213 | # and later reused after processing by the last node. |
212 | wss_cycle_arg.append(str(int(math.ceil(g.depth * 1.5)))) | 214 | wss_cycle_arg.append(str(int(math.ceil(g.depth * 1.5)))) |
213 | 215 | ||
216 | # get the ideal end-to-end response time | ||
217 | etoe = graph.compute_hrt_ideal_graph_latency(g) | ||
218 | etoe_arg.append(format(etoe/1000.0, '.4f').rstrip('0').rstrip('.')) | ||
219 | |||
220 | |||
214 | pgm_args = [] | 221 | pgm_args = [] |
215 | for i in range(len(pgm_params['graphs'])): | 222 | for i in range(len(pgm_params['graphs'])): |
216 | pgm_args_t = ''; | 223 | pgm_args_t = ''; |
@@ -221,6 +228,8 @@ class Generator(object): | |||
221 | if len(wss_arg[i]) != 0: | 228 | if len(wss_arg[i]) != 0: |
222 | pgm_args_t += ' --wss ' + wss_arg[i] | 229 | pgm_args_t += ' --wss ' + wss_arg[i] |
223 | pgm_args_t += ' --wsCycle ' + wss_cycle_arg[i] | 230 | pgm_args_t += ' --wsCycle ' + wss_cycle_arg[i] |
231 | pgm_args_t += ' --etoe ' + etoe_arg[i] | ||
232 | |||
224 | 233 | ||
225 | # last argument must always be duration. actual duration given by run_exps.py | 234 | # last argument must always be duration. actual duration given by run_exps.py |
226 | pgm_args_t += ' --duration' | 235 | pgm_args_t += ' --duration' |
@@ -490,9 +499,9 @@ class Generator(object): | |||
490 | # Write a sched.py and param.py for each partition method | 499 | # Write a sched.py and param.py for each partition method |
491 | ret = self._create_exp(_dp, ts, graphs, subts) | 500 | ret = self._create_exp(_dp, ts, graphs, subts) |
492 | if not ret: | 501 | if not ret: |
493 | print("Bin-packing fails for " + dir_leaf) | 502 | print(" Generated unschedulable ts for " + dir_leaf) |
494 | last_failed = dir_leaf | 503 | last_failed = dir_leaf |
495 | raise Exception("Failed to partition.") | 504 | raise Exception("Unschedulable.") |
496 | del(self.out_dir) | 505 | del(self.out_dir) |
497 | if PARAMS['trial'] in dp: | 506 | if PARAMS['trial'] in dp: |
498 | del dp[PARAMS['trial']] | 507 | del dp[PARAMS['trial']] |