aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/neon')
-rw-r--r--src/backends/neon/NeonInterceptorScheduler.cpp14
-rw-r--r--src/backends/neon/NeonInterceptorScheduler.hpp6
-rw-r--r--src/backends/neon/workloads/NeonResizeWorkload.cpp30
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