diff options
Diffstat (limited to 'src/backends/neon')
-rw-r--r-- | src/backends/neon/NeonInterceptorScheduler.cpp | 14 | ||||
-rw-r--r-- | src/backends/neon/NeonInterceptorScheduler.hpp | 6 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonResizeWorkload.cpp | 30 |
3 files changed, 40 insertions, 10 deletions
diff --git a/src/backends/neon/NeonInterceptorScheduler.cpp b/src/backends/neon/NeonInterceptorScheduler.cpp index 745c5fde62..b4d9b300df 100644 --- a/src/backends/neon/NeonInterceptorScheduler.cpp +++ b/src/backends/neon/NeonInterceptorScheduler.cpp @@ -52,4 +52,18 @@ void NeonInterceptorScheduler::run_tagged_workloads(std::vector<Workload> &workl m_Kernels->emplace_back(std::string(tag != nullptr ? tag : "Unknown"), delta.count(), Measurement::Unit::TIME_US); } +void NeonInterceptorScheduler::schedule_op(arm_compute::ICPPKernel *kernel, + const Hints &hints, + const arm_compute::InputTensorMap &inputs, + const arm_compute::OutputTensorMap &outputs ) +{ + + WallClockTimer::clock::time_point startTime = WallClockTimer::clock::now(); + m_RealScheduler.schedule_op(kernel, hints, inputs, outputs); + WallClockTimer::clock::time_point stopTime = WallClockTimer::clock::now(); + + const auto delta = std::chrono::duration<double, std::micro>(stopTime - startTime); + m_Kernels->emplace_back(kernel->name(), delta.count(), Measurement::Unit::TIME_US); +} + } // namespace armnn
\ No newline at end of file diff --git a/src/backends/neon/NeonInterceptorScheduler.hpp b/src/backends/neon/NeonInterceptorScheduler.hpp index 3a6f2aa5ec..fe80c62c5f 100644 --- a/src/backends/neon/NeonInterceptorScheduler.hpp +++ b/src/backends/neon/NeonInterceptorScheduler.hpp @@ -10,6 +10,7 @@ #include <arm_compute/runtime/IScheduler.h> #include <arm_compute/runtime/Scheduler.h> #include <arm_compute/core/CPP/ICPPKernel.h> +#include <arm_compute/core/experimental/Types.h> namespace armnn { @@ -32,6 +33,11 @@ public: void SetKernels(NeonTimer::KernelMeasurements* kernels) { m_Kernels = kernels; } NeonTimer::KernelMeasurements* GetKernels() { return m_Kernels; } + + void schedule_op(arm_compute::ICPPKernel *kernel, + const Hints &hints, + const arm_compute::InputTensorMap &inputs, + const arm_compute::OutputTensorMap &outputs ) override; private: NeonTimer::KernelMeasurements* m_Kernels; arm_compute::IScheduler& m_RealScheduler; diff --git a/src/backends/neon/workloads/NeonResizeWorkload.cpp b/src/backends/neon/workloads/NeonResizeWorkload.cpp index afb753fd64..fc378cae2f 100644 --- a/src/backends/neon/workloads/NeonResizeWorkload.cpp +++ b/src/backends/neon/workloads/NeonResizeWorkload.cpp @@ -33,12 +33,18 @@ arm_compute::Status NeonResizeWorkloadValidate(const TensorInfo& input, arm_compute::InterpolationPolicy aclInterpolationPolicy = ConvertResizeMethodToAclInterpolationPolicy(descriptor.m_Method); + arm_compute::SamplingPolicy samplingPolicy = descriptor.m_HalfPixelCenters ? arm_compute::SamplingPolicy::CENTER : + arm_compute::SamplingPolicy::TOP_LEFT; + return arm_compute::NEScale::validate(&aclInputInfo, &aclOutputInfo, - aclInterpolationPolicy, - arm_compute::BorderMode::REPLICATE, - arm_compute::PixelValue(0.f), - arm_compute::SamplingPolicy::TOP_LEFT); + arm_compute::ScaleKernelInfo(aclInterpolationPolicy, + arm_compute::BorderMode::REPLICATE, + arm_compute::PixelValue(0.f), + samplingPolicy, + true, + descriptor.m_AlignCorners)); + } NeonResizeWorkload::NeonResizeWorkload(const ResizeQueueDescriptor& descriptor, @@ -57,14 +63,18 @@ NeonResizeWorkload::NeonResizeWorkload(const ResizeQueueDescriptor& descriptor, arm_compute::InterpolationPolicy aclInterpolationPolicy = ConvertResizeMethodToAclInterpolationPolicy(descriptor.m_Parameters.m_Method); + arm_compute::SamplingPolicy samplingPolicy = descriptor.m_Parameters.m_HalfPixelCenters + ? arm_compute::SamplingPolicy::CENTER + : arm_compute::SamplingPolicy::TOP_LEFT; + m_ResizeLayer.configure(&input, &output, - aclInterpolationPolicy, - arm_compute::BorderMode::REPLICATE, - arm_compute::PixelValue(0.f), - arm_compute::SamplingPolicy::TOP_LEFT, - true, - descriptor.m_Parameters.m_AlignCorners); + arm_compute::ScaleKernelInfo(aclInterpolationPolicy, + arm_compute::BorderMode::REPLICATE, + arm_compute::PixelValue(0.f), + samplingPolicy, + true, + descriptor.m_Parameters.m_AlignCorners)); }; void NeonResizeWorkload::Execute() const |