---
title: "ClikaRT::graph::BenchReport"
sidebar_label: "BenchReport"
description: "One benchmark's measurement. Times are wall-clock milliseconds around each run, with every output synchronized before the clock stops, so a run's time includes the device work its outputs wait on."
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--struct">struct</span>

**Header:** `ClikaRT/graph/bench.h`

One benchmark's measurement.

Times are wall-clock milliseconds around each run, with every output synchronized before the clock stops, so a run's time includes the device work its outputs wait on. [`peak_rss_bytes`](./BenchReport.md#peak_rss_bytes) is the whole process's peak resident set at the end of the benchmark, not the graph's own footprint. [`device_memory`](./BenchReport.md#device_memory) is the runtime's memory-pool snapshot for [`device`](../device-namespace/index.md) after the runs; [`device_memory_valid`](./BenchReport.md#device_memory_valid) is false where no snapshot was available.

## Data members

### shapes {#shapes}

<div class="api-signature">

`std::vector<`[`InputShape`](./InputShape.md)`>` **`shapes`**

</div>

the input shapes fed, `input_names()` order

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 120

</div>

### outputs {#outputs}

<div class="api-signature">

`std::vector<`[`InputShape`](./InputShape.md)`>` **`outputs`**

</div>

the output shapes produced, `output_names()` order

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 121

</div>

### device {#device}

<div class="api-signature">

[`Device`](../Device.md) **`device`**

</div>

where the inputs were placed

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 122

</div>

### fill {#fill}

<div class="api-signature">

[`FeedFill`](./index.md#FeedFill) **`fill`** `=` [`FeedFill::Zeros`](./index.md#FeedFill)

</div>

How synthesized inputs were filled; for caller-provided tensors the option's value, not applied.

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 125

</div>

### warmup {#warmup}

<div class="api-signature">

`std::int32_t` **`warmup`** `= 0`

</div>

untimed runs

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 126

</div>

### iterations {#iterations}

<div class="api-signature">

`std::int32_t` **`iterations`** `= 0`

</div>

measured runs

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 127

</div>

### threads {#threads}

<div class="api-signature">

`std::int32_t` **`threads`** `= 0`

</div>

the runtime's CPU thread count during the runs

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 128

</div>

### outputs\_reused {#outputs_reused}

<div class="api-signature">

`bool` **`outputs_reused`** `= false`

</div>

the measured runs wrote preallocated outputs

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 129

</div>

### outputs\_on\_device {#outputs_on_device}

<div class="api-signature">

`bool` **`outputs_on_device`** `= false`

</div>

the outputs live on [`device`](../device-namespace/index.md) (false: on the host)

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 130

</div>

### iteration\_ms {#iteration_ms}

<div class="api-signature">

`std::vector<double>` **`iteration_ms`**

</div>

every measured run, in order

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 132

</div>

### first\_call\_ms {#first_call_ms}

<div class="api-signature">

`double` **`first_call_ms`** `= 0.0`

</div>

the first run of the call, warmup or measured

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 133

</div>

### p50\_ms {#p50_ms}

<div class="api-signature">

`double` **`p50_ms`** `= 0.0`

</div>

median of [`iteration_ms`](./BenchReport.md#iteration_ms)

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 134

</div>

### p95\_ms {#p95_ms}

<div class="api-signature">

`double` **`p95_ms`** `= 0.0`

</div>

95th percentile of [`iteration_ms`](./BenchReport.md#iteration_ms) (linear interpolation)

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 135

</div>

### p99\_ms {#p99_ms}

<div class="api-signature">

`double` **`p99_ms`** `= 0.0`

</div>

99th percentile of [`iteration_ms`](./BenchReport.md#iteration_ms) (linear interpolation)

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 136

</div>

### mean\_ms {#mean_ms}

<div class="api-signature">

`double` **`mean_ms`** `= 0.0`

</div>

arithmetic mean of [`iteration_ms`](./BenchReport.md#iteration_ms)

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 137

</div>

### min\_ms {#min_ms}

<div class="api-signature">

`double` **`min_ms`** `= 0.0`

</div>

fastest measured run

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 138

</div>

### max\_ms {#max_ms}

<div class="api-signature">

`double` **`max_ms`** `= 0.0`

</div>

slowest measured run

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 139

</div>

### stddev\_ms {#stddev_ms}

<div class="api-signature">

`double` **`stddev_ms`** `= 0.0`

</div>

population standard deviation of [`iteration_ms`](./BenchReport.md#iteration_ms)

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 140

</div>

### batch\_axis {#batch_axis}

<div class="api-signature">

`std::int32_t` **`batch_axis`** `= -1`

</div>

the axis items were counted along, or -1

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 142

</div>

### items\_per\_iteration {#items_per_iteration}

<div class="api-signature">

`std::int64_t` **`items_per_iteration`** `= 1`

</div>

the first input's extent on [`batch_axis`](./BenchReport.md#batch_axis), else 1

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 143

</div>

### throughput\_items\_per\_s {#throughput_items_per_s}

<div class="api-signature">

`double` **`throughput_items_per_s`** `= 0.0`

</div>

[`items_per_iteration`](./BenchReport.md#items_per_iteration)` / (`[`p50_ms`](./BenchReport.md#p50_ms)` / 1000)`

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 144

</div>

### peak\_rss\_bytes {#peak_rss_bytes}

<div class="api-signature">

`std::uint64_t` **`peak_rss_bytes`** `= 0`

</div>

the process's peak resident set, in bytes

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 146

</div>

### device\_memory {#device_memory}

<div class="api-signature">

[`device::MemoryStats`](../device-namespace/MemoryStats.md) **`device_memory`**

</div>

the runtime's memory-pool counters for [`device`](../device-namespace/index.md)

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 147

</div>

### device\_memory\_valid {#device_memory_valid}

<div class="api-signature">

`bool` **`device_memory_valid`** `= false`

</div>

[`device_memory`](./BenchReport.md#device_memory) holds a snapshot

<div class="api-declared">

Declared in `ClikaRT/graph/bench.h`, line 148

</div>
