18#ifndef MOTIV_UITRACE_HPP
19#define MOTIV_UITRACE_HPP
24#include "SubTrace.hpp"
30#define MIN_SLOT_SIZE_PX 5
35#define MIN_COMMUNICATION_SIZE_PX 15
40#define MIN_COLLECTIVE_EVENT_SIZE_PX 10
63 const otf2::chrono::duration &runtime,
const otf2::chrono::duration &startTime,
64 const otf2::chrono::duration &timePerPx);
93 Trace *
subtrace(otf2::chrono::duration from, otf2::chrono::duration to)
override;
99 otf2::chrono::duration timePerPx_;
110 std::vector<CollectiveCommunicationEvent *> &stats);
120 static Slot *aggregateSlots(
const Slot *intervalStarter, std::map<SlotKind, std::vector<Slot *>> &stats);
131 requires std::is_base_of_v<TimedElement, T>
132 static std::vector<T *> optimize(
133 types::TraceTime minDuration,
135 std::function<T *(T *, std::vector<T *> &stats)> aggregate);
150 template<
class T,
typename K>
151 requires std::is_base_of_v<TimedElement, T>
152 static std::vector<T *> optimize(
153 types::TraceTime minDuration,
155 std::function<K(
const T *)> keySelector,
156 std::function<T *(T *, std::map<K, std::vector<T *>> &stats)> aggregate);
A class representing an MPI collective operation.
A custom range implementation around std::vector<T>s.
A Slot represents a visual slot to be rendered in the UI. It contains the information of a location.
Trace representing a section of a larger trace.
Abstract base class for a trace.
Trace facilitating a subtrace optimized for rendering.
Trace * subtrace(otf2::chrono::duration from, otf2::chrono::duration to) override
Creates a subtrace of the current trace.
static UITrace * forResolution(Trace *trace, otf2::chrono::duration timePerPixel)
A comparator for otf2::definition::location_group objects.