13 template<
typename WorkloadType>
14 struct MakeWorkloadForType
16 template<
typename QueueDescriptorType,
typename... Args>
17 static std::unique_ptr<WorkloadType> Func(
const QueueDescriptorType& descriptor,
18 const WorkloadInfo&
info,
21 return std::make_unique<WorkloadType>(descriptor,
info, std::forward<Args>(args)...);
27 struct MakeWorkloadForType<NullWorkload>
29 template<
typename QueueDescriptorType,
typename... Args>
30 static std::unique_ptr<NullWorkload> Func(
const QueueDescriptorType& descriptor,
31 const WorkloadInfo&
info,
34 boost::ignore_unused(descriptor);
35 boost::ignore_unused(info);
36 boost::ignore_unused(args...);
44 typename BooleanWorkload,
typename Int8Workload,
typename QueueDescriptorType,
typename... Args>
45 std::unique_ptr<IWorkload> MakeWorkloadHelper(
const QueueDescriptorType& descriptor,
46 const WorkloadInfo&
info,
49 const DataType dataType = !info.m_InputTensorInfos.empty() ?
50 info.m_InputTensorInfos[0].GetDataType()
51 : info.m_OutputTensorInfos[0].GetDataType();
56 return MakeWorkloadForType<Float16Workload>::Func(descriptor, info, std::forward<Args>(args)...);
58 return MakeWorkloadForType<Float32Workload>::Func(descriptor, info, std::forward<Args>(args)...);
60 return MakeWorkloadForType<Uint8Workload>::Func(descriptor, info, std::forward<Args>(args)...);
63 return MakeWorkloadForType<Int8Workload>::Func(descriptor, info, std::forward<Args>(args)...);
65 return MakeWorkloadForType<Int32Workload>::Func(descriptor, info, std::forward<Args>(args)...);
67 return MakeWorkloadForType<BooleanWorkload>::Func(descriptor, info, std::forward<Args>(args)...);
71 BOOST_ASSERT_MSG(
false,
"Unknown DataType.");
81 std::unique_ptr<IWorkload> MakeWorkloadHelper(
const QueueDescriptorType& descriptor,
82 const WorkloadInfo& info,
85 return MakeWorkloadHelper<FloatWorkload, FloatWorkload, Uint8Workload, NullWorkload, NullWorkload, NullWorkload>(
88 std::forward<Args>(args)...);
TypedWorkload< QueueDescriptor, armnn::DataType::Float16, armnn::DataType::Float32 > FloatWorkload
TypedWorkload< QueueDescriptor, armnn::DataType::Boolean > BooleanWorkload
TypedWorkload< QueueDescriptor, armnn::DataType::Signed32 > Int32Workload
TypedWorkload< QueueDescriptor, armnn::DataType::QAsymmU8 > Uint8Workload
TypedWorkload< QueueDescriptor, armnn::DataType::Float32 > Float32Workload