|
18 | 18 | _check_einsum2pmappings_not_empty, |
19 | 19 | ) |
20 | 20 | from accelforge._accelerated_imports import pd |
| 21 | +from tqdm import tqdm |
| 22 | + |
| 23 | +from accelforge.util import delayed, parallel |
21 | 24 |
|
22 | 25 |
|
23 | 26 | logger = logging.getLogger(__name__) |
@@ -85,21 +88,27 @@ def map_workload_to_arch( |
85 | 88 | print_progress=print_progress, |
86 | 89 | ) |
87 | 90 |
|
88 | | - new_mapping_data = [] |
89 | | - for i in range(len(mappings.data)): |
| 91 | + def eval_mapping(i, spec, mappings): |
90 | 92 | local_spec = deepcopy(spec) |
91 | 93 | local_spec.model.metrics = local_spec.mapper.info_metrics |
92 | 94 | local_spec.mapping = mappings.data.iloc[i]["Total<SEP>mapping"]() |
93 | | - # BUG: Mapping._from_pmappings create mappings that cannot be evaluated! |
94 | 95 | this_mapping = evaluate_mapping( |
95 | 96 | local_spec, |
96 | 97 | flattened_arches=mappings.flattened_arches, |
97 | 98 | evaluated_specs=mappings.evaluated_specs, |
98 | 99 | ) |
99 | | - new_mapping_data.append(this_mapping.data) |
100 | | - |
101 | | - mappings.data = pd.concat(new_mapping_data).fillna(0) |
102 | | - |
| 100 | + return i, this_mapping.data |
| 101 | + |
| 102 | + results = [None] * len(mappings.data) |
| 103 | + use_pbar = (print_progress or one_pbar_only) and len(mappings.data) > 1 |
| 104 | + for i, result in parallel( |
| 105 | + [delayed(eval_mapping)(i, spec, mappings) for i in range(len(mappings.data))], |
| 106 | + pbar="Evaluating chosen mappings in detail" if use_pbar else None, |
| 107 | + return_as="generator_unordered", |
| 108 | + ): |
| 109 | + results[i] = result |
| 110 | + |
| 111 | + mappings.data = pd.concat(results).fillna(0) |
103 | 112 | return mappings |
104 | 113 |
|
105 | 114 |
|
|
0 commit comments