12 std::unique_ptr<armnn::IWorkload> CreateWorkload<armnn::MultiplicationQueueDescriptor>(
17 return workloadFactory.CreateMultiplication(descriptor, info);
24 const unsigned int width = 2u;
25 const unsigned int height = 2u;
26 const unsigned int channelCount = 2u;
27 const unsigned int batchSize = 2u;
29 unsigned int shape[] = { batchSize, channelCount, height, width };
31 std::vector<float> input0 =
33 1, 1, 1, 1, 2, 2, 2, 2,
34 3, 3, 3, 3, 4, 4, 4, 4
37 std::vector<float> input1 =
39 2, 2, 2, 2, 3, 3, 3, 3,
40 4, 4, 4, 4, 5, 5, 5, 5
43 std::vector<float> output =
45 2, 2, 2, 2, 6, 6, 6, 6,
46 12, 12, 12, 12, 20, 20, 20, 20
49 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::Float32>(
65 const unsigned int width = 3u;
66 const unsigned int height = 2u;
67 const unsigned int channelCount = 2u;
68 const unsigned int batchSize = 2u;;
69 const unsigned int depth = 2u;
71 unsigned int shape[] = { depth, batchSize, channelCount, height, width };
73 std::vector<float> input0 =
75 1.80f, 0.20f, 2.30f, 1.30f, 2.10f, 1.00f,
76 2.60f, 0.60f, 2.10f, 2.30f, 2.30f, 2.00f,
78 2.50f, 1.00f, 2.90f, 3.10f, 1.50f, 2.40f,
79 2.80f, 1.10f, 1.00f, 3.20f, 1.00f, 2.30f,
82 0.30f, 2.20f, 1.00f, 0.20f, 1.60f, 1.40f,
83 0.80f, 3.20f, 0.10f, 0.10f, 3.10f, 2.10f,
85 1.50f, 2.40f, 1.40f, 0.70f, 2.40f, 1.40f,
86 1.60f, 1.20f, 1.90f, 0.80f, 0.00f, 0.10f,
89 std::vector<float> input1 =
91 0.70f, 1.00f, 2.90f, 2.20f, 3.10f, 2.80f,
92 1.80f, 2.00f, 0.50f, 2.30f, 1.20f, 2.70f,
94 2.40f, 0.20f, 3.20f, 1.60f, 0.20f, 2.50f,
95 2.30f, 0.70f, 2.70f, 1.80f, 2.90f, 2.70f,
98 3.20f, 3.20f, 0.70f, 1.90f, 2.70f, 2.50f,
99 2.40f, 0.90f, 2.30f, 1.80f, 2.50f, 2.00f,
101 1.60f, 2.20f, 1.60f, 2.00f, 0.30f, 3.20f,
102 0.40f, 3.00f, 2.60f, 0.30f, 0.00f, 2.50f,
105 std::vector<float> output =
107 1.26f, 0.20f, 6.67f, 2.86f, 6.51f, 2.80f,
108 4.68f, 1.20f, 1.05f, 5.29f, 2.76f, 5.40f,
110 6.00f, 0.20f, 9.28f, 4.96f, 0.30f, 6.00f,
111 6.44f, 0.77f, 2.70f, 5.76f, 2.90f, 6.21f,
114 0.96f, 7.04f, 0.70f, 0.38f, 4.32f, 3.50f,
115 1.92f, 2.88f, 0.23f, 0.18f, 7.75f, 4.20f,
117 2.40f, 5.28f, 2.24f, 1.40f, 0.72f, 4.48f,
118 0.64f, 3.60f, 4.94f, 0.24f, 0.00f, 0.25f,
121 return ElementwiseTestHelper<5, armnn::MultiplicationQueueDescriptor, armnn::DataType::Float32>(
130 tensorHandleFactory);
138 unsigned int shape0[] = { 1, 2, 2, 2 };
139 unsigned int shape1[] = { 1, 1, 1, 1 };
141 std::vector<float> input0 = { 1, 2, 3, 4, 5, 6, 7, 8};
143 std::vector<float> input1 = { 2 };
145 std::vector<float> output = { 2, 4, 6, 8, 10, 12, 14, 16};
147 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::Float32>(
156 tensorHandleFactory);
164 unsigned int shape0[] = { 1, 3, 3, 2 };
165 unsigned int shape1[] = { 1, 1, 1, 2 };
167 std::vector<float> input0 =
171 13, 14, 15, 16, 17, 18
174 std::vector<float> input1 = { 1, 2 };
176 std::vector<float> output =
179 7, 16, 9, 20, 11, 24,
180 13, 28, 15, 32, 17, 36
183 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::Float32>(
192 tensorHandleFactory);
200 constexpr
unsigned int batchSize = 1u;
201 constexpr
unsigned int channels = 2u;
202 constexpr
unsigned int height = 2u;
203 constexpr
unsigned int width = 3u;
205 const unsigned int shape[] = { batchSize, channels, height, width };
208 std::vector<uint8_t> input0 =
210 62, 37, 3, 172, 13, 111,
211 188, 20, 73, 31, 23, 31
215 std::vector<uint8_t> input1 =
217 126, 240, 252, 183, 121, 247,
218 48, 115, 151, 79, 78, 97
222 std::vector<uint8_t> output =
224 64, 72, 0, 255, 8, 236,
225 77, 15, 92, 16, 10, 21,
229 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::QAsymmU8>(
252 const unsigned int shape0[] = { 1, 2, 2, 3 };
253 const unsigned int shape1[] = { 1, 1, 1, 1 };
255 std::vector<uint8_t> input0 =
261 std::vector<uint8_t> input1 = { 2 };
263 std::vector<uint8_t> output =
266 14, 16, 18, 20, 22, 24
269 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::QAsymmU8>(
278 tensorHandleFactory);
286 const unsigned int shape0[] = { 1, 2, 2, 3 };
287 const unsigned int shape1[] = { 1, 1, 1, 3 };
289 std::vector<uint8_t> input0 =
295 std::vector<uint8_t> input1 = { 1, 2, 3 };
297 std::vector<uint8_t> output =
300 7, 16, 27, 10, 22, 36
303 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::QAsymmU8>(
312 tensorHandleFactory);
320 const unsigned int shape[] = { 1, 2, 2, 3 };
322 std::vector<int16_t> input0 =
325 12, 13, 14, 15, 16, 17
328 std::vector<int16_t> input1 =
334 std::vector<int16_t> output =
336 6, 14, 24, 36, 50, 66,
337 84, 104, 126, 150, 176, 204
340 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::QSymmS16>(
349 tensorHandleFactory);
357 const unsigned int shape0[] = { 1, 2, 2, 3 };
358 const unsigned int shape1[] = { 1, 1, 1, 1 };
360 std::vector<int16_t> input0 =
366 std::vector<int16_t> input1 = { 2 };
368 std::vector<int16_t> output =
371 14, 16, 18, 20, 22, 24
374 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::QSymmS16>(
383 tensorHandleFactory);
391 const unsigned int shape0[] = { 1, 2, 2, 3 };
392 const unsigned int shape1[] = { 1, 1, 1, 3 };
394 std::vector<int16_t> input0 =
400 std::vector<int16_t> input1 = { 1, 2, 3 };
402 std::vector<int16_t> output =
405 7, 16, 27, 10, 22, 36
408 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::QSymmS16>(
417 tensorHandleFactory);
425 const unsigned int shape[] = { 1, 2, 2, 3 };
427 std::vector<int32_t> input0 =
430 12, 13, 14, 15, 16, 17
433 std::vector<int32_t> input1 =
439 std::vector<int32_t> output =
441 6, 14, 24, 36, 50, 66,
442 84, 104, 126, 150, 176, 204
445 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::Signed32>(
454 tensorHandleFactory);
462 const unsigned int shape0[] = { 1, 2, 2, 3 };
463 const unsigned int shape1[] = { 1, 1, 1, 1 };
465 std::vector<int32_t> input0 =
471 std::vector<int32_t> input1 = { 2 };
473 std::vector<int32_t> output =
476 14, 16, 18, 20, 22, 24
479 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::Signed32>(
488 tensorHandleFactory);
496 const unsigned int shape0[] = { 1, 2, 2, 3 };
497 const unsigned int shape1[] = { 1, 1, 1, 3 };
499 std::vector<int32_t> input0 =
505 std::vector<int32_t> input1 = { 1, 2, 3 };
507 std::vector<int32_t> output =
510 7, 16, 27, 10, 22, 36
513 return ElementwiseTestHelper<4, armnn::MultiplicationQueueDescriptor, armnn::DataType::Signed32>(
522 tensorHandleFactory);
533 const unsigned int width = 16;
534 const unsigned int height = 32;
535 const unsigned int channelCount = 2;
536 const unsigned int batchSize = 5;
542 constexpr
unsigned int shape[] = { batchSize, channelCount, height, width };
548 auto input0 = MakeRandomTensor<float>(inputTensorInfo0, 803506992);
549 auto input1 = MakeRandomTensor<float>(inputTensorInfo1, 54902257);
551 std::vector<float> actualOutput(outputTensorInfo.
GetNumElements());
552 std::vector<float> expectedOutput(outputTensorInfo.
GetNumElements());
554 std::unique_ptr<armnn::ITensorHandle> inputHandle0 = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo0);
555 std::unique_ptr<armnn::ITensorHandle> inputHandle1 = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo1);
556 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
558 std::unique_ptr<armnn::ITensorHandle> inputHandle0Ref = refTensorHandleFactory.
CreateTensorHandle(inputTensorInfo0);
559 std::unique_ptr<armnn::ITensorHandle> inputHandle1Ref = refTensorHandleFactory.
CreateTensorHandle(inputTensorInfo1);
560 std::unique_ptr<armnn::ITensorHandle> outputHandleRef = refTensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
564 AddInputToWorkload(data, info, inputTensorInfo0, inputHandle0.get());
565 AddInputToWorkload(data, info, inputTensorInfo1, inputHandle1.get());
566 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
570 SetWorkloadInput(refData, refInfo, 0, inputTensorInfo0, inputHandle0Ref.get());
571 SetWorkloadInput(refData, refInfo, 1, inputTensorInfo1, inputHandle1Ref.get());
572 SetWorkloadOutput(refData, refInfo, 0, outputTensorInfo, outputHandleRef.get());
575 std::unique_ptr<armnn::IWorkload> workloadRef = refWorkloadFactory.
CreateMultiplication(refData, refInfo);
577 inputHandle0->Allocate();
578 inputHandle1->Allocate();
579 outputHandle->Allocate();
580 inputHandle0Ref->Allocate();
581 inputHandle1Ref->Allocate();
582 outputHandleRef->Allocate();
589 workload->PostAllocationConfigure();
591 workloadRef->PostAllocationConfigure();
592 workloadRef->Execute();
598 outputHandle->GetShape(),
virtual std::unique_ptr< IWorkload > CreateMultiplication(const MultiplicationQueueDescriptor &descriptor, const WorkloadInfo &info) const
LayerTestResult< int32_t, 4 > MultiplicationInt32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
const TensorShape & GetShape() const
LayerTestResult< float, 4 > MultiplicationBroadcast1ElementTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int32_t, 4 > MultiplicationBroadcast1DVectorInt32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > MultiplicationBroadcast1ElementUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void IgnoreUnused(Ts &&...)
LayerTestResult< int32_t, 4 > MultiplicationBroadcast1ElementInt32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< float, 4 > CompareMultiplicationTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, armnn::IWorkloadFactory &refWorkloadFactory, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::ITensorHandleFactory &refTensorHandleFactory)
LayerTestResult< float, 4 > MultiplicationBroadcast1DVectorTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 4 > MultiplicationBroadcast1ElementInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > MultiplicationBroadcast1DVectorUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
Contains information about TensorInfos of a layer.
LayerTestResult< int16_t, 4 > MultiplicationInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 4 > MultiplicationBroadcast1DVectorInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > MultiplicationUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 5 > Multiplication5dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0
LayerTestResult< float, 4 > MultiplicationTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
unsigned int GetNumElements() const
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)