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

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue May 17 20:20:08 UTC 2022


Module: Mesa
Branch: main
Commit: c740ca60008ef0662325df0d755e941767dd7bd8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c740ca60008ef0662325df0d755e941767dd7bd8

Author: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Date:   Wed Jun 23 18:28:13 2021 +0300

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 at intel.com>
Reviewed-by: Marcin Ślusarz <marcin.slusarz at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16144>

---

 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 */



More information about the mesa-commit mailing list