From c740ca60008ef0662325df0d755e941767dd7bd8 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Wed, 23 Jun 2021 18:28:13 +0300 Subject: [PATCH] intel/perf: add support new variable counting the number of EUs in slice0-3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v2: MIN2(4, max_slices) (Marcin) Signed-off-by: Lionel Landwerlin Reviewed-by: Marcin Ĺšlusarz Part-of: --- src/intel/perf/gen_perf.py | 1 + src/intel/perf/intel_perf.c | 16 ++++++++++++++++ src/intel/perf/intel_perf.h | 1 + 3 files changed, 18 insertions(+) diff --git a/src/intel/perf/gen_perf.py b/src/intel/perf/gen_perf.py index ac6ac53985a..36b81da50f6 100644 --- a/src/intel/perf/gen_perf.py +++ b/src/intel/perf/gen_perf.py @@ -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+ diff --git a/src/intel/perf/intel_perf.c b/src/intel/perf/intel_perf.c index f40385304b2..d0baa0b8291 100644 --- a/src/intel/perf/intel_perf.c +++ b/src/intel/perf/intel_perf.c @@ -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]); diff --git a/src/intel/perf/intel_perf.h b/src/intel/perf/intel_perf.h index ba90a660190..3b0825e4b47 100644 --- a/src/intel/perf/intel_perf.h +++ b/src/intel/perf/intel_perf.h @@ -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 */