carm-roofline 1.0.1.dev0__tar.gz → 1.0.1.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/PKG-INFO +1 -1
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/carm_roofline.egg-info/PKG-INFO +1 -1
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/profiling/backends.py +2 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/profiling/metrics.py +33 -9
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/pyproject.toml +1 -1
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/LICENSE +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/README.md +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/__init__.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/architecture.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/arm.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/config.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/detect.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/frequency.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/memory.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/riscv.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/arm/features.c +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/arm/frequency.h +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/arm/vlen.c +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/frequency.c +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/riscv/frequency.h +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/riscv/rvv_version.c +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/riscv/vlen.c +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/x86/cache.c +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/x86/features.c +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/x86/frequency.h +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/x86/x86_avx512/frequency.h +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/x86.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/arguments.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/__init__.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/benchmark.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/benchmarking.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/__init__.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/arm.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/__init__.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/data_type.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/instruction.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/operation.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/register.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/isa.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/parameters.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/riscv.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/x86.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/interface.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/output/__init__.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/output/arithmetic.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/output/base.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/output/common.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/output/memory.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/output/memory_sweep.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/output/mixed.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/output/roofline.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/result.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/suites/__init__.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/suites/arithmetic.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/suites/base.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/suites/memory.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/suites/memory_sweep.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/suites/mixed.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/suites/roofline.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/carm.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/carm_roofline.egg-info/SOURCES.txt +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/carm_roofline.egg-info/dependency_links.txt +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/carm_roofline.egg-info/entry_points.txt +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/carm_roofline.egg-info/requires.txt +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/carm_roofline.egg-info/top_level.txt +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/context.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/error.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/exec_interface.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/gui/__init__.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/gui/assets/CARM_icon.svg +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/gui/assets/CHAMP_logo.svg +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/gui/assets/menu_icon.png +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/gui/assets/style.css +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/gui/config.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/gui/dashboard.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/gui/gui_utils.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/output_utils.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/profiling/__init__.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/profiling/aggregation.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/profiling/config.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/profiling/loaders.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/profiling/model.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/profiling/output.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/results_paths.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/run_config.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/setup.cfg +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/test/test_isa_codegen_integration.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/test/test_memory_suite_generation.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/test/test_output_module.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/test/test_typed_benchmarks.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/test_bench/__init__.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/test_bench/builder.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/test_bench/test_bench.c +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/test_bench/test_bench.h +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/test_bench/wrapper.inl +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/units.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/utils.py +0 -0
- {carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/workspace.py +0 -0
|
@@ -126,6 +126,8 @@ class PAPIHLBackend(ProfilerBackend):
|
|
|
126
126
|
detail(f"Available PAPI events: {len(self._available_events)}")
|
|
127
127
|
for metric_type, impl in self._resolved_metrics.items():
|
|
128
128
|
detail(f" {metric_type.name} -> {impl.description}")
|
|
129
|
+
if impl.warning is not None:
|
|
130
|
+
detail(f" Note: {impl.warning}")
|
|
129
131
|
|
|
130
132
|
return any(impl.priority < 100 for impl in self._resolved_metrics.values())
|
|
131
133
|
|
|
@@ -106,6 +106,7 @@ class MetricDefinition:
|
|
|
106
106
|
priority: int = 0
|
|
107
107
|
priority_modifier: Callable[[MetricResolutionConfig], int] = lambda _: 0
|
|
108
108
|
description: str = ""
|
|
109
|
+
warning: str | None = None
|
|
109
110
|
|
|
110
111
|
|
|
111
112
|
# ---------------------------------------------------------------------------
|
|
@@ -168,30 +169,36 @@ def _build_metric_definitions() -> dict[MetricType, list[MetricDefinition]]:
|
|
|
168
169
|
"""Return +15 when config.data_type matches *dt*, -15 otherwise."""
|
|
169
170
|
return lambda cfg: 15 if cfg.data_type is dt else -15
|
|
170
171
|
|
|
172
|
+
def _make_fmadd_warning(papi_event: str) -> str:
|
|
173
|
+
return f"{papi_event} may count multiply-add instructions as 1 or 2 ops depending on the platform"
|
|
174
|
+
|
|
171
175
|
return {
|
|
172
176
|
MetricType.FLOPS: [
|
|
177
|
+
MetricDefinition(
|
|
178
|
+
type=MetricType.FLOPS,
|
|
179
|
+
required_events=frozenset({"PAPI_FP_OPS"}),
|
|
180
|
+
compute=lambda e, ctx: e["PAPI_FP_OPS"],
|
|
181
|
+
priority=100,
|
|
182
|
+
description="Exact value from PAPI_FP_OPS (both precisions)",
|
|
183
|
+
warning=_make_fmadd_warning("PAPI_FP_OPS"),
|
|
184
|
+
),
|
|
173
185
|
MetricDefinition(
|
|
174
186
|
type=MetricType.FLOPS,
|
|
175
187
|
required_events=frozenset({"PAPI_DP_OPS"}),
|
|
176
188
|
compute=lambda e, ctx: e["PAPI_DP_OPS"],
|
|
177
|
-
priority=
|
|
189
|
+
priority=90,
|
|
178
190
|
priority_modifier=_data_type_match(DataType.f64),
|
|
179
191
|
description="Exact value from PAPI_DP_OPS",
|
|
192
|
+
warning=_make_fmadd_warning("PAPI_DP_OPS"),
|
|
180
193
|
),
|
|
181
194
|
MetricDefinition(
|
|
182
195
|
type=MetricType.FLOPS,
|
|
183
196
|
required_events=frozenset({"PAPI_SP_OPS"}),
|
|
184
197
|
compute=lambda e, ctx: e["PAPI_SP_OPS"],
|
|
185
|
-
priority=
|
|
198
|
+
priority=90,
|
|
186
199
|
priority_modifier=_data_type_match(DataType.f32),
|
|
187
200
|
description="Exact value from PAPI_SP_OPS",
|
|
188
|
-
|
|
189
|
-
MetricDefinition(
|
|
190
|
-
type=MetricType.FLOPS,
|
|
191
|
-
required_events=frozenset({"PAPI_FP_OPS"}),
|
|
192
|
-
compute=lambda e, ctx: e["PAPI_FP_OPS"],
|
|
193
|
-
priority=50,
|
|
194
|
-
description="Approximated from PAPI_FP_OPS (has all precisions)",
|
|
201
|
+
warning=_make_fmadd_warning("PAPI_SP_OPS"),
|
|
195
202
|
),
|
|
196
203
|
MetricDefinition(
|
|
197
204
|
type=MetricType.FLOPS,
|
|
@@ -199,6 +206,7 @@ def _build_metric_definitions() -> dict[MetricType, list[MetricDefinition]]:
|
|
|
199
206
|
compute=lambda e, ctx: e["PAPI_FP_INS"] * ctx.ops_per_instruction,
|
|
200
207
|
priority=10,
|
|
201
208
|
description="Approximated from PAPI_FP_INS (FP instr count)",
|
|
209
|
+
warning="PAPI_FP_INS counts fused multiply-add instructions as 1 operation",
|
|
202
210
|
),
|
|
203
211
|
],
|
|
204
212
|
MetricType.BYTES: [
|
|
@@ -235,12 +243,28 @@ def _build_metric_definitions() -> dict[MetricType, list[MetricDefinition]]:
|
|
|
235
243
|
priority=85,
|
|
236
244
|
description="Approximated from PAPI_LD_INS + PAPI_SR_INS and bytes per instruction",
|
|
237
245
|
),
|
|
246
|
+
# Relevant for Zen3 (no PAPI loads/store events, only DCA, native forwarding event for higher accuracy)
|
|
247
|
+
MetricDefinition(
|
|
248
|
+
type=MetricType.BYTES,
|
|
249
|
+
required_events=frozenset({"PAPI_L1_DCA", "STORE_TO_LOAD_FORWARD"}),
|
|
250
|
+
compute=lambda e, ctx: (e["PAPI_L1_DCA"] + e["STORE_TO_LOAD_FORWARD"]) * ctx.bytes_per_instruction,
|
|
251
|
+
priority=40,
|
|
252
|
+
description="Approximated from PAPI_L1_DCA + STORE_TO_LOAD_FORWARD and bytes per instruction",
|
|
253
|
+
warning=(
|
|
254
|
+
"PAPI_L1_DCA counts cache accesses: if the microarchitecture coalesces requests into fewer cache "
|
|
255
|
+
"accesses, this metric may underestimate the number of bytes."
|
|
256
|
+
),
|
|
257
|
+
),
|
|
238
258
|
MetricDefinition(
|
|
239
259
|
type=MetricType.BYTES,
|
|
240
260
|
required_events=frozenset({"PAPI_L1_DCA"}),
|
|
241
261
|
compute=lambda e, ctx: e["PAPI_L1_DCA"] * ctx.bytes_per_instruction,
|
|
242
262
|
priority=30,
|
|
243
263
|
description="Approximated from PAPI_L1_DCA and bytes per instruction",
|
|
264
|
+
warning=(
|
|
265
|
+
"PAPI_L1_DCA counts cache accesses: if the microarchitecture coalesces requests into fewer cache "
|
|
266
|
+
"accesses or forwards stores to loads, this metric may underestimate the number of bytes."
|
|
267
|
+
),
|
|
244
268
|
),
|
|
245
269
|
],
|
|
246
270
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/riscv/rvv_version.c
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/architecture/tests/x86/x86_avx512/frequency.h
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/__init__.py
RENAMED
|
File without changes
|
{carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/data_type.py
RENAMED
|
File without changes
|
{carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/instruction.py
RENAMED
|
File without changes
|
{carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/operation.py
RENAMED
|
File without changes
|
{carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/benchmark/generation/code_gen/register.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/carm_roofline.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{carm_roofline-1.0.1.dev0 → carm_roofline-1.0.1.dev1}/carm_roofline.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|