IVGCVSW-1946: Remove armnn/src from the include paths
[platform/upstream/armnn.git] / src / backends / cl / workloads / ClFullyConnectedWorkload.hpp
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/runtime/CL/CLFunctions.h>
11 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
12
13 #include <memory>
14
15 namespace armnn
16 {
17
18 arm_compute::Status ClFullyConnectedWorkloadValidate(const TensorInfo& input,
19                                                      const TensorInfo& output,
20                                                      const TensorInfo& weights,
21                                                      const TensorInfo& biases,
22                                                      const FullyConnectedDescriptor& descriptor);
23
24 class ClFullyConnectedWorkload : public armnn::BaseWorkload<armnn::FullyConnectedQueueDescriptor>
25 {
26 public:
27     ClFullyConnectedWorkload(const armnn::FullyConnectedQueueDescriptor& descriptor,
28                              const armnn::WorkloadInfo& info,
29                              std::shared_ptr<arm_compute::MemoryManagerOnDemand>& memoryManager);
30
31     using armnn::BaseWorkload<armnn::FullyConnectedQueueDescriptor>::m_Data;
32     void Execute() const override;
33
34 private:
35     mutable arm_compute::CLFullyConnectedLayer m_FullyConnectedLayer;
36
37     std::unique_ptr<arm_compute::CLTensor> m_WeightsTensor;
38     std::unique_ptr<arm_compute::CLTensor> m_BiasesTensor;
39
40     void FreeUnusedTensors();
41 };
42
43 } //namespace armnn