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,
62 auto input0 = MakeTensor<TInput, NumDims>(inputTensorInfo0, values0);
63 auto input1 = MakeTensor<TInput, NumDims>(inputTensorInfo1, values1);
66 inputTensorInfo0.SetQuantizationOffset(quantOffset0);
68 inputTensorInfo1.SetQuantizationScale(quantScale1);
69 inputTensorInfo1.SetQuantizationOffset(quantOffset1);
71 outputTensorInfo.SetQuantizationScale(outQuantScale);
72 outputTensorInfo.SetQuantizationOffset(outQuantOffset);
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);
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);
92 inputHandle0->Allocate();
93 inputHandle1->Allocate();
94 outputHandle->Allocate();
99 workload->PostAllocationConfigure();
100 ExecuteWorkload(*workload, memoryManager);
104 ret.
outputExpected = MakeTensor<TOutput, NumDims>(outputTensorInfo, outValues);
108 template <std::size_t NumDims,
115 const unsigned int shape0[NumDims],
116 std::vector<T> values0,
119 const unsigned int shape1[NumDims],
120 std::vector<T> values1,
123 const unsigned int outShape[NumDims],
124 std::vector<T> outValues,
129 return ElementwiseTestHelper<NumDims, Descriptor, ArmnnType, ArmnnType>(
147 template <std::size_t NumDims,
156 const unsigned int shape0[NumDims],
157 std::vector<TInput> values0,
158 const unsigned int shape1[NumDims],
159 std::vector<TInput> values1,
160 const unsigned int outShape[NumDims],
161 std::vector<TOutput> outValues,
163 float quantScale = 1.0f,
166 return ElementwiseTestHelper<NumDims, Descriptor, ArmnnTypeInput, ArmnnTypeOutput>(
184 template <std::size_t NumDims,
191 const unsigned int shape0[NumDims],
192 std::vector<T> values0,
193 const unsigned int shape1[NumDims],
194 std::vector<T> values1,
195 const unsigned int outShape[NumDims],
196 std::vector<T> outValues,
198 float quantScale = 1.0f,
201 return ElementwiseTestHelper<NumDims, Descriptor, ArmnnType, ArmnnType>(
std::unique_ptr< armnn::IWorkload > CreateWorkload(const armnn::IWorkloadFactory &workloadFactory, const armnn::WorkloadInfo &info, const DescriptorType &descriptor)
boost::multi_array< T, n > outputExpected
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 SetQuantizationScale(float scale)
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
boost::multi_array< T, n > output
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)