aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon/NeonInterceptorScheduler.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/neon/NeonInterceptorScheduler.hpp')
-rw-r--r--src/backends/neon/NeonInterceptorScheduler.hpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/backends/neon/NeonInterceptorScheduler.hpp b/src/backends/neon/NeonInterceptorScheduler.hpp
new file mode 100644
index 0000000000..f33b79a2da
--- /dev/null
+++ b/src/backends/neon/NeonInterceptorScheduler.hpp
@@ -0,0 +1,38 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include "NeonTimer.hpp"
+#include "WallClockTimer.hpp"
+
+#include <arm_compute/runtime/IScheduler.h>
+#include <arm_compute/runtime/Scheduler.h>
+#include <arm_compute/core/CPP/ICPPKernel.h>
+
+namespace armnn
+{
+
+class NeonInterceptorScheduler : public arm_compute::IScheduler
+{
+public:
+ NeonInterceptorScheduler(arm_compute::IScheduler &realScheduler);
+ ~NeonInterceptorScheduler() = default;
+
+ void set_num_threads(unsigned int numThreads) override;
+
+ unsigned int num_threads() const override;
+
+ void schedule(arm_compute::ICPPKernel *kernel, const Hints &hints) override;
+
+ void run_workloads(std::vector<Workload> &workloads) override;
+
+ void SetKernels(NeonTimer::KernelMeasurements* kernels) { m_Kernels = kernels; }
+ NeonTimer::KernelMeasurements* GetKernels() { return m_Kernels; }
+private:
+ NeonTimer::KernelMeasurements* m_Kernels;
+ arm_compute::IScheduler& m_RealScheduler;
+};
+
+} // namespace armnn