1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017 Arm Ltd. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #pragma once 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #include "Instrument.hpp" 9*89c4ff92SAndroid Build Coastguard Worker 10*89c4ff92SAndroid Build Coastguard Worker #include <arm_compute/runtime/IScheduler.h> 11*89c4ff92SAndroid Build Coastguard Worker #include <arm_compute/runtime/Scheduler.h> 12*89c4ff92SAndroid Build Coastguard Worker #include <arm_compute/core/CPP/ICPPKernel.h> 13*89c4ff92SAndroid Build Coastguard Worker 14*89c4ff92SAndroid Build Coastguard Worker #include <chrono> 15*89c4ff92SAndroid Build Coastguard Worker #include <map> 16*89c4ff92SAndroid Build Coastguard Worker #include <list> 17*89c4ff92SAndroid Build Coastguard Worker 18*89c4ff92SAndroid Build Coastguard Worker namespace armnn 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker 21*89c4ff92SAndroid Build Coastguard Worker class NeonTimer : public Instrument 22*89c4ff92SAndroid Build Coastguard Worker { 23*89c4ff92SAndroid Build Coastguard Worker public: 24*89c4ff92SAndroid Build Coastguard Worker using KernelMeasurements = std::vector<Measurement>; 25*89c4ff92SAndroid Build Coastguard Worker 26*89c4ff92SAndroid Build Coastguard Worker NeonTimer() = default; 27*89c4ff92SAndroid Build Coastguard Worker ~NeonTimer() = default; 28*89c4ff92SAndroid Build Coastguard Worker 29*89c4ff92SAndroid Build Coastguard Worker void Start() override; 30*89c4ff92SAndroid Build Coastguard Worker 31*89c4ff92SAndroid Build Coastguard Worker void Stop() override; 32*89c4ff92SAndroid Build Coastguard Worker 33*89c4ff92SAndroid Build Coastguard Worker bool HasKernelMeasurements() const override; 34*89c4ff92SAndroid Build Coastguard Worker 35*89c4ff92SAndroid Build Coastguard Worker std::vector<Measurement> GetMeasurements() const override; 36*89c4ff92SAndroid Build Coastguard Worker 37*89c4ff92SAndroid Build Coastguard Worker const char* GetName() const override; 38*89c4ff92SAndroid Build Coastguard Worker 39*89c4ff92SAndroid Build Coastguard Worker private: 40*89c4ff92SAndroid Build Coastguard Worker KernelMeasurements m_Kernels; 41*89c4ff92SAndroid Build Coastguard Worker arm_compute::IScheduler* m_RealScheduler; 42*89c4ff92SAndroid Build Coastguard Worker arm_compute::Scheduler::Type m_RealSchedulerType; 43*89c4ff92SAndroid Build Coastguard Worker }; 44*89c4ff92SAndroid Build Coastguard Worker 45*89c4ff92SAndroid Build Coastguard Worker }