38 const std::string& name,
39 std::vector<InstrumentPtr>&& instruments);
58 void Print(std::ostream& outStream)
const;
77 template<
typename EventIterType>
81 void PopulateInferences(std::vector<const Event*>& outInferences,
int& outBaseLevel)
const;
95 void RegisterProfiler(
IProfiler* profiler);
115 template<
typename... Args>
120 if (m_Profiler && m_Profiler->IsProfilingEnabled())
122 std::vector<InstrumentPtr> instruments(0);
123 instruments.reserve(
sizeof...(args));
124 ConstructNextInVector(instruments, std::forward<Args>(args)...);
125 m_Event = m_Profiler->BeginEvent(backendId, name, std::move(instruments));
131 if (m_Profiler && m_Event)
133 m_Profiler->pProfilerImpl->EndEvent(m_Event);
139 void ConstructNextInVector(std::vector<InstrumentPtr>& instruments)
144 template<
typename Arg,
typename... Args>
145 void ConstructNextInVector(std::vector<InstrumentPtr>& instruments, Arg&& arg, Args&&... args)
147 instruments.emplace_back(std::make_unique<Arg>(std::forward<Arg>(arg)));
148 ConstructNextInVector(instruments, std::forward<Args>(args)...);
157 #define ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS_UNIQUE_LOC_INNER(lineNumber, backendId, ...) \ 158 armnn::ScopedProfilingEvent e_ ## lineNumber(backendId, __VA_ARGS__); 160 #define ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS_UNIQUE_LOC(lineNumber, backendId, ...) \ 161 ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS_UNIQUE_LOC_INNER(lineNumber, backendId, __VA_ARGS__) 170 #define ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(backendId, ...) \ 171 ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS_UNIQUE_LOC(__LINE__,backendId, __VA_ARGS__) 173 #define ARMNN_SCOPED_PROFILING_EVENT(backendId, name) \ 174 ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(backendId, name, armnn::WallClockTimer())
Event class records measurements reported by BeginEvent()/EndEvent() and returns measurements when Ev...
std::unique_ptr< Instrument > InstrumentPtr
bool IsProfilingEnabled()
uint32_t GetEventColor(const BackendId &backendId) const
std::map< std::string, ProfilingEventStats > CalculateProfilingEventStats() const
Copyright (c) 2021 ARM Limited and Contributors.
void IgnoreUnused(Ts &&...)
ScopedProfilingEvent(const BackendId &backendId, const std::string &name, Args &&... args)
void AnalyzeEventSequenceAndWriteResults(EventIterType first, EventIterType last, std::ostream &outStream) const
void AnalyzeEventsAndWriteResults(std::ostream &outStream) const
std::unique_ptr< Event > EventPtr
void EndEvent(Event *event)
void Print(std::ostream &outStream) const
Event * BeginEvent(armnn::IProfiler *profiler, const BackendId &backendId, const std::string &name, std::vector< InstrumentPtr > &&instruments)
void PopulateInferences(std::vector< const Event *> &outInferences, int &outBaseLevel) const
std::stack< Event * > m_Parents
void PopulateDescendants(std::map< const Event *, std::vector< const Event *>> &outDescendantsMap) const
std::unique_ptr< Instrument > InstrumentPtr
std::vector< EventPtr > m_EventSequence
void EnableProfiling(bool enableProfiling)