-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathParallelizabilityInfoGeneratorCustom.py
More file actions
74 lines (63 loc) · 5.05 KB
/
ParallelizabilityInfoGeneratorCustom.py
File metadata and controls
74 lines (63 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from pash_annotations.annotation_generation.annotation_generators.ParallelizabilityInfoGenerator_Interface import ParallelizabilityInfoGeneratorInterface
from pash_annotations.annotation_generation.datatypes.parallelizability.Parallelizer import \
AdditionalInfoSplitterToMapper, make_parallelizer_round_robin, make_parallelizer_consec_chunks
from pash_annotations.annotation_generation.datatypes.parallelizability.MapperSpec import make_mapper_spec_custom
from pash_annotations.annotation_generation.datatypes.parallelizability.AggregatorSpec import \
make_aggregator_spec_custom_2_ary_from_string_representation
class ParallelizabilityInfoGeneratorGrep(ParallelizabilityInfoGeneratorInterface):
#base case with grep parallelizability info
def generate_info(self) -> None:
mapper_spec = None
aggregator_spec = None
add_info_from_splitter = None
if (mapper_spec is None or mapper_spec.is_implemented) and \
(aggregator_spec is None or aggregator_spec.is_implemented):
parallelizer_cc = make_parallelizer_consec_chunks(mapper_spec=mapper_spec,
aggregator_spec=aggregator_spec,
info_splitter_mapper=add_info_from_splitter)
self.append_to_parallelizer_list(parallelizer_cc)
parallelizer_rr = make_parallelizer_round_robin(mapper_spec=mapper_spec,
aggregator_spec=aggregator_spec,
info_splitter_mapper=add_info_from_splitter)
self.append_to_parallelizer_list(parallelizer_rr)
""""
from pash_annotations.annotation_generation.annotation_generators.ParallelizabilityInfoGenerator_Interface import ParallelizabilityInfoGeneratorInterface
from pash_annotations.annotation_generation.datatypes.parallelizability.AggregatorSpec import \
make_aggregator_spec_custom_2_ary_from_string_representation
from pash_annotations.annotation_generation.datatypes.parallelizability.MapperSpec import \
make_mapper_spec_custom_from_string_representation
from pash_annotations.annotation_generation.datatypes.parallelizability.Parallelizer import make_parallelizer_round_robin, \
make_parallelizer_consec_chunks
from pash_annotations.annotation_generation.datatypes.parallelizability.Parallelizer import Parallelizer
from pash_annotations.annotation_generation.datatypes.parallelizability.AggregatorSpec import \
make_aggregator_spec_custom_n_ary_from_string_representation
class ParallelizabilityInfoGeneratorCustom(ParallelizabilityInfoGeneratorInterface):
# info to provide: parallelizer_list, round_robin_comp_with_cat, is_commutative (for optimisations)
# parallelizabilityinfo has to-do to remove round_robin_comp_with_cat?
def generate_info(self, parallelizer_list:Parallelizer, round_robin_comp_with_cat:bool, is_commutative:bool, aggregator_spec:str) -> None:
if is_commutative:
self.parallelizability_info.set_commutative()
#mapper spec?
#mapper_spec = make_mapper_spec_custom_from_string_representation("alt_bigrams_aux", is_implemented=True)
if (mapper_spec is None or mapper_spec.is_implemented) and \
(aggregator_spec is None or aggregator_spec.is_implemented):
parallelizer_cc = make_parallelizer_consec_chunks(mapper_spec=mapper_spec,
aggregator_spec=aggregator_spec,
info_splitter_mapper=add_info_from_splitter)
self.append_to_parallelizer_list(parallelizer_cc)
parallelizer_rr = make_parallelizer_round_robin(mapper_spec=mapper_spec,
aggregator_spec=aggregator_spec,
info_splitter_mapper=add_info_from_splitter)
self.append_to_parallelizer_list(parallelizer_rr)
if round_robin_comp_with_cat:
aggregator_spec_custom_rr = make_aggregator_spec_custom_2_ary_from_string_representation(aggregator_spec,
is_implemented=False)
parallelizer_rr = make_parallelizer_round_robin(mapper_spec=None,
aggregator_spec=aggregator_spec_custom_rr,
info_splitter_mapper=None)
self.append_to_parallelizer_list(parallelizer_rr)
#how should the parallelizability info generator handle aggregators, i.e taking in file
agg_spec_custom_cc = make_aggregator_spec_custom_n_ary_from_string_representation(aggregator_spec)
parallelizer_cc = make_parallelizer_consec_chunks(aggregator_spec = agg_spec_custom_cc)
self.parallelizability_info.append_to_parallelizer_list(parallelizer_cc)
"""