14static constexpr arm_compute::ConvertPolicy g_AclConvertPolicy = arm_compute::ConvertPolicy::SATURATE;
26 return arm_compute::Status();
33 this->
m_Data.ValidateInputsOutputs(
"NeonConvertFp16ToFp32Workload", 1, 1);
38 if (arm_compute::NECast::validate(input.info(), output.info(), g_AclConvertPolicy))
41 m_Cast.reset(
new arm_compute::NECast());
42 m_Cast->configure(&input, &output, g_AclConvertPolicy);
63 auto convertFunc = [](uint8_t* dst,
const uint8_t* src,
size_t size)
65 auto input =
reinterpret_cast<const Half*
>(src);
66 auto output =
reinterpret_cast<float*
>(dst);
67 size_t numElements = size/2;
71 for (
const auto& pair : m_TensorHandlePairs)
81 this->
m_Data.m_Inputs[slot] = tensorHandle;
89 this->
m_Data.m_Inputs[slot] = backupHandle;
98 this->
m_Data.m_Inputs[slot] = tensorHandle;
106 this->
m_Data.m_Inputs[slot] = backupHandle;
111void NeonConvertFp16ToFp32Workload::Reconfigure()
#define ARMNN_SCOPED_PROFILING_EVENT_NEON_NAME_GUID(label)
Creates a profiling event that uses GetGuid() and GetName() from the calling class.
NeonConvertFp16ToFp32Workload(const ConvertFp16ToFp32QueueDescriptor &descriptor, const WorkloadInfo &info)
void ReplaceInputTensorHandle(ITensorHandle *tensorHandle, unsigned int slot) override
void ReplaceOutputTensorHandle(ITensorHandle *tensorHandle, unsigned int slot) override
virtual void Execute() const override
static void ConvertFloat16To32(const void *srcFloat16Buffer, size_t numElements, float *dstFloat32Buffer)
Copyright (c) 2021 ARM Limited and Contributors.
arm_compute::Status NeonConvertFp16ToFp32WorkloadValidate(const TensorInfo &input, const TensorInfo &output)
MultiTypedWorkload< QueueDescriptor, armnn::DataType::Float16, armnn::DataType::Float32 > Float16ToFloat32Workload
void GatherTensorHandlePairs(const DescriptorType &descriptor, std::vector< std::pair< SrcTensorHandleType *, DstTensorHandleType * > > &tensorHandlePairs)
DestType PolymorphicDowncast(SourceType *value)
Polymorphic downcast for build in pointers only.
void CopyTensorContentsGeneric(const ITensorHandle *srcTensor, ITensorHandle *dstTensor, CopyFunc copy)
void IgnoreUnused(Ts &&...)
Contains information about TensorInfos of a layer.