Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: <igt-dev@lists.freedesktop.org>,
	Lionel G Landwerlin <lionel.g.landwerlin@intel.com>,
	Ashutosh Dixit <ashutosh.dixit@intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t v6 33/36] lib/i915: prepare codegen for new ACM/DG2 variables
Date: Mon, 10 Oct 2022 16:04:42 -0700	[thread overview]
Message-ID: <Y0SlCpP00TC4NMJc@unerlige-ril> (raw)
In-Reply-To: <20221010214215.5378-34-umesh.nerlige.ramappa@intel.com>

On Mon, Oct 10, 2022 at 09:42:12PM +0000, Umesh Nerlige Ramappa wrote:
>From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
>
>Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>

lgtm,
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> lib/i915/perf-configs/codegen.py              | 84 +++++++++++++++----
> .../perf-configs/perf-metricset-codegen.py    | 13 +++
> 2 files changed, 81 insertions(+), 16 deletions(-)
>
>diff --git a/lib/i915/perf-configs/codegen.py b/lib/i915/perf-configs/codegen.py
>index 93a2df4a..755142cc 100644
>--- a/lib/i915/perf-configs/codegen.py
>+++ b/lib/i915/perf-configs/codegen.py
>@@ -1,3 +1,4 @@
>+import re
> import xml.etree.ElementTree as et
>
> class Codegen:
>@@ -123,6 +124,51 @@ class Set:
>         return self.xml.find(path)
>
>
>+hw_vars_mapping = {
>+    "$EuCoresTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
>+    "$EuSlicesTotalCount": { 'c': "perf->devinfo.n_eu_slices" },
>+    "$EuSubslicesTotalCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
>+    "$EuDualSubslicesTotalCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
>+    "$EuDualSubslicesSlice0123Count": { 'c': "perf->devinfo.n_eu_sub_slices_half_slices" },
>+    "$EuThreadsCount": { 'c': "perf->devinfo.eu_threads_count" },
>+
>+    "$VectorEngineTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
>+    "$VectorEnginePerXeCoreCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
>+    "$VectorEngineThreadsCount": { 'c': "perf->devinfo.eu_threads_count" },
>+
>+    "$SliceMask": { 'c': "perf->devinfo.slice_mask" },
>+    "$SliceTotalCount": { 'c': "perf->devinfo.n_eu_slices" },
>+
>+    "$SubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
>+    "$DualSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
>+
>+    "$GtSliceMask": { 'c': "perf->devinfo.slice_mask" },
>+    "$GtSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
>+    "$GtDualSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
>+
>+    "$GtXeCoreMask": { 'c': "perf->devinfo.slice_mask" },
>+    "$XeCoreMask": { 'c': "perf->devinfo.slice_mask" },
>+    "$XeCoreTotalCount": { 'c': 'perf->devinfo.n_eu_sub_slices' },
>+
>+    "$GpuTimestampFrequency": { 'c': "perf->devinfo.timestamp_frequency" },
>+    "$GpuMinFrequency": { 'c': "perf->devinfo.gt_min_freq" },
>+    "$GpuMaxFrequency": { 'c': "perf->devinfo.gt_max_freq" },
>+    "$SkuRevisionId": { 'c': "perf->devinfo.revision" },
>+    "$QueryMode": { 'c': "perf->devinfo.query_mode" },
>+}
>+
>+def is_hw_var(name):
>+    m = re.search('\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
>+    if m:
>+        return True
>+    m = re.search('\$GtSlice([0-9]+)$', name)
>+    if m:
>+        return True
>+    m = re.search('\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
>+    if m:
>+        return True
>+    return name in hw_vars_mapping
>+
> class Gen:
>     def __init__(self, filename, c):
>         self.filename = filename
>@@ -163,23 +209,11 @@ class Gen:
>         self.exp_ops["ULTE"] = (2, self.splice_ulte)
>         self.exp_ops["ULT"]  = (2, self.splice_ult)
>         self.exp_ops["&&"]   = (2, self.splice_logical_and)
>+        self.exp_ops["<<"]   = (2, self.splice_lshft)
>+        self.exp_ops[">>"]   = (2, self.splice_rshft)
>+        self.exp_ops["UMUL"] = (2, self.splice_uml)
>
>-        self.hw_vars = {
>-            "$EuCoresTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
>-            "$EuSlicesTotalCount": { 'c': "perf->devinfo.n_eu_slices" },
>-            "$EuSubslicesTotalCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
>-            "$EuDualSubslicesTotalCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
>-            "$EuDualSubslicesSlice0123Count": { 'c': "perf->devinfo.n_eu_sub_slices_half_slices" },
>-            "$EuThreadsCount": { 'c': "perf->devinfo.eu_threads_count" },
>-            "$SliceMask": { 'c': "perf->devinfo.slice_mask" },
>-            "$DualSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
>-            "$SubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
>-            "$GpuTimestampFrequency": { 'c': "perf->devinfo.timestamp_frequency" },
>-            "$GpuMinFrequency": { 'c': "perf->devinfo.gt_min_freq" },
>-            "$GpuMaxFrequency": { 'c': "perf->devinfo.gt_max_freq" },
>-            "$SkuRevisionId": { 'c': "perf->devinfo.revision" },
>-            "$QueryMode": { 'c': "perf->devinfo.query_mode" },
>-        }
>+        self.hw_vars = hw_vars_mapping
>
>     def emit_fadd(self, tmp_id, args):
>         self.c("double tmp{0} = {1} + {2};".format(tmp_id, args[1], args[0]))
>@@ -286,11 +320,29 @@ class Gen:
>     def splice_ugt(self, args):
>         return self.brkt(args[1]) + " > " + self.brkt(args[0])
>
>+    def splice_lshft(self, args):
>+        return '(' + self.brkt(args[1]) + " << " + self.brkt(args[0]) + ')'
>+
>+    def splice_rshft(self, args):
>+        return '(' + self.brkt(args[1]) + " >> " + self.brkt(args[0]) + ')'
>+
>+    def splice_uml(self, args):
>+        return self.brkt(args[1]) + " * " + self.brkt(args[0])
>+
>     def resolve_variable(self, name, set):
>         if name in self.hw_vars:
>             return self.hw_vars[name]['c']
>         if name in set.counter_vars:
>             return set.read_funcs[name] + "(perf, metric_set, accumulator)"
>+        m = re.search('\$GtSlice([0-9]+)$', name)
>+        if m:
>+            return 'intel_perf_devinfo_slice_available(&perf->devinfo, {0})'.format(m.group(1))
>+        m = re.search('\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
>+        if m:
>+            return 'intel_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
>+        m = re.search('\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
>+        if m:
>+            return 'intel_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
>         return None
>
>     def output_rpn_equation_code(self, set, counter, equation):
>diff --git a/lib/i915/perf-configs/perf-metricset-codegen.py b/lib/i915/perf-configs/perf-metricset-codegen.py
>index 00528c31..80b01be5 100644
>--- a/lib/i915/perf-configs/perf-metricset-codegen.py
>+++ b/lib/i915/perf-configs/perf-metricset-codegen.py
>@@ -126,6 +126,19 @@ def generate_metric_sets(args, gen):
>                 metric_set->c_offset = metric_set->b_offset + 8;
>                 metric_set->perfcnt_offset = metric_set->c_offset + 8;
>
>+            """))
>+        elif gen.chipset.startswith("acm"):
>+            c(textwrap.dedent("""\
>+                metric_set->perf_oa_format = I915_OA_FORMAT_A24u40_A14u32_B8_C8;
>+
>+                metric_set->perf_raw_size = 256;
>+                metric_set->gpu_time_offset = 0;
>+                metric_set->gpu_clock_offset = 1;
>+                metric_set->a_offset = 2;
>+                metric_set->b_offset = metric_set->a_offset + 38;
>+                metric_set->c_offset = metric_set->b_offset + 8;
>+                metric_set->perfcnt_offset = metric_set->c_offset + 8;
>+
>             """))
>         else:
>             c(textwrap.dedent("""\
>-- 
>2.25.1
>

  reply	other threads:[~2022-10-10 23:04 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-10 21:41 [igt-dev] [PATCH i-g-t v6 00/36] Add DG2 OA test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 01/36] i915/perf: Check regularly if we are done reading reports Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 02/36] i915/perf: Fix OA short_reads test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 03/36] i915/perf: Check return value from getparam Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 04/36] i915/perf: Limit sseu-config tests for gen11 Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 05/36] i915/perf: Account for OA sampling interval in polling test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 06/36] i915/perf: Define OA report types and fix oa-formats test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 07/36] i915/perf: Use ARRAY_SIZE consistently for num_properties Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 08/36] i915/perf: Use gt in perf tests and lib Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 09/36] i915/perf: Explicitly state rendercopy needs for a test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 10/36] i915/perf: Skip tests that use rendercopy Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 11/36] i915/perf: Add OA formats for DG2 Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 12/36] i915/perf: Fix CS timestamp vs OA timstamp mismatch Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 13/36] i915/perf: Wait longer for rc6 residency in DG2 Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 14/36] lib/i915/perf: implement report accumulation for new format Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 15/36] lib/i915/perf: fixup conversion script for XEHPSDV Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 16/36] lib/i915/perf: make warning message more helpful Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 17/36] lib/i915/perf: expose new operators for codegen Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 18/36] tools/i915-perf-recorder: add ability to select device Umesh Nerlige Ramappa
