18 #include <DataTypeUtils.hpp> 26 template<
typename DescriptorType>
30 const DescriptorType& descriptor) {
34 template<std::size_t NumDims,
43 const unsigned int shape0[NumDims],
44 std::vector<TInput> values0,
47 const unsigned int shape1[NumDims],
48 std::vector<TInput> values1,
51 const unsigned int outShape[NumDims],
52 std::vector<TOutput> outValues,
61 inputTensorInfo0.SetQuantizationOffset(quantOffset0);
63 inputTensorInfo1.SetQuantizationScale(quantScale1);
64 inputTensorInfo1.SetQuantizationOffset(quantOffset1);
66 outputTensorInfo.SetQuantizationScale(outQuantScale);
67 outputTensorInfo.SetQuantizationOffset(outQuantOffset);
69 std::vector<TOutput> actualOutput(outputTensorInfo.GetNumElements());
71 bool isBoolean =
false;
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);
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);
88 inputHandle0->Allocate();
89 inputHandle1->Allocate();
90 outputHandle->Allocate();
95 workload->PostAllocationConfigure();
96 ExecuteWorkload(*workload, memoryManager);
102 outputHandle->GetShape(),
103 outputTensorInfo.GetShape(),
107 template<std::size_t NumDims,
114 const unsigned int shape0[NumDims],
115 std::vector<T> values0,
118 const unsigned int shape1[NumDims],
119 std::vector<T> values1,
122 const unsigned int outShape[NumDims],
123 std::vector<T> outValues,
126 int outQuantOffset) {
127 return ElementwiseTestHelper<NumDims, Descriptor, ArmnnType, ArmnnType>(
145 template<std::size_t NumDims,
154 const unsigned int shape0[NumDims],
155 std::vector<TInput> values0,
156 const unsigned int shape1[NumDims],
157 std::vector<TInput> values1,
158 const unsigned int outShape[NumDims],
159 std::vector<TOutput> outValues,
161 float quantScale = 1.0f,
162 int quantOffset = 0) {
163 return ElementwiseTestHelper<NumDims, Descriptor, ArmnnTypeInput, ArmnnTypeOutput>(
181 template<std::size_t NumDims,
188 const unsigned int shape0[NumDims],
189 std::vector<T> values0,
190 const unsigned int shape1[NumDims],
191 std::vector<T> values1,
192 const unsigned int outShape[NumDims],
193 std::vector<T> outValues,
195 float quantScale = 1.0f,
196 int quantOffset = 0) {
197 return ElementwiseTestHelper<NumDims, Descriptor, ArmnnType, ArmnnType>(
std::unique_ptr< armnn::IWorkload > CreateWorkload(const armnn::IWorkloadFactory &workloadFactory, const armnn::WorkloadInfo &info, const DescriptorType &descriptor)
typename ResolveTypeImpl< DT >::Type ResolveType
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)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
void SetQuantizationScale(float scale)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
Contains information about TensorInfos of a layer.
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0