26 template<
typename DescriptorType>
30 const DescriptorType& descriptor)
35 template <std::size_t NumDims,
44 const unsigned int shape0[NumDims],
45 std::vector<TInput> values0,
48 const unsigned int shape1[NumDims],
49 std::vector<TInput> values1,
52 const unsigned int outShape[NumDims],
53 std::vector<TOutput> outValues,
61 auto input0 = MakeTensor<TInput, NumDims>(inputTensorInfo0, values0);
62 auto input1 = MakeTensor<TInput, NumDims>(inputTensorInfo1, values1);
65 inputTensorInfo0.SetQuantizationOffset(quantOffset0);
67 inputTensorInfo1.SetQuantizationScale(quantScale1);
68 inputTensorInfo1.SetQuantizationOffset(quantOffset1);
70 outputTensorInfo.SetQuantizationScale(outQuantScale);
71 outputTensorInfo.SetQuantizationOffset(outQuantOffset);
80 std::unique_ptr<armnn::ITensorHandle> inputHandle0 = workloadFactory.
CreateTensorHandle(inputTensorInfo0);
81 std::unique_ptr<armnn::ITensorHandle> inputHandle1 = workloadFactory.
CreateTensorHandle(inputTensorInfo1);
82 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputTensorInfo);
86 AddInputToWorkload(data, info, inputTensorInfo0, inputHandle0.get());
87 AddInputToWorkload(data, info, inputTensorInfo1, inputHandle1.get());
88 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
89 auto workload = CreateWorkload<Descriptor>(workloadFactory, info, data);
91 inputHandle0->Allocate();
92 inputHandle1->Allocate();
93 outputHandle->Allocate();
98 workload->PostAllocationConfigure();
99 ExecuteWorkload(*workload, memoryManager);
103 ret.
outputExpected = MakeTensor<TOutput, NumDims>(outputTensorInfo, outValues);
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,
127 return ElementwiseTestHelper<NumDims, Descriptor, ArmnnType, ArmnnType>(
144 template <std::size_t NumDims,
153 const unsigned int shape0[NumDims],
154 std::vector<TInput> values0,
155 const unsigned int shape1[NumDims],
156 std::vector<TInput> values1,
157 const unsigned int outShape[NumDims],
158 std::vector<TOutput> outValues,
159 float quantScale = 1.0f,
162 return ElementwiseTestHelper<NumDims, Descriptor, ArmnnTypeInput, ArmnnTypeOutput>(
179 template <std::size_t NumDims,
186 const unsigned int shape0[NumDims],
187 std::vector<T> values0,
188 const unsigned int shape1[NumDims],
189 std::vector<T> values1,
190 const unsigned int outShape[NumDims],
191 std::vector<T> outValues,
192 float quantScale = 1.0f,
195 return ElementwiseTestHelper<NumDims, Descriptor, ArmnnType, ArmnnType>(
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
boost::multi_array< T, n > output
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)
typename ResolveTypeImpl< DT >::Type ResolveType
void SetQuantizationScale(float scale)
boost::multi_array< T, n > outputExpected
std::unique_ptr< armnn::IWorkload > CreateWorkload(const armnn::IWorkloadFactory &workloadFactory, const armnn::WorkloadInfo &info, const DescriptorType &descriptor)