ArmNN
 25.11
Loading...
Searching...
No Matches
DataTypeUtils.hpp File Reference
#include <ResolveType.hpp>
#include <reference/workloads/Encoders.hpp>
#include <vector>
Include dependency graph for DataTypeUtils.hpp:

Go to the source code of this file.

Functions

template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
std::vector< T > ConvertToDataType (const std::vector< float > &input, const armnn::TensorInfo &inputTensorInfo)
template<typename T>
ConvertToDataType (const float &value, const armnn::TensorInfo &tensorInfo)

Function Documentation

◆ ConvertToDataType() [1/2]

template<typename T>
T ConvertToDataType ( const float & value,
const armnn::TensorInfo & tensorInfo )

Definition at line 52 of file DataTypeUtils.hpp.

54{
55 std::vector<T> output(1);
56
57 if(sizeof(T) > 4)
58 {
59 std::unique_ptr<armnn::Encoder<double>> pEncoder = armnn::MakeEncoder<double>(tensorInfo, output.data());
60 armnn::Encoder<double>& rEncoder = *pEncoder;
61 rEncoder.Set(value);
62 }
63 else
64 {
65 std::unique_ptr<armnn::Encoder<float>> pEncoder = armnn::MakeEncoder<float>(tensorInfo, output.data());
66 armnn::Encoder<float>& rEncoder = *pEncoder;
67 rEncoder.Set(value);
68 }
69
70 return output[0];
71}
virtual void Set(IType right)=0
std::unique_ptr< Encoder< T > > MakeEncoder(const TensorInfo &info, void *data=nullptr)

References armnn::MakeEncoder(), and Encoder< IType >::Set().

◆ ConvertToDataType() [2/2]

template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
std::vector< T > ConvertToDataType ( const std::vector< float > & input,
const armnn::TensorInfo & inputTensorInfo )

Definition at line 17 of file DataTypeUtils.hpp.

19{
20 std::vector<T> output(input.size());
21 auto outputTensorInfo = inputTensorInfo;
22 outputTensorInfo.SetDataType(ArmnnType);
23
24 if(sizeof(T) > 4)
25 {
26 std::unique_ptr<armnn::Encoder<double>> pOutputEncoder = armnn::MakeEncoder<double>(outputTensorInfo,
27 output.data());
28 armnn::Encoder<double>& rOutputEncoder = *pOutputEncoder;
29 for (auto it = input.begin(); it != input.end(); ++it)
30 {
31 rOutputEncoder.Set(*it);
32 ++rOutputEncoder;
33 }
34 }
35 else
36 {
37 std::unique_ptr<armnn::Encoder<float>> pOutputEncoder = armnn::MakeEncoder<float>(outputTensorInfo,
38 output.data());
39 armnn::Encoder<float>& rOutputEncoder = *pOutputEncoder;
40 for (auto it = input.begin(); it != input.end(); ++it)
41 {
42 rOutputEncoder.Set(*it);
43 ++rOutputEncoder;
44 }
45 }
46
47 return output;
48}
void SetDataType(DataType type)
Definition Tensor.hpp:201

References armnn::MakeEncoder(), Encoder< IType >::Set(), and TensorInfo::SetDataType().