diff options
| author | Bryan Ward <bcw@cs.unc.edu> | 2013-04-18 16:12:24 -0400 |
|---|---|---|
| committer | Bryan Ward <bcw@cs.unc.edu> | 2013-04-18 16:12:24 -0400 |
| commit | 4503e19601635059d2e4e8f7651f9b4b168a6e7a (patch) | |
| tree | 4578b7676a722b627500ecb7b0c1db47fb90826b | |
| parent | e1eed1bc02642210a53618147cd55c180bc716ca (diff) | |
DGL support.
| -rw-r--r-- | gen/__init__.py | 1 | ||||
| -rw-r--r-- | gen/edf_generators.py | 24 | ||||
| -rw-r--r-- | gen/generator.py | 2 |
3 files changed, 26 insertions, 1 deletions
diff --git a/gen/__init__.py b/gen/__init__.py index 8c60b46..1798d57 100644 --- a/gen/__init__.py +++ b/gen/__init__.py | |||
| @@ -4,3 +4,4 @@ import edf_generators as edf | |||
| 4 | gen.register_generator("G-EDF", edf.GedfGenerator) | 4 | gen.register_generator("G-EDF", edf.GedfGenerator) |
| 5 | gen.register_generator("P-EDF", edf.PedfGenerator) | 5 | gen.register_generator("P-EDF", edf.PedfGenerator) |
| 6 | gen.register_generator("C-EDF", edf.CedfGenerator) | 6 | gen.register_generator("C-EDF", edf.CedfGenerator) |
| 7 | gen.register_generator("P-EDF-DGL", edf.PedfDglGenerator) | ||
diff --git a/gen/edf_generators.py b/gen/edf_generators.py index 3f05b76..1b7bb95 100644 --- a/gen/edf_generators.py +++ b/gen/edf_generators.py | |||
| @@ -7,6 +7,8 @@ TP_TBASE = """#for $t in $task_set | |||
| 7 | TP_GLOB_TASK = TP_TBASE.format("") | 7 | TP_GLOB_TASK = TP_TBASE.format("") |
| 8 | TP_PART_TASK = TP_TBASE.format("-p $t.cpu") | 8 | TP_PART_TASK = TP_TBASE.format("-p $t.cpu") |
| 9 | 9 | ||
| 10 | TP_DGL_TASK = TP_TBASE.format("dglspin -r $t.mask -p $t.cpu") | ||
| 11 | |||
| 10 | class EdfGenerator(gen.Generator): | 12 | class EdfGenerator(gen.Generator): |
| 11 | '''Creates sporadic task sets with the most common Litmus options.''' | 13 | '''Creates sporadic task sets with the most common Litmus options.''' |
| 12 | def __init__(self, scheduler, templates, options, params): | 14 | def __init__(self, scheduler, templates, options, params): |
| @@ -74,3 +76,25 @@ class GedfGenerator(EdfGenerator): | |||
| 74 | def __init__(self, params={}): | 76 | def __init__(self, params={}): |
| 75 | super(GedfGenerator, self).__init__("GSN-EDF", [TP_GLOB_TASK], | 77 | super(GedfGenerator, self).__init__("GSN-EDF", [TP_GLOB_TASK], |
| 76 | [], params) | 78 | [], params) |
| 79 | |||
| 80 | class PedfDglGenerator(EdfGenerator): | ||
| 81 | NR_RESOURCES_OPTION = gen.GenOption('nr_resources', int, [8], | ||
| 82 | 'Number of resources.',) | ||
| 83 | NR_REQUESTED_OPTION = gen.GenOption('nr_requested', int, [2], | ||
| 84 | 'Number of resources requested.',) | ||
| 85 | |||
| 86 | def __init__(self, params={}): | ||
| 87 | super(PedfDglGenerator, self).__init__("PSN-EDF", | ||
| 88 | [TP_DGL_TASK], [], params) | ||
| 89 | |||
| 90 | |||
| 91 | def _customize(self, taskset, exp_params): | ||
| 92 | start = 1 if exp_params['release_master'] else 0 | ||
| 93 | # Random partition for now: could do a smart partitioning | ||
| 94 | for t in taskset: | ||
| 95 | t.cpu = random.randint(start, exp_params['cpus'] - 1) | ||
| 96 | resources = random.sample(xrange(exp_params['nr_resources']), exp_params['nr_requested']) | ||
| 97 | t.mask = list('0'*10) | ||
| 98 | for r in resources: | ||
| 99 | t.mask[r] = '1' | ||
| 100 | t.mask = ''.join(t.mask) | ||
diff --git a/gen/generator.py b/gen/generator.py index f35a22b..bfda201 100644 --- a/gen/generator.py +++ b/gen/generator.py | |||
| @@ -72,7 +72,7 @@ class Generator(object): | |||
| 72 | config = get_config_option("RELEASE_MASTER") and True | 72 | config = get_config_option("RELEASE_MASTER") and True |
| 73 | except: | 73 | except: |
| 74 | config = False | 74 | config = False |
| 75 | release_master = list(set([False, config])) | 75 | release_master = list(set([False, bool(config)])) |
| 76 | 76 | ||
| 77 | 77 | ||
| 78 | return [GenOption('tasks', int, range(cpus, 5*cpus, cpus), | 78 | return [GenOption('tasks', int, range(cpus, 5*cpus, cpus), |
