ArmNN
 21.02
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, const armnn::ITensorHandleFactory &tensorHandleFactory, 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, const armnn::ITensorHandleFactory &tensorHandleFactory, 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, const armnn::ITensorHandleFactory &tensorHandleFactory, 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, const armnn::ITensorHandleFactory &tensorHandleFactory, 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,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  outQuantScale,
int  outQuantOffset 
)

Definition at line 41 of file ElementwiseTestImpl.hpp.

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

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

Definition at line 112 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  tensorHandleFactory,
143  outQuantScale,
144  outQuantOffset);
145 }

◆ 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,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  quantScale = 1.0f,
int  quantOffset = 0 
)

Definition at line 153 of file ElementwiseTestImpl.hpp.

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

◆ 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,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  quantScale = 1.0f,
int  quantOffset = 0 
)

Definition at line 188 of file ElementwiseTestImpl.hpp.

200 {
201  return ElementwiseTestHelper<NumDims, Descriptor, ArmnnType, ArmnnType>(
202  workloadFactory,
203  memoryManager,
204  shape0,
205  values0,
206  shape1,
207  values1,
208  outShape,
209  outValues,
210  tensorHandleFactory,
211  quantScale,
212  quantOffset);
213 }