# scope_profiler.html_report

*module*

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.

[View source](https://github.com/max-models/scope-profiler/blob/devel/src/scope_profiler/html_report.py#L1-L1)

## scope_profiler.html_report.create_html_report

*function*

```python
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.

[View source](https://github.com/max-models/scope-profiler/blob/devel/src/scope_profiler/html_report.py#L2388-L2499)
