blob: 1c7de29b37e5903fb3dc14326792a591b50306b8 [file] [log] [blame]
Ruomei Yan495852f2019-05-23 11:37:33 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
Finn Williams73c547d2022-02-15 20:47:34 +00005#include "RefBaseWorkload.hpp"
Colm Donelan0c479742021-12-10 12:43:54 +00006#include <armnn/backends/WorkloadData.hpp>
Ruomei Yan495852f2019-05-23 11:37:33 +01007#include "Decoders.hpp"
8#include "Encoders.hpp"
9
10#include <armnn/TypesUtils.hpp>
11
12namespace armnn
13{
14
Finn Williams73c547d2022-02-15 20:47:34 +000015class RefDepthwiseConvolution2dWorkload : public RefBaseWorkload<DepthwiseConvolution2dQueueDescriptor> {
Ruomei Yan495852f2019-05-23 11:37:33 +010016public:
17 explicit RefDepthwiseConvolution2dWorkload(const DepthwiseConvolution2dQueueDescriptor &descriptor,
18 const WorkloadInfo &info);
19
Cathal Corbett06902652022-04-14 17:55:11 +010020 void PostAllocationConfigure() override;
Ruomei Yan495852f2019-05-23 11:37:33 +010021
Finn Williamsb8181f72021-04-07 10:23:21 +010022 void Execute() const override;
23 void ExecuteAsync(WorkingMemDescriptor& workingMemDescriptor) override;
Ruomei Yan495852f2019-05-23 11:37:33 +010024
25private:
Cathal Corbett06902652022-04-14 17:55:11 +010026 void PostAllocationConfigure(std::vector<ITensorHandle*> inputs, std::vector<ITensorHandle*> outputs);
Finn Williamsb8181f72021-04-07 10:23:21 +010027 void Execute(std::vector<ITensorHandle*> inputs, std::vector<ITensorHandle*> outputs) const;
Ruomei Yan495852f2019-05-23 11:37:33 +010028
James Conroy1f58f032021-04-27 17:13:27 +010029 std::unique_ptr <ScopedTensorHandle> m_Weight;
30 std::unique_ptr <ScopedTensorHandle> m_Bias;
Ruomei Yan495852f2019-05-23 11:37:33 +010031
Ruomei Yan495852f2019-05-23 11:37:33 +010032 std::unique_ptr <Decoder<float>> m_FilterDecoder;
33 std::unique_ptr <Decoder<float>> m_BiasDecoder;
34
Ruomei Yan495852f2019-05-23 11:37:33 +010035 TensorShape m_FilterShape;
36};
37
38} //namespace armnn