@@ -86,6 +86,40 @@ def blk_relative_cost(nogt, gt) -> Tuple[int, int]:
86
86
return no_sum , yes_sum
87
87
88
88
89
+ RP_GT_FINISHED = 'GraphTransRPNodeSuperiorityFinished'
90
+ ILP_GT_FINISHED = 'GraphTransILPNodeSuperiorityFinished'
91
+ RP_ILP_GT_FINISHED = 'GraphTransOccupancyPreservingILPNodeSuperiorityFinished'
92
+
93
+
94
+ def _edges_added_for_blk (blk : Block , fin_id : str ) -> int :
95
+ if fin_id not in blk :
96
+ return 0
97
+ return sum (ev ['superior_edges' ] for ev in blk [fin_id ])
98
+
99
+
100
+ def edges_added_for_blk (blk : Block ) -> int :
101
+ return _edges_added_for_blk (blk , RP_GT_FINISHED ) + _edges_added_for_blk (blk , ILP_GT_FINISHED ) + _edges_added_for_blk (blk , RP_ILP_GT_FINISHED )
102
+
103
+
104
+ def _edges_removed_for_blk (blk : Block , fin_id : str ) -> int :
105
+ if fin_id not in blk :
106
+ return 0
107
+ try :
108
+ return sum (ev ['removed_edges' ] for ev in blk [fin_id ])
109
+ except KeyError :
110
+ return 0
111
+
112
+
113
+ def edges_removed_for_blk (blk : Block ) -> int :
114
+ return _edges_removed_for_blk (blk , RP_GT_FINISHED ) + _edges_removed_for_blk (blk , ILP_GT_FINISHED ) + _edges_removed_for_blk (blk , RP_ILP_GT_FINISHED )
115
+
116
+
117
+ def edges_rp_rejected_for_blk (blk : Block ) -> int :
118
+ if RP_ILP_GT_FINISHED not in blk :
119
+ return 0
120
+ return sum (ev ['failed_rp' ] for ev in blk [RP_ILP_GT_FINISHED ])
121
+
122
+
89
123
def compute_stats (nogt : Logs , gt : Logs , * , pass_num : int , total_compile_time_seconds ):
90
124
nogt_all , gt_all = nogt , gt
91
125
@@ -109,6 +143,7 @@ def compute_stats(nogt: Logs, gt: Logs, *, pass_num: int, total_compile_time_sec
109
143
110
144
'Total Compile Time (s) (all benchsuite) (No GT)' : total_compile_time_seconds (nogt_all ),
111
145
'Total Compile Time (s) (all benchsuite) (GT)' : total_compile_time_seconds (gt_all ),
146
+
112
147
'Total Sched Time (No GT)' : sched_time (nogt ),
113
148
'Total Sched Time (GT)' : sched_time (gt ),
114
149
'Enum Time (No GT)' : utils .sum_stat_for_all (enum_time_for_blk , nogt ),
@@ -118,12 +153,24 @@ def compute_stats(nogt: Logs, gt: Logs, *, pass_num: int, total_compile_time_sec
118
153
'Heuristic Time (No GT)' : compile_times .heuristic_time (nogt ),
119
154
'Heuristic Time (GT)' : compile_times .heuristic_time (gt ),
120
155
'Total GT Time' : utils .sum_stat_for_all (total_gt_elapsed_for_blk , gt ),
156
+ 'Edges Added' : utils .sum_stat_for_all (edges_added_for_blk , gt ),
157
+ 'Edges Removed' : utils .sum_stat_for_all (edges_removed_for_blk , gt ),
158
+ 'Edges Rejected by RP' : utils .sum_stat_for_all (edges_rp_rejected_for_blk , gt ),
121
159
122
160
'Total Sched Time (opt. blks only) (No GT)' : sched_time (nogt_opt ),
123
161
'Total Sched Time (opt. blks only) (GT)' : sched_time (gt_opt ),
124
162
'Enum Time (opt. blocks only) (No GT)' : utils .sum_stat_for_all (enum_time_for_blk , nogt_opt ),
125
163
'Enum Time (opt. blocks only) (GT)' : utils .sum_stat_for_all (enum_time_for_blk , gt_opt ),
126
164
165
+ 'Lower Bound Time (opt. blocks only) (No GT)' : compile_times .first_lower_bound_time (nogt_opt ),
166
+ 'Lower Bound Time (opt. blocks only) (GT)' : compile_times .first_lower_bound_time (gt_opt ),
167
+ 'Heuristic Time (opt. blocks only) (No GT)' : compile_times .heuristic_time (nogt_opt ),
168
+ 'Heuristic Time (opt. blocks only) (GT)' : compile_times .heuristic_time (gt_opt ),
169
+ 'Total GT Time (opt. blocks only)' : utils .sum_stat_for_all (total_gt_elapsed_for_blk , gt_opt ),
170
+ 'Edges Added (opt. blocks only)' : utils .sum_stat_for_all (edges_added_for_blk , gt_opt ),
171
+ 'Edges Removed (opt. blocks only)' : utils .sum_stat_for_all (edges_removed_for_blk , gt_opt ),
172
+ 'Edges Rejected by RP (opt. blocks only)' : utils .sum_stat_for_all (edges_rp_rejected_for_blk , gt_opt ),
173
+
127
174
'Block Cost - Relative (No GT)' : nogt_rel ,
128
175
'Block Cost - Relative (GT)' : gt_rel ,
129
176
'Block Cost (No GT)' : utils .sum_stat_for_all (block_stats .block_cost , nogt ),
0 commit comments