2022-10-10 22:06   ` Umesh Nerlige Ramappa
2022-10-11  6:22   ` Petri Latvala
2022-10-18 22:52     ` Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 19/36] lib/i915/perf: fixup report validity Umesh Nerlige Ramappa
2022-10-10 22:08   ` Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 20/36] lib/i915/perf: add a helper to read timestamps Umesh Nerlige Ramappa
2022-10-10 22:22   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 21/36] lib/i915/perf: store bit shifting required for OA timestamps Umesh Nerlige Ramappa
2022-10-10 22:52   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 22/36] lib/i915/perf: indentation fix Umesh Nerlige Ramappa
2022-10-10 22:52   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 23/36] tools/i915-perf-recorder: capture OA & CS frequencies Umesh Nerlige Ramappa
2022-10-10 22:54   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 24/36] tools/i915-perf: make timestamp range easier to compare Umesh Nerlige Ramappa
2022-10-10 22:54   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 25/36] tools/i915-perf: printout CPU clock used Umesh Nerlige Ramappa
2022-10-10 22:55   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 26/36] tools/i915-perf: record remaining perf data on exit Umesh Nerlige Ramappa
2022-10-10 22:55   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 27/36] lib/i915/perf: add support for new EuDualSubslicesTotalCount var Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 28/36] lib/i915/perf-config: extend the device info Umesh Nerlige Ramappa
2022-10-10 22:57   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 29/36] i915/perf: update import script Umesh Nerlige Ramappa
2022-10-10 23:00   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 30/36] lib/i915/perf: add a raw timestamp utility Umesh Nerlige Ramappa
2022-10-10 23:00   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 31/36] lib/i915/perf: add helper function to get report reason Umesh Nerlige Ramappa
2022-10-10 23:02   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 32/36] tools/i915-perf: add option to printout reports data Umesh Nerlige Ramappa
2022-10-10 23:03   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 33/36] lib/i915: prepare codegen for new ACM/DG2 variables Umesh Nerlige Ramappa
2022-10-10 23:04   ` Umesh Nerlige Ramappa [this message]
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 34/36] lib/i915/perf: Add ACM GT1 metrics Umesh Nerlige Ramappa
2022-10-18 22:49   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 35/36] lib/i915/perf: Add ACM GT2 metrics Umesh Nerlige Ramappa
2022-10-18 22:49   ` Umesh Nerlige Ramappa
2022-10-10 22:01 ` [igt-dev] [PATCH i-g-t v6 00/36] Add DG2 OA test Umesh Nerlige Ramappa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y0SlCpP00TC4NMJc@unerlige-ril \
    --to=umesh.nerlige.ramappa@intel.com \
    --cc=ashutosh.dixit@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=lionel.g.landwerlin@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox