aboutsummaryrefslogtreecommitdiffstats
path: root/gen
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2014-01-02 10:50:27 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2014-01-02 10:50:27 -0500
commit57d87fed3fafd55ae34ddd35cfbeea8fb9c0d26e (patch)
tree00bdd6e0ca3f7d71029dbde36c69ad43de78925a /gen
parentde754b0a0a56b10eeb14305358f58a275eaa262c (diff)
Script updates.
Diffstat (limited to 'gen')
-rw-r--r--gen/__init__.py1
-rw-r--r--gen/edf_generators.py40
2 files changed, 41 insertions, 0 deletions
diff --git a/gen/__init__.py b/gen/__init__.py
index 8c60b46..654ac19 100644
--- a/gen/__init__.py
+++ b/gen/__init__.py
@@ -4,3 +4,4 @@ import edf_generators as edf
4gen.register_generator("G-EDF", edf.GedfGenerator) 4gen.register_generator("G-EDF", edf.GedfGenerator)
5gen.register_generator("P-EDF", edf.PedfGenerator) 5gen.register_generator("P-EDF", edf.PedfGenerator)
6gen.register_generator("C-EDF", edf.CedfGenerator) 6gen.register_generator("C-EDF", edf.CedfGenerator)
7gen.register_generator("C-FL-split", edf.CflSplitGenerator)
diff --git a/gen/edf_generators.py b/gen/edf_generators.py
index 8e4b8df..ce99d05 100644
--- a/gen/edf_generators.py
+++ b/gen/edf_generators.py
@@ -6,6 +6,7 @@ TP_TBASE = """#for $t in $task_set
6#end for""" 6#end for"""
7TP_GLOB_TASK = TP_TBASE.format("") 7TP_GLOB_TASK = TP_TBASE.format("")
8TP_PART_TASK = TP_TBASE.format("-p $t.cpu") 8TP_PART_TASK = TP_TBASE.format("-p $t.cpu")
9TP_CLST_TASK = TP_TBASE.format("-p $t.cluster -z $t.cluster_sz")
9 10
10class EdfGenerator(gen.Generator): 11class EdfGenerator(gen.Generator):
11 '''Creates sporadic task sets with the most common Litmus options.''' 12 '''Creates sporadic task sets with the most common Litmus options.'''
@@ -83,6 +84,45 @@ class CedfGenerator(PartitionedGenerator):
83 [CedfGenerator.CLUSTER_OPTION], 84 [CedfGenerator.CLUSTER_OPTION],
84 params) 85 params)
85 86
87class CflSplitGenerator(EdfGenerator):
88 TP_CLUSTER = "plugins/C-FL-split/cluster{$level}"
89 CLUSTER_OPTION = gen.GenOption('level', ['L1', 'L2', 'L3', 'ALL'], 'L2',
90 'Cache clustering level.',)
91# CLUSTER_SZ_OPTION = gen.GenOption('cluster_size', ['1', '2', '6', '24'], '2',
92# 'Cluster size.',)
93
94 def __init__(self, params={}):
95 super(CflSplitGenerator, self).__init__("C-FL-split",
96 [CflSplitGenerator.TP_CLUSTER, TP_CLST_TASK],
97 [CflSplitGenerator.CLUSTER_OPTION],
98 params)
99
100 def _customize(self, taskset, exp_params):
101 cpus = int(exp_params['cpus'])
102# cluster_sz = int(exp_params['cluster_size'])
103
104 if exp_params['level'] == 'L1':
105 cluster_sz = 1
106 elif exp_params['level'] == 'L2':
107 cluster_sz = 2
108 elif exp_params['level'] == 'L3':
109 cluster_sz = 6
110 elif exp_params['level'] == 'ALL':
111 cluster_sz = 24
112 else:
113 assert False
114
115 num_clusters = cpus / cluster_sz
116 assert num_clusters * cluster_sz == cpus
117
118 utils = [0]*num_clusters
119 tasks = [0]*num_clusters
120 for t in taskset:
121 t.cluster = utils.index(min(utils))
122 t.cluster_sz = cluster_sz
123 utils[t.cluster] += t.utilization()
124 tasks[t.cluster] += 1
125
86class GedfGenerator(EdfGenerator): 126class GedfGenerator(EdfGenerator):
87 def __init__(self, params={}): 127 def __init__(self, params={}):
88 super(GedfGenerator, self).__init__("GSN-EDF", [TP_GLOB_TASK], 128 super(GedfGenerator, self).__init__("GSN-EDF", [TP_GLOB_TASK],