blob: 59c7404c446ca092630e8aabaa40d5a1b34b6e7b [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
David Beck0dbe0ee2018-09-24 15:59:27 +01008#include <backends/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
arovir019e53a352018-08-31 15:26:35 +010021class NeonBatchNormalizationFloatWorkload : public FloatWorkload<BatchNormalizationQueueDescriptor>
telsoa014fcda012018-03-09 14:13:49 +000022{
23public:
arovir019e53a352018-08-31 15:26:35 +010024 NeonBatchNormalizationFloatWorkload(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
41
42