@@ -90,18 +90,30 @@ def print_eval_result(result: EvaluationResult):
9090 print ("-" * 40 )
9191 print (f"Reference time: { result .reference_time_ms :.3f} ms" )
9292 print (f"Optimized time: { result .optimized_time_ms :.3f} ms" )
93- speedup = result .speedup
94- if speedup is not None :
95- print (f"Speedup: { speedup :.2f} x" )
93+ wall_time_speedup = result .speedup
94+ if wall_time_speedup is not None :
95+ print (f"Wall time speedup: { wall_time_speedup :.2f} x" )
9696 else :
97- print ("Speedup: N/A" )
97+ print ("Wall time speedup: N/A" )
98+
99+ xprof_speedup = result .speed_up_xprof
100+ if xprof_speedup is not None :
101+ print (f"XProf speedup: { xprof_speedup :.2f} x" )
102+ else :
103+ print ("XProf speedup: N/A" )
104+
105+ if result .logs :
106+ print ("Harness Logs:" )
107+ for log_msg in result .logs :
108+ print (f" - { log_msg } " )
98109 print ("=" * 40 + "\n " )
99110
100111
101112def summarize_results (
102113 results : list ,
103114 speedup_threshold : float ,
104115 output_dir : Optional [str ] = None ,
116+ use_xprof_speedup : bool = True ,
105117) -> None :
106118 """
107119 Calculates and prints summary statistics for a list of evaluation results.
@@ -110,6 +122,7 @@ def summarize_results(
110122 results: A list of dictionaries, where each dictionary is an evaluation result.
111123 speedup_threshold: The minimum speedup factor to consider an improvement.
112124 output_dir: Optional directory path to save the summary report and stats.
125+ use_xprof_speedup: Whether to use XProf speedup for the summary.
113126 """
114127 total_attempted = len (results )
115128 if not total_attempted :
@@ -123,9 +136,20 @@ def summarize_results(
123136 num_correct = len (correct_tasks )
124137
125138 # Speedup calculations should only be on tasks that are numerically correct.
126- speedups = [
127- r ["speedup" ] for r in correct_tasks if r .get ("speedup" ) is not None
128- ]
139+ speedups = []
140+ for r in correct_tasks :
141+ s = None
142+ if use_xprof_speedup :
143+ if r .get ("speed_up_xprof" ) is not None :
144+ s = r ["speed_up_xprof" ]
145+ elif r .get ("speedup" ) is not None :
146+ s = r ["speedup" ]
147+ else :
148+ if r .get ("speedup" ) is not None :
149+ s = r ["speedup" ]
150+
151+ if s is not None :
152+ speedups .append (s )
129153
130154 improvements = [s for s in speedups if s > speedup_threshold ]
131155 num_improved = len (improvements )
@@ -214,7 +238,9 @@ def summarize_results(
214238 logger .info (f"Saved evaluation summary and stats to { output_dir } " )
215239
216240
217- def visualize_speed_up (results : list , output_dir : str ) -> None :
241+ def visualize_speed_up (
242+ results : list , output_dir : str , use_xprof_speedup : bool = True
243+ ) -> None :
218244 """
219245 Visualizes the evaluation results.
220246
@@ -223,6 +249,7 @@ def visualize_speed_up(results: list, output_dir: str) -> None:
223249 output_dir: Directory path to save the output PNG files.
224250 Will generate speedup_distribution.png and
225251 speedup_barplot.png in this directory.
252+ use_xprof_speedup: Whether to use XProf speedup for the visualization.
226253 """
227254 os .makedirs (output_dir , exist_ok = True )
228255
@@ -238,7 +265,16 @@ def set_log_ticks(ax, log_values):
238265 plot_data = []
239266 for r in results :
240267 is_valid = r .get ("compiled_successfully" ) and r .get ("numerically_correct" )
241- s = r .get ("speedup" ) if is_valid else None
268+ s = None
269+ if is_valid :
270+ if use_xprof_speedup :
271+ if r .get ("speed_up_xprof" ) is not None :
272+ s = r ["speed_up_xprof" ]
273+ else :
274+ s = r .get ("speedup" )
275+ else :
276+ s = r .get ("speedup" )
277+
242278 log_s = math .log2 (s ) if s and s > 0 else - 10.0
243279 plot_data .append ((r ["task_id" ], log_s , not is_valid ))
244280
0 commit comments