Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Concepts | Typedefs | Enumerations | Functions | Variables
uni20::performance Namespace Reference

Classes

struct  BatchMeasurement
 Detailed timing summary for one synchronous lightweight batch. More...
 
class  DetailedMeasurements
 Fixed-size detailed collector retaining every measured batch. More...
 
class  DurationMeasurements
 Fixed-size coarse wall-duration collector indexed by an event enum. More...
 
struct  DurationStatistics
 Aggregate duration statistics for repeated instances of one event. More...
 
struct  NoMeasurements
 Explicit disabled measurement policy used by ordinary operation overloads. More...
 

Concepts

concept  DurationMeasurementPolicy
 Measurement policy that either disables instrumentation or records event durations.
 
concept  BatchMeasurementPolicy
 Measurement policy compatible with detailed synchronous batch records.
 

Typedefs

using Duration = std::chrono::nanoseconds
 Duration type shared by performance measurement collectors.
 
using WallClock = std::chrono::steady_clock
 Clock used for host wall-duration measurements.
 

Enumerations

enum class  MeasurementLevel { none , coarse , detailed }
 Selects how much performance instrumentation an operation instantiates. More...
 

Functions

template<class Measurements , class Event , class Executor , class Function >
requires BatchMeasurementPolicy<Measurements, Event> && std::invocable<Function&, std::size_t>
void measure_batch (Measurements &measurements, Event event, std::size_t size, Executor &&executor, Function &&function)
 Execute a synchronous batch with compile-time-selected timing detail.
 
template<class Measurements , class Event , class Function >
requires DurationMeasurementPolicy<Measurements, Event> && std::invocable<Function>
decltype(auto) measure_duration (Measurements &measurements, Event event, Function &&function)
 Invoke a function with compile-time-gated wall-duration measurement.
 

Variables

template<class Measurements >
constexpr MeasurementLevel measurement_level_v = std::remove_cvref_t<Measurements>::measurement_level
 Compile-time instrumentation level declared by a measurement policy.
 

Typedef Documentation

◆ Duration

using uni20::performance::Duration = typedef std::chrono::nanoseconds

Duration type shared by performance measurement collectors.

◆ WallClock

using uni20::performance::WallClock = typedef std::chrono::steady_clock

Clock used for host wall-duration measurements.

Enumeration Type Documentation

◆ MeasurementLevel

Selects how much performance instrumentation an operation instantiates.

Enumerator
none 
coarse 
detailed 

Function Documentation

◆ measure_batch()

template<class Measurements , class Event , class Executor , class Function >
requires BatchMeasurementPolicy<Measurements, Event> && std::invocable<Function&, std::size_t>
void uni20::performance::measure_batch ( Measurements &  measurements,
Event  event,
std::size_t  size,
Executor &&  executor,
Function &&  function 
)

Execute a synchronous batch with compile-time-selected timing detail.

The disabled policy invokes executor(function) directly. Coarse policies measure only the inclusive executor duration. Detailed policies additionally read the clock around each item, write one disjoint timing slot per index, and aggregate after the executor joins. A batch record is retained before an executor exception is rethrown.

Precondition
The executor invokes each started index at most once and does not return until all item invocations have joined.
Template Parameters
MeasurementsMeasurement policy type.
EventEvent identifier type.
ExecutorCallable accepting the wrapped indexed item function.
FunctionCallable accepting one index in [0, size).
Parameters
measurementsExplicit measurement policy or collector.
eventEvent identifying this batch.
sizeNumber of indexed work items.
executorSynchronous scheduler or serial-loop adapter.
functionWork-item callable.

◆ measure_duration()

template<class Measurements , class Event , class Function >
requires DurationMeasurementPolicy<Measurements, Event> && std::invocable<Function>
decltype(auto) uni20::performance::measure_duration ( Measurements &  measurements,
Event  event,
Function &&  function 
)

Invoke a function with compile-time-gated wall-duration measurement.

NoMeasurements instantiates only the direct invocation. Any other compatible policy reads the wall clock on entry and exit and records the elapsed duration, including when the function throws.

Template Parameters
MeasurementsMeasurement policy type.
EventEvent identifier type.
FunctionNullary callable type.
Parameters
measurementsExplicit measurement policy or collector.
eventEvent to record for an enabled collector.
functionCallable whose inclusive wall duration is measured.
Returns
The callable result, preserving references and value category.

Variable Documentation

◆ measurement_level_v

template<class Measurements >
constexpr MeasurementLevel uni20::performance::measurement_level_v = std::remove_cvref_t<Measurements>::measurement_level
inlineconstexpr

Compile-time instrumentation level declared by a measurement policy.