blob: 52e4db7c90db883def7f272ebfe89866de5c19c4 [file] [log] [blame]
telsoa014fcda012018-03-09 14:13:49 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
David Beckecb56cd2018-09-05 12:52:57 +01003// SPDX-License-Identifier: MIT
telsoa014fcda012018-03-09 14:13:49 +00004//
5
6#pragma once
7
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00008#include <neon/workloads/NeonWorkloadUtils.hpp>
telsoa014fcda012018-03-09 14:13:49 +00009
10namespace armnn
11{
12
telsoa01c577f2c2018-08-31 09:22:23 +010013arm_compute::Status NeonBatchNormalizationValidate(const TensorInfo& input,
14 const TensorInfo& output,
15 const TensorInfo& mean,
16 const TensorInfo& var,
17 const TensorInfo& beta,
18 const TensorInfo& gamma,
19 const BatchNormalizationDescriptor& descriptor);
20
Matthew Benthamc48ac8c2018-12-12 16:15:59 +000021class NeonBatchNormalizationWorkload : public BaseWorkload<BatchNormalizationQueueDescriptor>
telsoa014fcda012018-03-09 14:13:49 +000022{
23public:
Matthew Benthamc48ac8c2018-12-12 16:15:59 +000024 NeonBatchNormalizationWorkload(const BatchNormalizationQueueDescriptor& descriptor,
25 const WorkloadInfo& info);
telsoa014fcda012018-03-09 14:13:49 +000026 virtual void Execute() const override;
27
28private:
29 mutable arm_compute::NEBatchNormalizationLayer m_Layer;
30
telsoa01c577f2c2018-08-31 09:22:23 +010031 std::unique_ptr<arm_compute::Tensor> m_Mean;
32 std::unique_ptr<arm_compute::Tensor> m_Variance;
33 std::unique_ptr<arm_compute::Tensor> m_Gamma;
34 std::unique_ptr<arm_compute::Tensor> m_Beta;
35
36 void FreeUnusedTensors();
telsoa014fcda012018-03-09 14:13:49 +000037};
38
39} //namespace armnn
40