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
>
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.