Skip to content
Projects

scope_profiler.html_report

Self-contained HTML reports for profiling results.

The report deliberately has no plotting dependency: it is useful on a remote machine immediately after a run, and can be opened locally in any browser.

One run gets a full report: a summary, its hotspots, the region table, load balance across ranks, line profiles, hardware counters and charts. Several runs get a comparison report instead - what changed between them — which links to a full report built for each run alongside it.

Functions

NameDescription
create_html_reportWrite a standalone HTML report for one or more profiling results.

create_html_reportfunction#

def create_html_report(profiling_data: ProfilingResults | str | Path | Sequence[ProfilingResults | str | Path], filepath: str | Path, *, include=None, exclude=None, ranks: list[int] | None = None, sort: str = 'start', columns=None, charts_cdn: bool = False, include_charts: bool = True, individual_reports: bool = True, scaling: str = 'both', speedup_x: str = 'auto') -> Path

Write a standalone HTML report for one or more profiling results.

One run gets a full report. Several runs get a comparison report, the first run being the baseline; with individual_reports (the default) a full report for each run is also written next to it, as <stem>-<index>-<label>.html, and linked from the comparison.

When the compared runs differ in ranks or threads, scaling says what kind of study they are, which the profiles cannot tell: "strong" (the same total problem size on every run) charts each region’s speedup, "weak" (the same problem size per rank or core) its weak-scaling efficiency, and "both" (the default) charts both.

speedup_x sets the x-axis of a comparison’s scaling charts: "ranks" (MPI ranks), "nodes", "threads" (OpenMP threads) or "cores" (ranks times threads). "auto", the default, uses MPI ranks when they change, threads when only they change, and draws no scaling chart when the runs differ in neither. A named axis must be recorded by every run, or this raises ValueError. Either way, each chart has a button for every other axis the runs differ in.