@@ -91,7 +91,7 @@ def parse_pytorch_benchmark_data(config: str, df: pd.DataFrame, file: Path) -> p
9191 raw_data ["suite" ] = suite
9292 raw_data ["datatype" ] = datatype
9393 raw_data ["mode" ] = mode
94- raw_data .rename (columns = {"speedup" : f"speedup { config } " }, inplace = True )
94+ raw_data .rename (columns = {"speedup" : f"speedup- { config } " }, inplace = True )
9595
9696 return pd .concat ([df , raw_data ], ignore_index = True )
9797
@@ -146,9 +146,16 @@ def parse_directory(triton_benchmark: bool, config: str, directory: Path) -> pd.
146146 return df
147147
148148
149- def summarize_diff (triton_benchmark : bool , perf_index : str , plot : bool , df : pd .DataFrame , num_col : str , denom_col : str ,
150- numerator : str , denominator : str ):
149+ def get_column_names (perf_index : str , numerator : str , denominator : str ):
150+ num_col = f"{ perf_index } -{ numerator } "
151+ denom_col = f"{ perf_index } -{ denominator } "
152+ return num_col , denom_col
153+
154+
155+ def summarize_diff (perf_index : str , df : pd .DataFrame , numerator : str , denominator : str ):
151156 """Summarize data difference of numerator and denominator."""
157+ num_col , denom_col = get_column_names (perf_index , numerator , denominator )
158+
152159 both_failed = df .loc [(df [num_col ] == 0.0 ) & (df [denom_col ] == 0.0 )]
153160 print (f"Both failed ({ both_failed .shape [0 ]} configurations):" )
154161 print (both_failed .to_string ())
@@ -195,54 +202,60 @@ def summarize_diff(triton_benchmark: bool, perf_index: str, plot: bool, df: pd.D
195202 f"{ numerator } , showing relative difference in { perf_index } )" )
196203 print (df .head (print_cfgs ))
197204 print ("\n " * 2 )
205+ return df
198206
199- if plot :
200- # pylint: disable=import-outside-toplevel
201- import seaborn as sns
202- import matplotlib .pyplot as plt
203- from matplotlib .backends .backend_pdf import PdfPages
204207
205- keys = ["params" , "benchmark" ] if triton_benchmark else ["suite" , "mode" , "datatype" ]
206- df ["xlabel" ] = df [keys ].agg (", " .join , axis = 1 )
208+ def get_filename (perf_index , numerator , denominator ) -> str :
209+ num_col , denom_col = get_column_names (perf_index , numerator , denominator )
210+ return f"performance-plot-{ num_col } -{ denom_col } .pdf" .lower ()
211+
207212
208- # Sort by configuration
209- order = list (df ["xlabel" ].unique ())
210- order .sort ()
211- filename = f"performance-plot-{ num_col } -{ denom_col } .pdf" .lower ()
212- with PdfPages (filename ) as pdf :
213- fig = plt .figure ()
214- plt .xticks (rotation = 85 )
213+ def plot_diff_df (df , triton_benchmark : bool , perf_index : str , numerator : str , denominator : str ):
214+ # pylint: disable=import-outside-toplevel
215+ import seaborn as sns
216+ import matplotlib .pyplot as plt
217+ from matplotlib .backends .backend_pdf import PdfPages
215218
216- title = ("Relative difference 0.0 means both perform identically,\n "
217- f"relative difference > 0.0 means { numerator } performs better,\n "
218- f"relative difference < 0.0 means { denominator } performs better" )
219- plt .title (f"Comparison { numerator } vs { denominator } ." )
219+ keys = ["params" , "benchmark" ] if triton_benchmark else ["suite" , "mode" , "datatype" ]
220+ df ["xlabel" ] = df [keys ].agg (", " .join , axis = 1 )
220221
221- plt .figtext (1 , 0.5 , title )
222+ # Sort by configuration
223+ order = list (df ["xlabel" ].unique ())
224+ order .sort ()
222225
223- ax = sns .boxplot (df , x = "xlabel" , y = "relative difference" , order = order )
226+ filename = get_filename (perf_index , numerator , denominator )
227+ with PdfPages (filename ) as pdf :
228+ fig = plt .figure ()
229+ plt .xticks (rotation = 85 )
224230
225- ax .set (xlabel = None , ylabel = f"Relative difference in { perf_index } " )
231+ title = ("Relative difference 0.0 means both perform identically,\n "
232+ f"relative difference > 0.0 means { numerator } performs better,\n "
233+ f"relative difference < 0.0 means { denominator } performs better" )
234+ plt .title (f"Comparison { numerator } vs { denominator } ." )
226235
227- pdf .savefig (fig , bbox_inches = "tight" )
228- print (f"Saved performance plot to { filename } " )
236+ plt .figtext (1 , 0.5 , title )
237+
238+ ax = sns .boxplot (df , x = "xlabel" , y = "relative difference" , order = order )
239+
240+ ax .set (xlabel = None , ylabel = f"Relative difference in { perf_index } " )
241+
242+ pdf .savefig (fig , bbox_inches = "tight" )
243+ print (f"Saved performance plot to { filename } " )
229244
230245
231246def eval_data (triton_benchmark : bool , plot : bool , df : pd .DataFrame , numerator : str , denominator : str ):
232247 """Evaluate the data, print a summary and plot if enabled."""
233248 if triton_benchmark :
234- num_tri2xe_col = f"Tri2Xe-{ numerator } "
235- dem_tri2xe_col = f"Tri2Xe-{ denominator } "
236-
237- df_ratio = df [["params" , "benchmark" , num_tri2xe_col , dem_tri2xe_col ]]
238- summarize_diff (triton_benchmark , "tri2xe" , plot , df_ratio , num_tri2xe_col , dem_tri2xe_col , numerator ,
239- denominator )
249+ perf_index = "Tri2Xe"
250+ num_col , denom_col = get_column_names (perf_index , numerator , denominator )
251+ df_ratio = df [["params" , "benchmark" , num_col , denom_col ]]
252+ diff_df = summarize_diff (perf_index , df_ratio , numerator , denominator )
240253 else :
241- num_col = f"speedup { numerator } "
242- denom_col = f"speedup { denominator } "
243-
254+ perf_index = "speedup"
244255 df .drop (columns = ["batch_size_x" , "batch_size_y" ], inplace = True )
245- summarize_diff (triton_benchmark , "speedup" , plot , df , num_col , denom_col , numerator , denominator )
256+ diff_df = summarize_diff (perf_index , df , numerator , denominator )
257+ if plot :
258+ plot_diff_df (diff_df , triton_benchmark , perf_index , numerator , denominator )
246259
247260
248261def main ():
@@ -295,8 +308,8 @@ def main():
295308 ]
296309 else :
297310 cols = [
298- "dev" , "suite" , "name" , "mode" , "datatype" , "batch_size_x" , "batch_size_y" , f"speedup { num_cfg } " ,
299- f"speedup { denom_cfg } "
311+ "dev" , "suite" , "name" , "mode" , "datatype" , "batch_size_x" , "batch_size_y" , f"speedup- { num_cfg } " ,
312+ f"speedup- { denom_cfg } "
300313 ]
301314
302315 df = df [cols ]
0 commit comments