@@ -81,11 +81,10 @@ def bench(targets = None):
8181# pylint: disable=too-many-branches
8282def 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