Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Namespaces | Concepts | Typedefs | Enumerations | Functions | Variables
performance_measurements.hpp File Reference

Compile-time-gated performance duration measurements. More...

#include <algorithm>
#include <array>
#include <atomic>
#include <chrono>
#include <concepts>
#include <cstddef>
#include <exception>
#include <functional>
#include <optional>
#include <ranges>
#include <span>
#include <type_traits>
#include <utility>
#include <vector>
Include dependency graph for performance_measurements.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

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

Namespaces

namespace  uni20
 
namespace  uni20::performance
 

Concepts

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

Typedefs

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

Enumerations

enum class  uni20::performance::MeasurementLevel { uni20::performance::none , uni20::performance::coarse , uni20::performance::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 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.
 
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.
 

Variables

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

Detailed Description

Compile-time-gated performance duration measurements.