ArmNN
 20.08
ElementwiseTestImpl.hpp File Reference

Go to the source code of this file.

Functions

template<typename DescriptorType >
std::unique_ptr< armnn::IWorkloadCreateWorkload (const armnn::IWorkloadFactory &workloadFactory, const armnn::WorkloadInfo &info, const DescriptorType &descriptor)
 
template<std::size_t NumDims, typename Descriptor , armnn::DataType ArmnnTypeInput, armnn::DataType ArmnnTypeOutput, typename TInput = armnn::ResolveType<ArmnnTypeInput>, typename TOutput = armnn::ResolveType<ArmnnTypeOutput>>
LayerTestResult< TOutput, NumDims > ElementwiseTestHelper (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const unsigned int shape0[NumDims], std::vector< TInput > values0, float quantScale0, int quantOffset0, const unsigned int shape1[NumDims], std::vector< TInput > values1, float quantScale1, int quantOffset1, const unsigned int outShape[NumDims], std::vector< TOutput > outValues, float outQuantScale, int outQuantOffset)
 
template<std::size_t NumDims, typename Descriptor , armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
LayerTestResult< T, NumDims > ElementwiseTestHelper (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const unsigned int shape0[NumDims], std::vector< T > values0, float quantScale0, int quantOffset0, const unsigned int shape1[NumDims], std::vector< T > values1, float quantScale1, int quantOffset1, const unsigned int outShape[NumDims], std::vector< T > outValues, float outQuantScale, int outQuantOffset)
 
template<std::size_t NumDims, typename Descriptor , armnn::DataType ArmnnTypeInput, armnn::DataType ArmnnTypeOutput, typename TInput = armnn::ResolveType<ArmnnTypeInput>, typename TOutput = armnn::ResolveType<ArmnnTypeOutput>>
LayerTestResult< TOutput, NumDims > ElementwiseTestHelper (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const unsigned int shape0[NumDims], std::vector< TInput > values0, const unsigned int shape1[NumDims], std::vector< TInput > values1, const unsigned int outShape[NumDims], std::vector< TOutput > outValues, float quantScale=1.0f, int quantOffset=0)
 
template<std::size_t NumDims, typename Descriptor , armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
LayerTestResult< T, NumDims > ElementwiseTestHelper (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const unsigned int shape0[NumDims], std::vector< T > values0, const unsigned int shape1[NumDims], std::vector< T > values1, const unsigned int outShape[NumDims], std::vector< T > outValues, float quantScale=1.0f, int quantOffset=0)
 

Function Documentation

◆ CreateWorkload()

std::unique_ptr<armnn::IWorkload> CreateWorkload ( const armnn::IWorkloadFactory workloadFactory,
const armnn::WorkloadInfo info,
const DescriptorType &  descriptor 
)

Definition at line 27 of file ElementwiseTestImpl.hpp.

Referenced by Layer::SetBackendId().

31 {
32  return CreateWorkload(workloadFactory, info, descriptor);
33 }
std::unique_ptr< armnn::IWorkload > CreateWorkload(const armnn::IWorkloadFactory &workloadFactory, const armnn::WorkloadInfo &info, const DescriptorType &descriptor)

◆ ElementwiseTestHelper() [1/4]

LayerTestResult<TOutput, NumDims> ElementwiseTestHelper ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const unsigned int  shape0[NumDims],
std::vector< TInput >  values0,
float  quantScale0,
int  quantOffset0,
const unsigned int  shape1[NumDims],
std::vector< TInput >  values1,
float  quantScale1,
int  quantOffset1,
const unsigned int  outShape[NumDims],
std::vector< TOutput >  outValues,
float  outQuantScale,
int  outQuantOffset 
)

Definition at line 41 of file ElementwiseTestImpl.hpp.

References ARMNN_NO_DEPRECATE_WARN_BEGIN, ARMNN_NO_DEPRECATE_WARN_END, armnn::Boolean, LayerTestResult< T, n >::compareBoolean, CopyDataFromITensorHandle(), CopyDataToITensorHandle(), IWorkloadFactory::CreateTensorHandle(), LayerTestResult< T, n >::output, LayerTestResult< T, n >::outputExpected, and TensorInfo::SetQuantizationScale().

