ArmNN
 21.11
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().

30  {
31  return CreateWorkload(workloadFactory, info, descriptor);
32 }
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 40 of file ElementwiseTestImpl.hpp.

References armnn::Boolean, CopyDataFromITensorHandle(), CopyDataToITensorHandle(), ITensorHandleFactory::CreateTensorHandle(), and TensorInfo::SetQuantizationScale().

55  {
56  armnn::TensorInfo inputTensorInfo0{NumDims, shape0, ArmnnTypeInput};
57  armnn::TensorInfo inputTensorInfo1{NumDims, shape1, ArmnnTypeInput};
58  armnn::TensorInfo outputTensorInfo{NumDims, outShape, ArmnnTypeOutput};
59 
60  inputTensorInfo0.SetQuantizationScale(quantScale0);
61  inputTensorInfo0.SetQuantizationOffset(quantOffset0);
62 
63  inputTensorInfo1.SetQuantizationScale(quantScale1);
64  inputTensorInfo1.SetQuantizationOffset(quantOffset1);
65 
66  outputTensorInfo.SetQuantizationScale(outQuantScale);
67  outputTensorInfo.SetQuantizationOffset(outQuantOffset);
68 
69  std::vector<TOutput> actualOutput(outputTensorInfo.GetNumElements());
70 
71  bool isBoolean = false;
72  if (ArmnnTypeOutput == armnn::DataType::Boolean)
73  {
74  isBoolean = true;
75  }
76 
77  std::unique_ptr<armnn::ITensorHandle> inputHandle0 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo0);
78  std::unique_ptr<armnn::ITensorHandle> inputHandle1 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo1);
79  std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
80 
81  Descriptor data;
83  AddInputToWorkload(data, info, inputTensorInfo0, inputHandle0.get());
84  AddInputToWorkload(data, info, inputTensorInfo1, inputHandle1.get());
85  AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
86  auto workload = CreateWorkload<Descriptor>(workloadFactory, info, data);
87 
88  inputHandle0->Allocate();
89  inputHandle1->Allocate();
90  outputHandle->Allocate();
91 
92  CopyDataToITensorHandle(inputHandle0.get(), values0.data());
93  CopyDataToITensorHandle(inputHandle1.get(), values1.data());
94 
95  workload->PostAllocationConfigure();
96  ExecuteWorkload(*workload, memoryManager);
97 
98  CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
99 
100  return LayerTestResult<TOutput, NumDims>(actualOutput,
101  outValues,
102  outputHandle->GetShape(),
103  outputTensorInfo.GetShape(),
104  isBoolean);
105 }
void SetQuantizationScale(float scale)
Definition: Tensor.cpp:475
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
Contains information about TensorInfos of 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 111 of file ElementwiseTestImpl.hpp.

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

◆ 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 151 of file ElementwiseTestImpl.hpp.

162  {
163  return ElementwiseTestHelper<NumDims, Descriptor, ArmnnTypeInput, ArmnnTypeOutput>(
164  workloadFactory,
165  memoryManager,
166  shape0,
167  values0,
168  quantScale,
169  quantOffset,
170  shape1,
171  values1,
172  quantScale,
173  quantOffset,
174  outShape,
175  outValues,
176  tensorHandleFactory,
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,
const armnn::ITensorHandleFactory tensorHandleFactory,
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  tensorHandleFactory,
207  quantScale,
208  quantOffset);
209 }