Skip to content

Commit b605d41

Browse files
Malmahrouqi3mohdsaid497566
andauthored
Tolerances for CI Workflow - Grind & Exec Times (#750) (#876)
Co-authored-by: mohdsaid497566 <145478595+mohdsaid497566@users.noreply.github.com> Co-authored-by: mohdsaid497566 <mohdsaid497566@gmail.com>
1 parent a1da667 commit b605d41

File tree

1 file changed

+20
-38
lines changed

1 file changed

+20
-38
lines changed

toolchain/mfc/bench.py

Lines changed: 20 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,10 @@ def bench(targets = None):
8181
# pylint: disable=too-many-branches
8282
def diff():
8383
lhs, rhs = file_load_yaml(ARG("lhs")), file_load_yaml(ARG("rhs"))
84-
8584
cons.print(f"[bold]Comparing Benchmarks: Speedups from [magenta]{os.path.relpath(ARG('lhs'))}[/magenta] to [magenta]{os.path.relpath(ARG('rhs'))}[/magenta] are displayed below. Thus, numbers > 1 represent increases in performance.[/bold]")
85+
8686
if lhs["metadata"] != rhs["metadata"]:
87-
def _lock_to_str(lock):
88-
return ' '.join([f"{k}={v}" for k, v in lock.items()])
87+
_lock_to_str = lambda lock: ' '.join([f"{k}={v}" for k, v in lock.items()])
8988

9089
cons.print(f"""\
9190
[bold yellow]Warning[/bold yellow]: Metadata in lhs and rhs are not equal.
@@ -114,56 +113,39 @@ def _lock_to_str(lock):
114113
table.add_column("[bold]Post Process[/bold]", justify="right")
115114

116115
err = 0
117-
118116
for slug in slugs:
119-
lhs_summary = lhs["cases"][slug]["output_summary"]
120-
rhs_summary = rhs["cases"][slug]["output_summary"]
121-
117+
lhs_summary, rhs_summary = lhs["cases"][slug]["output_summary"], rhs["cases"][slug]["output_summary"]
122118
speedups = ['N/A', 'N/A', 'N/A']
123119

124120
for i, target in enumerate(sorted(DEFAULT_TARGETS, key=lambda t: t.runOrder)):
125121
if (target.name not in lhs_summary) or (target.name not in rhs_summary):
126-
127-
err = 1
128-
129-
if target.name not in lhs_summary:
130-
cons.print(f"{target.name} not present in lhs_summary - Case: {slug}")
131-
132-
if target.name not in rhs_summary:
133-
cons.print(f"{target.name} not present in rhs_summary - Case: {slug}")
134-
135-
continue
122+
cons.print(f"{target.name} not present in lhs_summary or rhs_summary - Case: {slug}")
123+
err = 1; continue
136124

137125
if not math.isfinite(lhs_summary[target.name]["exec"]) or not math.isfinite(rhs_summary[target.name]["exec"]):
138126
err = 1
139127
cons.print(f"lhs_summary or rhs_summary reports non-real exec time for {target.name} - Case: {slug}")
140128

141-
exec_time_speedup = "N/A"
142129
try:
143-
exec_time_speedup = f'{lhs_summary[target.name]["exec"] / rhs_summary[target.name]["exec"]:.2f}'
130+
exec_time_value = lhs_summary[target.name]["exec"] / rhs_summary[target.name]["exec"]
131+
if exec_time_value < 0.9:
132+
cons.print(f"[bold yellow]Warning[/bold yellow]: Exec time speedup for {target.name} is less than 0.9 - Case: {slug}")
133+
speedups[i] = f"Exec: {exec_time_value:.2f}"
134+
if target == SIMULATION:
135+
if not math.isfinite(lhs_summary[target.name]["grind"]) or not math.isfinite(rhs_summary[target.name]["grind"]):
136+
err = 1
137+
cons.print(f"lhs_summary or rhs_summary reports non-real grind time for {target.name} - Case: {slug}")
138+
139+
grind_time_value = lhs_summary[target.name]["grind"] / rhs_summary[target.name]["grind"]
140+
speedups[i] += f" & Grind: {grind_time_value:.2f}"
141+
if grind_time_value <0.95:
142+
raise MFCException(f"Benchmarking failed since grind time speedup for {target.name} below acceptable threshold (<0.98) - Case: {slug}")
144143
except Exception as _:
145144
err = 1
146-
cons.print(f"lhs_summary or rhs_summary reports non-real exec time for {target.name} - Case: {slug}")
147-
148-
speedups[i] = f"Exec: {exec_time_speedup}"
149-
150-
if target == SIMULATION:
151-
grind_time_speedup = "N/A"
152-
if not math.isfinite(lhs_summary[target.name]["grind"]) or not math.isfinite(rhs_summary[target.name]["grind"]):
153-
err = 1
154-
cons.print(f"lhs_summary or rhs_summary reports non-real grind time for {target.name} - Case: {slug}")
155-
156-
try:
157-
grind_time_speedup = f'{lhs_summary[target.name]["grind"] / rhs_summary[target.name]["grind"]:.2f}'
158-
except Exception as _:
159-
err = 1
160-
cons.print(f"lhs_summary or rhs_summary reports non-real grind time for {target.name} - Case: {slug}")
161-
162-
speedups[i] += f" & Grind: {grind_time_speedup}"
145+
cons.print(f"lhs_summary or rhs_summary reports non-real grind time for {target.name} - Case: {slug}")
163146

164147
table.add_row(f"[magenta]{slug}[/magenta]", *speedups)
165148

166149
cons.raw.print(table)
167-
168-
if err != 0:
150+
if err:
169151
raise MFCException("Benchmarking failed")

0 commit comments

Comments
 (0)