Skip to content

Commit 0c9fac1

Browse files
committed
Comments out logic for L2 metrics under retiring since I can't figure out how to access UOPS_RETIRED:MACRO_FUSED
1 parent 36bf4ec commit 0c9fac1

File tree

1 file changed

+38
-32
lines changed

1 file changed

+38
-32
lines changed

src/services/topdown/SkylakeTopdown.cpp

+38-32
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,32 @@ SkylakeTopdown::SkylakeTopdown(IntelTopdownLevel level)
1818
",UOPS_ISSUED:ANY"
1919
",UOPS_RETIRED:RETIRE_SLOTS"
2020
",INT_MISC:RECOVERY_CYCLES"
21-
",CPU_CLK_UNHALTED:THREAD",
21+
",CPU_CLK_UNHALTED:THREAD_P",
2222
// all_counters
2323
"IDQ_UOPS_NOT_DELIVERED:CORE"
2424
",UOPS_ISSUED:ANY"
2525
",UOPS_RETIRED:RETIRE_SLOTS"
2626
",INT_MISC:RECOVERY_CYCLES"
27-
",CPU_CLK_UNHALTED:THREAD"
27+
",CPU_CLK_UNHALTED:THREAD_P"
2828
",IDQ_UOPS_NOT_DELIVERED:CYCLES_0_UOPS_DELIV_CORE"
2929
",BR_MISP_RETIRED:ALL_BRANCHES"
3030
",MACHINE_CLEARS:COUNT"
3131
",CYCLE_ACTIVITY:STALLS_MEM_ANY"
3232
",EXE_ACTIVITY:BOUND_ON_STORES"
3333
",CYCLE_ACTIVITY:STALLS_TOTAL"
3434
",EXE_ACTIVITY:1_PORTS_UTIL"
35-
",EXE_ACTIVITY:2_PORTS_UTIL"
36-
",UOPS_RETIRED:MACRO_FUSED"
37-
",INST_RETIRED:ANY",
35+
",EXE_ACTIVITY:2_PORTS_UTIL",
36+
// Note: PAPI doesn't seem to have UOPS_RETIRED.MACRO_FUSED,
37+
// so we can't currently calculate L2 metrics under retiring.
38+
// The commented counters below are unique to these metrics.
39+
// ",UOPS_RETIRED:MACRO_FUSED"
40+
// ",INST_RETIRED:ANY_P"
3841
// res_top
3942
{ "retiring", "backend_bound", "frontend_bound", "bad_speculation" },
4043
// res_all
4144
{ "retiring",
42-
"light_operations",
43-
"heavy_operations",
45+
// "light_operations",
46+
// "heavy_operations",
4447
"backend_bound",
4548
"memory_bound",
4649
"core_bound",
@@ -73,7 +76,7 @@ std::vector<Entry> SkylakeTopdown::compute_toplevel(const std::vector<Entry>& re
7376
Variant v_uops_issued_any = get_val_from_rec(rec, "UOPS_ISSUED:ANY");
7477
Variant v_uops_retired_retire_slots = get_val_from_rec(rec, "UOPS_RETIRED:RETIRE_SLOTS");
7578
Variant v_int_misc_recovery_cycles = get_val_from_rec(rec, "INT_MISC:RECOVERY_CYCLES");
76-
Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD");
79+
Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD_P");
7780

7881
bool is_incomplete = v_idq_uops_not_delivered_core.empty() || v_uops_issued_any.empty()
7982
|| v_uops_retired_retire_slots.empty() || v_int_misc_recovery_cycles.empty()
@@ -119,40 +122,43 @@ std::size_t SkylakeTopdown::get_num_expected_toplevel() const
119122
std::vector<Entry> SkylakeTopdown::compute_retiring(const std::vector<Entry>& rec)
120123
{
121124
std::vector<Entry> ret;
125+
126+
// TODO uncomment when we can figure out the raw counter corresponding to
127+
// UOPS_RETIRED:MACRO_FUSED
122128

123-
Variant v_uops_retired_retire_slots = get_val_from_rec(rec, "UOPS_RETIRED:RETIRE_SLOTS");
124-
Variant v_uops_retired_macro_fused = get_val_from_rec(rec, "UOPS_RETIRED:MACRO_FUSED");
125-
Variant v_inst_retired_any = get_val_from_rec(rec, "INST_RETIRED:ANY");
126-
Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD");
129+
// Variant v_uops_retired_retire_slots = get_val_from_rec(rec, "UOPS_RETIRED:RETIRE_SLOTS");
130+
// Variant v_uops_retired_macro_fused = get_val_from_rec(rec, "UOPS_RETIRED:MACRO_FUSED");
131+
// Variant v_inst_retired_any = get_val_from_rec(rec, "INST_RETIRED:ANY_P");
132+
// Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD_P");
127133

128-
bool is_incomplete = v_uops_retired_retire_slots.empty() || v_uops_retired_macro_fused.empty()
129-
|| v_inst_retired_any.empty() || v_cpu_clk_unhalted_thread.empty();
134+
// bool is_incomplete = v_uops_retired_retire_slots.empty() || v_uops_retired_macro_fused.empty()
135+
// || v_inst_retired_any.empty() || v_cpu_clk_unhalted_thread.empty();
130136

131-
double thread_slots = 4 * v_cpu_clk_unhalted_thread.to_double();
137+
// double thread_slots = 4 * v_cpu_clk_unhalted_thread.to_double();
132138

133-
if (is_incomplete || !(thread_slots > 1.0)) {
134-
return ret;
135-
}
139+
// if (is_incomplete || !(thread_slots > 1.0)) {
140+
// return ret;
141+
// }
136142

137-
double retiring = std::max(v_uops_retired_retire_slots.to_double() / thread_slots, 0.0);
143+
// double retiring = std::max(v_uops_retired_retire_slots.to_double() / thread_slots, 0.0);
138144

139-
double heavy_operations = std::max(
140-
(v_uops_retired_retire_slots.to_double() + v_uops_retired_macro_fused.to_double()
141-
- v_inst_retired_any.to_double())
142-
/ thread_slots,
143-
0.0
144-
);
145+
// double heavy_operations = std::max(
146+
// (v_uops_retired_retire_slots.to_double() + v_uops_retired_macro_fused.to_double()
147+
// - v_inst_retired_any.to_double())
148+
// / thread_slots,
149+
// 0.0
150+
// );
145151

146-
ret.reserve(2);
147-
ret.push_back(Entry(m_result_attrs["heavy_operations"], Variant(heavy_operations)));
148-
ret.push_back(Entry(m_result_attrs["light_operations"], Variant(std::max(retiring - heavy_operations, 0.0))));
152+
// ret.reserve(2);
153+
// ret.push_back(Entry(m_result_attrs["heavy_operations"], Variant(heavy_operations)));
154+
// ret.push_back(Entry(m_result_attrs["light_operations"], Variant(std::max(retiring - heavy_operations, 0.0))));
149155

150156
return ret;
151157
}
152158

153159
std::size_t SkylakeTopdown::get_num_expected_retiring() const
154160
{
155-
return 2;
161+
return 0;
156162
}
157163

158164
std::vector<Entry> SkylakeTopdown::compute_backend_bound(const std::vector<Entry>& rec)
@@ -169,7 +175,7 @@ std::vector<Entry> SkylakeTopdown::compute_backend_bound(const std::vector<Entry
169175
Variant v_uops_issued_any = get_val_from_rec(rec, "UOPS_ISSUED:ANY");
170176
Variant v_uops_retired_retire_slots = get_val_from_rec(rec, "UOPS_RETIRED:RETIRE_SLOTS");
171177
Variant v_int_misc_recovery_cycles = get_val_from_rec(rec, "INT_MISC:RECOVERY_CYCLES");
172-
Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD");
178+
Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD_P");
173179

174180
bool is_incomplete = v_idq_uops_not_delivered_core.empty() || v_uops_issued_any.empty()
175181
|| v_uops_retired_retire_slots.empty() || v_int_misc_recovery_cycles.empty()
@@ -220,7 +226,7 @@ std::vector<Entry> SkylakeTopdown::compute_frontend_bound(const std::vector<Entr
220226
Variant v_idq_uops_not_delivered_cycles_0_uops_deliv_core =
221227
get_val_from_rec(rec, "IDQ_UOPS_NOT_DELIVERED:CYCLES_0_UOPS_DELIV_CORE");
222228
Variant v_idq_uops_not_delivered_core = get_val_from_rec(rec, "IDQ_UOPS_NOT_DELIVERED:CORE");
223-
Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD");
229+
Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD_P");
224230

225231
bool is_incomplete = v_idq_uops_not_delivered_cycles_0_uops_deliv_core.empty()
226232
|| v_idq_uops_not_delivered_core.empty() || v_cpu_clk_unhalted_thread.empty();
@@ -257,7 +263,7 @@ std::vector<Entry> SkylakeTopdown::compute_bad_speculation(const std::vector<Ent
257263
Variant v_uops_issued_any = get_val_from_rec(rec, "UOPS_ISSUED:ANY");
258264
Variant v_uops_retired_retire_slots = get_val_from_rec(rec, "UOPS_RETIRED:RETIRE_SLOTS");
259265
Variant v_int_misc_recovery_cycles = get_val_from_rec(rec, "INT_MISC:RECOVERY_CYCLES");
260-
Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD");
266+
Variant v_cpu_clk_unhalted_thread = get_val_from_rec(rec, "CPU_CLK_UNHALTED:THREAD_P");
261267

262268
bool is_incomplete = v_br_misp_retired_all_branches.empty() || v_machine_clears_count.empty()
263269
|| v_uops_issued_any.empty() || v_uops_retired_retire_slots.empty()

0 commit comments

Comments
 (0)