---
title: "ClikaRT::ProfileSummary"
sidebar_label: "ProfileSummary"
description: "The counters a session accumulated, as plain values: the typed form of ProfileSession::summary_text() and of the summary object in report.json, field for field, so a consumer reads numbers instead of…"
---

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

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

**Header:** `ClikaRT/profiler/profiler.h`

The counters a session accumulated, as plain values: the typed form of [`ProfileSession::summary_text()`](./ProfileSession.md#summary_text) and of the `summary` object in `report.json`, field for field, so a consumer reads numbers instead of parsing text. Durations are nanoseconds; counts are events recorded inside the session's captures.

## Nested types

| Name | Description |
| --- | --- |
| [`AllocationPairing`](./ProfileSummary.AllocationPairing.md) | Allocation-lifetime pairing at one tier: the REQUEST tier (tensor allocations) or the SEGMENT tier (the calls the memory pools make to the OS or the device driver). A capture window legitimately crosses lifetimes at both of its edges, so these are diagnostics, not failures; the one real defect a pairing can show is [`double_frees`](./ProfileSummary.AllocationPairing.md#double_frees). |

## Data members

### total\_wallclock\_ns {#total_wallclock_ns}

<div class="api-signature">

`std::uint64_t` **`total_wallclock_ns`** `= 0`

</div>

First recorded start to last recorded end across every captured span.

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 74

</div>

### total\_op\_self\_ns {#total_op_self_ns}

<div class="api-signature">

`std::uint64_t` **`total_op_self_ns`** `= 0`

</div>

Op time with nested child spans excluded (each op's own share).

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 76

</div>

### total\_kernel\_ns {#total_kernel_ns}

<div class="api-signature">

`std::uint64_t` **`total_kernel_ns`** `= 0`

</div>

[Device](./Device.md) kernel spans, summed.

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 78

</div>

### total\_memcpy\_ns {#total_memcpy_ns}

<div class="api-signature">

`std::uint64_t` **`total_memcpy_ns`** `= 0`

</div>

Host/device copy spans, summed.

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 80

</div>

### total\_allocations {#total_allocations}

<div class="api-signature">

`std::size_t` **`total_allocations`** `= 0`

</div>

Request-tier allocations (tensors).

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 84

</div>

### total\_frees {#total_frees}

<div class="api-signature">

`std::size_t` **`total_frees`** `= 0`

</div>

Request-tier frees.

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 86

</div>

### total\_segment\_allocations {#total_segment_allocations}

<div class="api-signature">

`std::size_t` **`total_segment_allocations`** `= 0`

</div>

Segment-tier allocations (the pools' OS / device-driver calls).

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 88

</div>

### total\_segment\_frees {#total_segment_frees}

<div class="api-signature">

`std::size_t` **`total_segment_frees`** `= 0`

</div>

Segment-tier frees.

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 90

</div>

### total\_enqueue\_begins {#total_enqueue_begins}

<div class="api-signature">

`std::size_t` **`total_enqueue_begins`** `= 0`

</div>

Work items submitted to a stream.

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 96

</div>

### total\_enqueue\_ends {#total_enqueue_ends}

<div class="api-signature">

`std::size_t` **`total_enqueue_ends`** `= 0`

</div>

Submitted work items that ran to completion.

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 98

</div>

### total\_host\_syncs {#total_host_syncs}

<div class="api-signature">

`std::size_t` **`total_host_syncs`** `= 0`

</div>

Host waits for device work (a synchronize, a host read of a pending value).

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 100

</div>

### total\_waits {#total_waits}

<div class="api-signature">

`std::size_t` **`total_waits`** `= 0`

</div>

Cross-stream waits (one stream ordered behind another's work).

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 102

</div>

### total\_notifications {#total_notifications}

<div class="api-signature">

`std::size_t` **`total_notifications`** `= 0`

</div>

Completion notifications that fired.

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 104

</div>

### request\_pairing {#request_pairing}

<div class="api-signature">

[`AllocationPairing`](./ProfileSummary.AllocationPairing.md) **`request_pairing`**

</div>

the request (tensor) tier

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 107

</div>

### segment\_pairing {#segment_pairing}

<div class="api-signature">

[`AllocationPairing`](./ProfileSummary.AllocationPairing.md) **`segment_pairing`**

</div>

the segment (pool) tier

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 108

</div>

### alloc\_free\_balanced {#alloc_free_balanced}

<div class="api-signature">

`bool` **`alloc_free_balanced`** `= true`

</div>

True when no double free was seen at the request tier (a window-edge imbalance is reported through [`request_pairing`](./ProfileSummary.md#request_pairing), never here).

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 113

</div>

### segment\_alloc\_free\_balanced {#segment_alloc_free_balanced}

<div class="api-signature">

`bool` **`segment_alloc_free_balanced`** `= true`

</div>

True when no double free was seen at the segment tier.

<div class="api-declared">

Declared in `ClikaRT/profiler/profiler.h`, line 115

</div>
