blob: 91bc3220487bf04c5aae67a445c9cb88283878d6 [file] [log] [blame]
Laurent Carlier749294b2020-06-01 09:03:17 +01001//
Matthew Sloyan2d213a72022-06-30 17:13:04 +01002// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00003// SPDX-License-Identifier: MIT
4//
Matteo Martincigh49124022019-01-11 13:25:59 +00005
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00006#pragma once
7
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00008#include <armnn/TypesUtils.hpp>
9
Finn Williams73c547d2022-02-15 20:47:34 +000010#include "RefBaseWorkload.hpp"
Matteo Martincigh49124022019-01-11 13:25:59 +000011
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000012namespace armnn
13{
14
15template <armnn::DataType DataType>
16class RefDebugWorkload : public TypedWorkload<DebugQueueDescriptor, DataType>
17{
18public:
Nattapat Chaimanowong317cae52019-03-28 10:29:12 +000019 RefDebugWorkload(const DebugQueueDescriptor& descriptor, const WorkloadInfo& info)
20 : TypedWorkload<DebugQueueDescriptor, DataType>(descriptor, info)
21 , m_Callback(nullptr) {}
22
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000023 static const std::string& GetName()
24 {
25 static const std::string name = std::string("RefDebug") + GetDataTypeName(DataType) + "Workload";
26 return name;
27 }
28
29 using TypedWorkload<DebugQueueDescriptor, DataType>::m_Data;
30 using TypedWorkload<DebugQueueDescriptor, DataType>::TypedWorkload;
31
32 void Execute() const override;
Matthew Sloyan2d213a72022-06-30 17:13:04 +010033 void ExecuteAsync(ExecutionData& executionData) override;
Nattapat Chaimanowong317cae52019-03-28 10:29:12 +000034
35 void RegisterDebugCallback(const DebugCallbackFunction& func) override;
36
37private:
Finn Williamsb8181f72021-04-07 10:23:21 +010038 void Execute(std::vector<ITensorHandle*> inputs) const;
Nattapat Chaimanowong317cae52019-03-28 10:29:12 +000039 DebugCallbackFunction m_Callback;
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000040};
41
Narumol Prangnawarat403a1852020-03-12 14:24:13 +000042using RefDebugBFloat16Workload = RefDebugWorkload<DataType::BFloat16>;
Keith Davis0c2eeac2020-02-11 16:51:50 +000043using RefDebugFloat16Workload = RefDebugWorkload<DataType::Float16>;
44using RefDebugFloat32Workload = RefDebugWorkload<DataType::Float32>;
45using RefDebugQAsymmU8Workload = RefDebugWorkload<DataType::QAsymmU8>;
Keith Davis67e6c542020-02-19 10:08:33 +000046using RefDebugQAsymmS8Workload = RefDebugWorkload<DataType::QAsymmS8>;
Keith Davis0c2eeac2020-02-11 16:51:50 +000047using RefDebugQSymmS16Workload = RefDebugWorkload<DataType::QSymmS16>;
48using RefDebugQSymmS8Workload = RefDebugWorkload<DataType::QSymmS8>;
49using RefDebugSigned32Workload = RefDebugWorkload<DataType::Signed32>;
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +000050
Matteo Martincigh49124022019-01-11 13:25:59 +000051} // namespace armnn