• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include <backendsCommon/Workload.hpp>
9 
10 #include <arm_compute/core/Error.h>
11 #include <arm_compute/runtime/IFunction.h>
12 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
13 #include <arm_compute/runtime/Tensor.h>
14 
15 #include <memory>
16 
17 namespace armnn
18 {
19 
20 arm_compute::Status NeonFullyConnectedWorkloadValidate(const TensorInfo& input,
21                                                        const TensorInfo& output,
22                                                        const TensorInfo& weights,
23                                                        const TensorInfo& biases,
24                                                        const FullyConnectedDescriptor& descriptor,
25                                                        const ActivationDescriptor* activationDescriptor = nullptr);
26 
27 class NeonFullyConnectedWorkload : public BaseWorkload<FullyConnectedQueueDescriptor>
28 {
29 public:
30     NeonFullyConnectedWorkload(const FullyConnectedQueueDescriptor& descriptor, const WorkloadInfo& info,
31                                std::shared_ptr<arm_compute::MemoryManagerOnDemand>& memoryManager);
32     virtual void Execute() const override;
33 
34 private:
35     std::unique_ptr<arm_compute::IFunction> m_FullyConnectedLayer;
36 
37     std::unique_ptr<arm_compute::Tensor> m_WeightsTensor;
38     std::unique_ptr<arm_compute::Tensor> m_BiasesTensor;
39 
40     void FreeUnusedTensors();
41 };
42 
43 } //namespace armnn
44 
45