Skip to content

Commit d51734c

Browse files
committed
apply comments
Signed-off-by: Mateusz P. Nowak <[email protected]>
1 parent 7291772 commit d51734c

File tree

5 files changed

+44
-112
lines changed

5 files changed

+44
-112
lines changed

devops/scripts/benchmarks/benches/base.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ def traceable(self, tracing_type: TracingType) -> bool:
8080
"""
8181
return True
8282

83+
def tracing_enabled(self, run_trace, force_trace, tr_type: TracingType):
84+
"""Returns whether tracing is enabled for the given type."""
85+
return (self.traceable(tr_type) or force_trace) and run_trace == tr_type
86+
8387
@abstractmethod
8488
def setup(self):
8589
pass
@@ -145,9 +149,7 @@ def run_bench(
145149
ld_libraries.extend(ld_library)
146150

147151
unitrace_output = None
148-
if (
149-
self.traceable(TracingType.UNITRACE) or force_trace
150-
) and run_trace == TracingType.UNITRACE:
152+
if self.tracing_enabled(run_trace, force_trace, TracingType.UNITRACE):
151153
if extra_trace_opt is None:
152154
extra_trace_opt = []
153155
unitrace_output, command = get_unitrace().setup(
@@ -159,9 +161,7 @@ def run_bench(
159161
# flamegraph run
160162

161163
perf_data_file = None
162-
if (
163-
self.traceable(TracingType.FLAMEGRAPH) or force_trace
164-
) and run_trace == TracingType.FLAMEGRAPH:
164+
if self.tracing_enabled(run_trace, force_trace, TracingType.FLAMEGRAPH):
165165
perf_data_file, command = get_flamegraph().setup(
166166
self.name(), self.get_suite_name(), command
167167
)
@@ -184,15 +184,13 @@ def run_bench(
184184
raise
185185

186186
if (
187-
(self.traceable(TracingType.UNITRACE) or force_trace)
188-
and run_trace == TracingType.UNITRACE
187+
self.tracing_enabled(run_trace, force_trace, TracingType.UNITRACE)
189188
and unitrace_output
190189
):
191190
get_unitrace().handle_output(unitrace_output)
192191

193192
if (
194-
(self.traceable(TracingType.FLAMEGRAPH) or force_trace)
195-
and run_trace == TracingType.FLAMEGRAPH
193+
self.tracing_enabled(run_trace, force_trace, TracingType.FLAMEGRAPH)
196194
and perf_data_file
197195
):
198196
svg_file = get_flamegraph().handle_output(

devops/scripts/benchmarks/benches/compute.py

Lines changed: 35 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from enum import Enum
1212

1313
from utils.utils import run, git_clone, create_build_path
14-
from utils.logger import log
1514
from .base import Benchmark, Suite, TracingType
1615
from utils.result import BenchmarkMetadata, Result
1716
from .base import Benchmark, Suite
@@ -97,7 +96,7 @@ def setup(self) -> None:
9796
run(configure_command, add_sycl=True)
9897

9998
run(
100-
f"cmake --build {build_path} -j {options.build_jobs} -- -k -i ",
99+
f"cmake --build {build_path} -j {options.build_jobs}",
101100
add_sycl=True,
102101
)
103102

@@ -310,23 +309,17 @@ def __init__(self, bench, name, test, runtime: RUNTIMES = None):
310309
# Subclasses MUST set both `self.iterations_regular` and
311310
# `self.iterations_trace` (positive ints) in their __init__ before
312311
# calling super().__init__(). The base class enforces this.
313-
if (
314-
not hasattr(self, "iterations_regular")
315-
or not isinstance(getattr(self, "iterations_regular", None), int)
316-
or getattr(self, "iterations_regular", 0) <= 0
317-
):
318-
raise ValueError(
319-
f"{self.bench_name}: subclasses must set `iterations_regular` (positive int) before calling super().__init__"
320-
)
321312

322-
if (
323-
not hasattr(self, "iterations_trace")
324-
or not isinstance(getattr(self, "iterations_trace", None), int)
325-
or getattr(self, "iterations_trace", 0) <= 0
326-
):
327-
raise ValueError(
328-
f"{self.bench_name}: subclasses must set `iterations_trace` (positive int) before calling super().__init__"
329-
)
313+
self._validate_attr("iterations_regular")
314+
self._validate_attr("iterations_trace")
315+
316+
def get_iters(self, run_trace: TracingType):
317+
"""Returns the number of iterations to run for the given tracing type."""
318+
return (
319+
self.iterations_trace
320+
if run_trace != TracingType.NONE
321+
else self.iterations_regular
322+
)
330323

331324
def supported_runtimes(self) -> list[RUNTIMES]:
332325
"""Base runtimes supported by this benchmark, can be overridden."""
@@ -452,6 +445,16 @@ def parse_output(self, output):
452445
def teardown(self):
453446
return
454447

448+
def _validate_attr(self, attr_name: str):
449+
if (
450+
not hasattr(self, attr_name)
451+
or not isinstance(getattr(self, attr_name, None), int)
452+
or getattr(self, attr_name, 0) <= 0
453+
):
454+
raise ValueError(
455+
f"{self.bench_name}: subclasses must set `{attr_name}` (positive int) before calling super().__init__"
456+
)
457+
455458

456459
class SubmitKernel(ComputeBenchmark):
457460
def __init__(
@@ -541,11 +544,7 @@ def range(self) -> tuple[float, float]:
541544
return (0.0, None)
542545

543546
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
544-
iters = (
545-
self.iterations_trace
546-
if run_trace != TracingType.NONE
547-
else self.iterations_regular
548-
)
547+
iters = self.get_iters(run_trace)
549548
return [
550549
f"--iterations={iters}",
551550
f"--Ioq={self.ioq}",
@@ -605,11 +604,7 @@ def get_tags(self):
605604
return ["memory", "submit", "latency", "SYCL", "micro"]
606605

607606
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
608-
iters = (
609-
self.iterations_trace
610-
if run_trace != TracingType.NONE
611-
else self.iterations_regular
612-
)
607+
iters = self.get_iters(run_trace)
613608
return [
614609
f"--iterations={iters}",
615610
f"--ioq={self.ioq}",
@@ -650,11 +645,7 @@ def get_tags(self):
650645
return ["memory", "latency", "SYCL", "micro"]
651646

652647
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
653-
iters = (
654-
self.iterations_trace
655-
if run_trace != TracingType.NONE
656-
else self.iterations_regular
657-
)
648+
iters = self.get_iters(run_trace)
658649
return [
659650
f"--iterations={iters}",
660651
f"--IsCopyOnly={self.isCopyOnly}",
@@ -692,11 +683,7 @@ def get_tags(self):
692683
return ["memory", "latency", "SYCL", "micro"]
693684

694685
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
695-
iters = (
696-
self.iterations_trace
697-
if run_trace != TracingType.NONE
698-
else self.iterations_regular
699-
)
686+
iters = self.get_iters(run_trace)
700687
return [
701688
f"--iterations={iters}",
702689
f"--sourcePlacement={self.source}",
@@ -735,11 +722,7 @@ def get_tags(self):
735722
return ["memory", "throughput", "SYCL", "micro"]
736723

737724
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
738-
iters = (
739-
self.iterations_trace
740-
if run_trace != TracingType.NONE
741-
else self.iterations_regular
742-
)
725+
iters = self.get_iters(run_trace)
743726
return [
744727
f"--iterations={iters}",
745728
f"--type={self.type}",
@@ -775,11 +758,7 @@ def get_tags(self):
775758
return ["math", "throughput", "SYCL", "micro"]
776759

777760
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
778-
iters = (
779-
self.iterations_trace
780-
if run_trace != TracingType.NONE
781-
else self.iterations_regular
782-
)
761+
iters = self.get_iters(run_trace)
783762
return [
784763
f"--iterations={iters}",
785764
"--numberOfElementsX=512",
@@ -873,11 +852,7 @@ def get_tags(self):
873852
return ["memory", "latency", runtime_to_tag_name(self.runtime), "micro"]
874853

875854
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
876-
iters = (
877-
self.iterations_trace
878-
if run_trace != TracingType.NONE
879-
else self.iterations_regular
880-
)
855+
iters = self.get_iters(run_trace)
881856
return [
882857
f"--iterations={iters}",
883858
"--Ioq=1",
@@ -934,11 +909,7 @@ def get_tags(self):
934909
]
935910

936911
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
937-
iters = (
938-
self.iterations_trace
939-
if run_trace != TracingType.NONE
940-
else self.iterations_regular
941-
)
912+
iters = self.get_iters(run_trace)
942913
return [
943914
f"--iterations={iters}",
944915
f"--numKernels={self.numKernels}",
@@ -1002,11 +973,7 @@ def get_tags(self):
1002973
]
1003974

1004975
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
1005-
iters = (
1006-
self.iterations_trace
1007-
if run_trace != TracingType.NONE
1008-
else self.iterations_regular
1009-
)
976+
iters = self.get_iters(run_trace)
1010977
return [
1011978
f"--iterations={iters}",
1012979
f"--NumKernels={self.numKernels}",
@@ -1052,11 +1019,7 @@ def get_tags(self):
10521019
return [runtime_to_tag_name(self.runtime), "micro", "latency", "submit"]
10531020

10541021
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
1055-
iters = (
1056-
self.iterations_trace
1057-
if run_trace != TracingType.NONE
1058-
else self.iterations_regular
1059-
)
1022+
iters = self.get_iters(run_trace)
10601023
return [
10611024
f"--iterations={iters}",
10621025
f"--wgs={self.wgs}",
@@ -1108,11 +1071,7 @@ def get_tags(self):
11081071
return [runtime_to_tag_name(self.runtime), "micro", "latency", "submit"]
11091072

11101073
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
1111-
iters = (
1112-
self.iterations_trace
1113-
if run_trace != TracingType.NONE
1114-
else self.iterations_regular
1115-
)
1074+
iters = self.get_iters(run_trace)
11161075
return [
11171076
f"--iterations={iters}",
11181077
f"--count={self.count}",
@@ -1172,11 +1131,7 @@ def description(self) -> str:
11721131
)
11731132

11741133
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
1175-
iters = (
1176-
self.iterations_trace
1177-
if run_trace != TracingType.NONE
1178-
else self.iterations_regular
1179-
)
1134+
iters = self.get_iters(run_trace)
11801135
return [
11811136
f"--iterations={iters}",
11821137
f"--type={self.usm_memory_placement}",
@@ -1240,11 +1195,7 @@ def description(self) -> str:
12401195
)
12411196

12421197
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
1243-
iters = (
1244-
self.iterations_trace
1245-
if run_trace != TracingType.NONE
1246-
else self.iterations_regular
1247-
)
1198+
iters = self.get_iters(run_trace)
12481199
return [
12491200
f"--iterations={iters}",
12501201
f"--type={self.usm_memory_placement}",
@@ -1316,11 +1267,7 @@ def get_tags(self):
13161267
]
13171268

13181269
def bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]:
1319-
iters = (
1320-
self.iterations_trace
1321-
if run_trace != TracingType.NONE
1322-
else self.iterations_regular
1323-
)
1270+
iters = self.get_iters(run_trace)
13241271
return [
13251272
f"--iterations={iters}",
13261273
f"--rebuildGraphEveryIter={self.rebuild_graph_every_iteration}",

devops/scripts/benchmarks/main.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
from utils.validate import Validate
2929
from utils.detect_versions import DetectVersion
3030
from utils.logger import log
31-
from utils.unitrace import get_unitrace
32-
from utils.flamegraph import get_flamegraph
3331
from presets import enabled_suites, presets
3432

3533
# Update this if you are changing the layout of the results files
@@ -404,16 +402,6 @@ def main(directory, additional_env_vars, compare_names, filter):
404402
)
405403
log.info(f"Generating HTML with benchmark results in {html_path}...")
406404

407-
# Reload history after saving to include the current results in HTML output
408-
if not options.dry_run:
409-
log.debug(
410-
"Reloading history for HTML generation to include current results..."
411-
)
412-
history.load()
413-
log.debug(
414-
f"Reloaded {len(history.runs)} benchmark runs for HTML generation."
415-
)
416-
417405
generate_html(history, compare_names, html_path, metadata)
418406
log.info(f"HTML with benchmark results has been generated")
419407

devops/scripts/benchmarks/options.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ class Options:
7474
exit_on_failure: bool = False
7575
flamegraph: bool = False
7676
unitrace: bool = False
77-
TIMESTAMP_FORMAT = "%Y%m%d_%H%M%S" # Format for timestamps in filenames and logs, including Unitrace traces.
7877

7978
# Options intended for CI:
8079

devops/scripts/benchmarks/utils/unitrace.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def __init__(self):
3333
options.workdir,
3434
"pti-gpu-repo",
3535
"https://github.com/intel/pti-gpu.git",
36-
"master",
36+
"pti-0.12.4",
3737
)
3838
build_dir = os.path.join(options.workdir, "unitrace-build")
3939
unitrace_src = os.path.join(repo_dir, "tools", "unitrace")

0 commit comments

Comments
 (0)