15 #include <client/include/IProfilingService.hpp>
30 template <
typename QueueDescriptor>
37 m_Guid(
arm::pipe::IProfilingService::GetNextGuid()),
43 virtual const std::string&
GetName()
const override
75 const arm::pipe::ProfilingGuid
m_Guid;
88 std::vector<armnn::DataType> dataTypes = {DataTypes...};
91 if (!
info.m_InputTensorInfos.empty())
93 expectedInputType =
info.m_InputTensorInfos.front().GetDataType();
95 if (std::find(dataTypes.begin(), dataTypes.end(), expectedInputType) == dataTypes.end())
99 if (std::all_of(std::next(
info.m_InputTensorInfos.begin()),
100 info.m_InputTensorInfos.end(),
102 return it.GetDataType() == expectedInputType;
110 if (!
info.m_OutputTensorInfos.empty())
112 expectedOutputType =
info.m_OutputTensorInfos.front().GetDataType();
114 if (!
info.m_InputTensorInfos.empty())
116 expectedInputType =
info.m_InputTensorInfos.front().GetDataType();
118 if (expectedOutputType != expectedInputType)
123 else if (std::find(dataTypes.begin(), dataTypes.end(), expectedOutputType) == dataTypes.end())
127 if (std::all_of(std::next(
info.m_OutputTensorInfos.begin()),
128 info.m_OutputTensorInfos.end(),
130 return it.GetDataType() == expectedOutputType;
139 template <
typename QueueDescriptor, armnn::DataType InputDataType, armnn::DataType OutputDataType>
147 if (std::all_of(
info.m_InputTensorInfos.begin(),
148 info.m_InputTensorInfos.end(),
150 return it.GetDataType() == InputDataType;
155 if (std::all_of(
info.m_OutputTensorInfos.begin(),
156 info.m_OutputTensorInfos.end(),
158 return it.GetDataType() == OutputDataType;
167 template <
typename QueueDescriptor, armnn::DataType DataType>
175 if (!
info.m_InputTensorInfos.empty())
177 if (
info.m_InputTensorInfos.front().GetDataType() !=
DataType)
183 if (std::all_of(
info.m_OutputTensorInfos.begin(),
184 info.m_OutputTensorInfos.end(),
186 return it.GetDataType() == DataType;
194 template <
typename QueueDescriptor>
199 template <
typename QueueDescriptor>
202 template <
typename QueueDescriptor>
205 template <
typename QueueDescriptor>
208 template <
typename QueueDescriptor>
211 template <
typename QueueDescriptor>
216 template <
typename QueueDescriptor>
221 template <
typename QueueDescriptor>
226 template <
typename QueueDescriptor>
231 template <
typename QueueDescriptor>
236 template <
typename QueueDescriptor>
241 template <
typename QueueDescriptor>
virtual bool SupportsTensorHandleReplacement() const override
virtual const std::string & GetName() const override
const arm::pipe::ProfilingGuid m_Guid
void PostAllocationConfigure() override
const QueueDescriptor & GetData() const
arm::pipe::ProfilingGuid GetGuid() const final
void ReplaceInputTensorHandle(ITensorHandle *tensorHandle, unsigned int slot) override
void ReplaceOutputTensorHandle(ITensorHandle *tensorHandle, unsigned int slot) override
BaseWorkload(const QueueDescriptor &descriptor, const WorkloadInfo &info)
Base class for all ArmNN exceptions so that users can filter to just those.
Workload interface to enqueue a layer computation.
MultiTypedWorkload(const QueueDescriptor &descriptor, const WorkloadInfo &info)
TypedWorkload(const QueueDescriptor &descriptor, const WorkloadInfo &info)
Copyright (c) 2021 ARM Limited and Contributors.
void IgnoreUnused(Ts &&...)
Contains information about TensorInfos of a layer.