blob: f33b79a2da37f74074cc5f95a39e8174a881128c [file] [log] [blame]
telsoa01c577f2c2018-08-31 09:22:23 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
David Beckecb56cd2018-09-05 12:52:57 +01003// SPDX-License-Identifier: MIT
telsoa01c577f2c2018-08-31 09:22:23 +01004//
5#pragma once
6
7#include "NeonTimer.hpp"
8#include "WallClockTimer.hpp"
9
10#include <arm_compute/runtime/IScheduler.h>
11#include <arm_compute/runtime/Scheduler.h>
12#include <arm_compute/core/CPP/ICPPKernel.h>
13
14namespace armnn
15{
16
17class NeonInterceptorScheduler : public arm_compute::IScheduler
18{
19public:
Derek Lambertie4ba53a2018-10-01 09:28:57 +010020 NeonInterceptorScheduler(arm_compute::IScheduler &realScheduler);
telsoa01c577f2c2018-08-31 09:22:23 +010021 ~NeonInterceptorScheduler() = default;
22
23 void set_num_threads(unsigned int numThreads) override;
24
25 unsigned int num_threads() const override;
26
27 void schedule(arm_compute::ICPPKernel *kernel, const Hints &hints) override;
28
29 void run_workloads(std::vector<Workload> &workloads) override;
30
Derek Lambertie4ba53a2018-10-01 09:28:57 +010031 void SetKernels(NeonTimer::KernelMeasurements* kernels) { m_Kernels = kernels; }
32 NeonTimer::KernelMeasurements* GetKernels() { return m_Kernels; }
telsoa01c577f2c2018-08-31 09:22:23 +010033private:
Derek Lambertie4ba53a2018-10-01 09:28:57 +010034 NeonTimer::KernelMeasurements* m_Kernels;
telsoa01c577f2c2018-08-31 09:22:23 +010035 arm_compute::IScheduler& m_RealScheduler;
telsoa01c577f2c2018-08-31 09:22:23 +010036};
37
38} // namespace armnn