56 {
57  armnn::TensorInfo inputTensorInfo0{NumDims, shape0, ArmnnTypeInput};
58  armnn::TensorInfo inputTensorInfo1{NumDims, shape1, ArmnnTypeInput};
59  armnn::TensorInfo outputTensorInfo{NumDims, outShape, ArmnnTypeOutput};
60 
61  auto input0 = MakeTensor<TInput, NumDims>(inputTensorInfo0, values0);
62  auto input1 = MakeTensor<TInput, NumDims>(inputTensorInfo1, values1);
63 
64  inputTensorInfo0.SetQuantizationScale(quantScale0);
65  inputTensorInfo0.SetQuantizationOffset(quantOffset0);
66 
67  inputTensorInfo1.SetQuantizationScale(quantScale1);
68  inputTensorInfo1.SetQuantizationOffset(quantOffset1);
69 
70  outputTensorInfo.SetQuantizationScale(outQuantScale);
71  outputTensorInfo.SetQuantizationOffset(outQuantOffset);
72 
73  LayerTestResult<TOutput, NumDims> ret(outputTensorInfo);
74 
75  if(ArmnnTypeOutput == armnn::DataType::Boolean)
76  {
77  ret.compareBoolean = true;
78  }
79 
81  std::unique_ptr<armnn::ITensorHandle> inputHandle0 = workloadFactory.CreateTensorHandle(inputTensorInfo0);
82  std::unique_ptr<armnn::ITensorHandle> inputHandle1 = workloadFactory.CreateTensorHandle(inputTensorInfo1);
83  std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
85 
86  Descriptor data;
88  AddInputToWorkload(data, info, inputTensorInfo0, inputHandle0.get());
89  AddInputToWorkload(data, info, inputTensorInfo1, inputHandle1.get());
90  AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
91  auto workload = CreateWorkload<Descriptor>(workloadFactory, info, data);
92 
93  inputHandle0->Allocate();
94  inputHandle1->Allocate();
95  outputHandle->Allocate();
96 
97  CopyDataToITensorHandle(inputHandle0.get(), input0.origin());
98  CopyDataToITensorHandle(inputHandle1.get(), input1.origin());
99 
100  workload->PostAllocationConfigure();
101  ExecuteWorkload(*workload, memoryManager);
102 
103  CopyDataFromITensorHandle(ret.output.origin(), outputHandle.get());
104 
105  ret.outputExpected = MakeTensor<TOutput, NumDims>(outputTensorInfo, outValues);
106  return ret;
107 }
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
Definition: Deprecated.hpp:33
#define ARMNN_NO_DEPRECATE_WARN_END
Definition: Deprecated.hpp:34
void SetQuantizationScale(float scale)
Definition: Tensor.cpp:465
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
Contains information about inputs and outputs to a layer.
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)

◆ ElementwiseTestHelper() [2/4]

LayerTestResult<T, NumDims> ElementwiseTestHelper ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const unsigned int  shape0[NumDims],
std::vector< T >  values0,
float  quantScale0,
int  quantOffset0,
const unsigned int  shape1[NumDims],
std::vector< T >  values1,
float  quantScale1,
int  quantOffset1,
const unsigned int  outShape[NumDims],
std::vector< T >  outValues,
float  outQuantScale,
int  outQuantOffset 
)

Definition at line 113 of file ElementwiseTestImpl.hpp.

128 {
129  return ElementwiseTestHelper<NumDims, Descriptor, ArmnnType, ArmnnType>(
130  workloadFactory,
131  memoryManager,
132  shape0,
133  values0,
134  quantScale0,
135  quantOffset0,
136  shape1,
137  values1,
138  quantScale1,
139  quantOffset1,
140  outShape,
141  outValues,
142  outQuantScale,
143  outQuantOffset);
144 }

◆ ElementwiseTestHelper() [3/4]

LayerTestResult<TOutput, NumDims> ElementwiseTestHelper ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const unsigned int  shape0[NumDims],
std::vector< TInput >  values0,
const unsigned int  shape1[NumDims],
std::vector< TInput >  values1,
const unsigned int  outShape[NumDims],
std::vector< TOutput >  outValues,
float  quantScale = 1.0f,
int  quantOffset = 0 
)

Definition at line 152 of file ElementwiseTestImpl.hpp.

163 {
164  return ElementwiseTestHelper<NumDims, Descriptor, ArmnnTypeInput, ArmnnTypeOutput>(
165  workloadFactory,
166  memoryManager,
167  shape0,
168  values0,
169  quantScale,
170  quantOffset,
171  shape1,
172  values1,
173  quantScale,
174  quantOffset,
175  outShape,
176  outValues,
177  quantScale,
178  quantOffset);
179 }

◆ ElementwiseTestHelper() [4/4]

LayerTestResult<T, NumDims> ElementwiseTestHelper ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const unsigned int  shape0[NumDims],
std::vector< T >  values0,
const unsigned int  shape1[NumDims],
std::vector< T >  values1,
const unsigned int  outShape[NumDims],
std::vector< T >  outValues,
float  quantScale = 1.0f,
int  quantOffset = 0 
)

Definition at line 185 of file ElementwiseTestImpl.hpp.

196 {
197  return ElementwiseTestHelper<NumDims, Descriptor, ArmnnType, ArmnnType>(
198  workloadFactory,
199  memoryManager,
200  shape0,
201  values0,
202  shape1,
203  values1,
204  outShape,
205  outValues,
206  quantScale,
207  quantOffset);
208 }