intel/perf: add support new variable counting the number of EUs in slice0-3

v2: MIN2(4, max_slices) (Marcin)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16144>
This commit is contained in:
Lionel Landwerlin 2021-06-23 18:28:13 +03:00 committed by Marge Bot
parent 6f63bc38e7
commit c740ca6000
3 changed files with 18 additions and 0 deletions

View File

@ -214,6 +214,7 @@ hw_vars["$EuCoresTotalCount"] = "perf->sys_vars.n_eus"
hw_vars["$EuSlicesTotalCount"] = "perf->sys_vars.n_eu_slices"
hw_vars["$EuSubslicesTotalCount"] = "perf->sys_vars.n_eu_sub_slices"
hw_vars["$EuDualSubslicesTotalCount"] = "perf->sys_vars.n_eu_sub_slices"
hw_vars["$EuDualSubslicesSlice0123Count"] = "perf->sys_vars.n_eu_slice0123"
hw_vars["$EuThreadsCount"] = "perf->devinfo.num_thread_per_eu"
hw_vars["$SliceMask"] = "perf->sys_vars.slice_mask"
# subslice_mask is interchangeable with subslice/dual-subslice since Gfx12+

View File

@ -352,6 +352,22 @@ compute_topology_builtins(struct intel_perf_config *perf)
perf->sys_vars.slice_mask = devinfo->slice_masks;
perf->sys_vars.n_eu_slices = devinfo->num_slices;
perf->sys_vars.n_eu_slice0123 = 0;
for (int s = 0; s < MIN2(4, devinfo->max_slices); s++) {
if (!intel_device_info_slice_available(devinfo, s))
continue;
for (int ss = 0; ss < devinfo->max_subslices_per_slice; ss++) {
if (!intel_device_info_subslice_available(devinfo, s, ss))
continue;
for (int eu = 0; eu < devinfo->max_eus_per_subslice; eu++) {
if (intel_device_info_eu_available(devinfo, s, ss, eu))
perf->sys_vars.n_eu_slice0123++;
}
}
}
for (int i = 0; i < sizeof(devinfo->subslice_masks[i]); i++) {
perf->sys_vars.n_eu_sub_slices +=
util_bitcount(devinfo->subslice_masks[i]);

View File

@ -337,6 +337,7 @@ struct intel_perf_config {
uint64_t n_eus; /** $EuCoresTotalCount */
uint64_t n_eu_slices; /** $EuSlicesTotalCount */
uint64_t n_eu_sub_slices; /** $EuSubslicesTotalCount */
uint64_t n_eu_slice0123; /** $EuDualSubslicesSlice0123Count */
uint64_t slice_mask; /** $SliceMask */
uint64_t subslice_mask; /** $SubsliceMask */
uint64_t gt_min_freq; /** $GpuMinFrequency */