32 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
40 const std::vector<T>& input,
41 const std::vector<T>& outputExpected,
62 unsigned int outputChannels =
armnn::numeric_cast<
unsigned int>(outputShape[channelsIndex]);
66 inputBatchSize, inputChannels, inputDepth, inputHeight, inputWidth, dataLayout, ArmnnType);
69 outputBatchSize, outputChannels, outputDepth, outputHeight, outputWidth, dataLayout, ArmnnType);
72 if (armnn::IsQuantizedType<T>())
74 inputTensorInfo.SetQuantizationScale(qScale);
75 inputTensorInfo.SetQuantizationOffset(qOffset);
83 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo);
84 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
91 AddInputToWorkload(queueDescriptor, workloadInfo, inputTensorInfo, inputHandle.get());
92 AddOutputToWorkload(queueDescriptor, workloadInfo, outputTensorInfo, outputHandle.get());
96 std::string reasonIfUnsupported;
101 reasonIfUnsupported);
102 if (!result.m_Supported)
111 inputHandle->Allocate();
112 outputHandle->Allocate();
120 result.m_ActualData = actualOutput;
121 result.m_ExpectedData = outputExpected;
135 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
157 unsigned int inputWidth = 3;
158 unsigned int inputHeight = 3;
159 unsigned int inputDepth = 3;
160 unsigned int outputWidth =
163 unsigned int outputHeight =
166 unsigned int outputDepth =
169 unsigned int channels = 2;
170 unsigned int batchSize = 2;
172 armnn::TensorInfo inputTensorInfo({ batchSize, channels, inputDepth, inputHeight, inputWidth }, ArmnnType);
173 armnn::TensorInfo outputTensorInfo({ batchSize, channels, outputDepth, outputHeight, outputWidth }, ArmnnType);
176 if(armnn::IsQuantizedType<T>())
179 inputTensorInfo.SetQuantizationOffset(qOffset);
184 std::vector<float> singleChannelData({
199 std::vector<float> inputData;
200 auto negator = [](
float f) {
return -f; };
203 inputData.insert(inputData.end(), singleChannelData.begin(), singleChannelData.end());
204 std::transform(singleChannelData.begin(), singleChannelData.end(), std::back_inserter(inputData), negator);
207 inputData.insert(inputData.end(), singleChannelData.begin(), singleChannelData.end());
208 std::transform(singleChannelData.begin(), singleChannelData.end(), std::back_inserter(inputData), negator);
210 auto input = QuantizedVector<T>(inputData, qScale, qOffset);
213 std::vector<T> outputExpected = QuantizedVector<T>(
242 return SimplePooling3dTestImpl<ArmnnType>(
243 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
244 input, outputExpected, inputTensorInfo.GetShape(), outputTensorInfo.
GetShape());
247 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
267 if(armnn::IsQuantizedType<T>())
275 std::vector<T> inputData(
277 1.0f, 2.0f, 5.0f, 6.0f,
278 3.0f, 4.0f, 7.0f, 8.0f,
279 9.0f, 10.0f, 13.0f, 14.0f,
280 11.0f, 12.0f, 15.0f, 16.0f,
282 17.0f, 18.0f, 21.0f, 22.0f,
283 19.0f, 20.0f, 23.0f, 24.0f,
284 25.0f, 26.0f, 29.0f, 30.0f,
285 27.0f, 28.0f, 31.0f, 32.0f,
287 33.0f, 34.0f, 37.0f, 38.0f,
288 35.0f, 36.0f, 39.0f, 40.0f,
289 41.0f, 42.0f, 45.0f, 46.0f,
290 43.0f, 44.0f, 47.0f, 48.0f,
292 49.0f, 50.0f, 53.0f, 54.0f,
293 51.0f, 52.0f, 55.0f, 56.0f,
294 57.0f, 58.0f, 61.0f, 62.0f,
295 59.0f, 60.0f, 63.0f, 64.0f,
299 std::vector<T> outputData(
312 std::vector<T> tmp(inputData.size());
316 std::vector<T> tmp1(outputData.size());
321 return SimplePooling3dTestImpl<ArmnnType>(
322 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
323 inputData, outputData, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
326 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
350 if(armnn::IsQuantizedType<T>())
358 auto input = QuantizedVector<T>(
360 -1.0f, -2.0f, 3.0f, 4.0f,
361 -1.0f, -2.0f, 3.0f, 4.0f,
362 1.0f, 2.0f, -3.0f, -4.0f,
363 1.0f, 2.0f, -3.0f, -4.0f,
365 -1.0f, -2.0f, 3.0f, 4.0f,
366 -1.0f, -2.0f, 3.0f, 4.0f,
367 1.0f, 2.0f, -3.0f, -4.0f,
368 1.0f, 2.0f, -3.0f, -4.0f,
370 -1.0f, -2.0f, 3.0f, 4.0f,
371 -1.0f, -2.0f, 3.0f, 4.0f,
372 1.0f, 2.0f, -3.0f, -4.0f,
373 1.0f, 2.0f, -3.0f, -4.0f,
375 -1.0f, -2.0f, 3.0f, 4.0f,
376 -1.0f, -2.0f, 3.0f, 4.0f,
377 1.0f, 2.0f, -3.0f, -4.0f,
378 1.0f, 2.0f, -3.0f, -4.0f,
382 auto outputExpected = QuantizedVector<T>(
398 return SimplePooling3dTestImpl<ArmnnType>(
399 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
400 input, outputExpected, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
403 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
423 if(armnn::IsQuantizedType<T>())
431 std::vector<T> inputData(
433 1.0f, 2.0f, 5.0f, 6.0f,
434 3.0f, 4.0f, 7.0f, 8.0f,
435 9.0f, 10.0f, 13.0f, 14.0f,
436 11.0f, 12.0f, 15.0f, 16.0f,
438 17.0f, 18.0f, 21.0f, 22.0f,
439 19.0f, 20.0f, 23.0f, 24.0f,
440 25.0f, 26.0f, 29.0f, 30.0f,
441 27.0f, 28.0f, 31.0f, 32.0f,
443 33.0f, 34.0f, 37.0f, 38.0f,
444 35.0f, 36.0f, 39.0f, 40.0f,
445 41.0f, 42.0f, 45.0f, 46.0f,
446 43.0f, 44.0f, 47.0f, 48.0f,
448 49.0f, 50.0f, 53.0f, 54.0f,
449 51.0f, 52.0f, 55.0f, 56.0f,
450 57.0f, 58.0f, 61.0f, 62.0f,
451 59.0f, 60.0f, 63.0f, 64.0f,
455 std::vector<T> outputData(
468 std::vector<T> tmp(inputData.size());
472 std::vector<T> tmp1(outputData.size());
477 return SimplePooling3dTestImpl<ArmnnType>(
478 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
479 inputData, outputData, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
482 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
506 if(armnn::IsQuantizedType<T>())
514 std::vector<T> input;
521 std::vector<T> outputExpected;
525 outputExpected.push_back(1);
528 return SimplePooling3dTestImpl<ArmnnType>(
529 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
530 input, outputExpected, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
533 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
557 if(armnn::IsQuantizedType<T>())
565 auto input = QuantizedVector<T>(
567 12.0f, 20.0f, 32.0f, 40.0f,
568 12.0f, 20.0f, 32.0f, 40.0f,
569 12.0f, 20.0f, 32.0f, 40.0f,
570 12.0f, 20.0f, 32.0f, 40.0f,
572 24.0f, 40.0f, 64.0f, 80.0f,
573 24.0f, 40.0f, 64.0f, 80.0f,
574 24.0f, 40.0f, 64.0f, 80.0f,
575 24.0f, 40.0f, 64.0f, 80.0f,
577 36.0f, 60.0f, 96.0f, 120.0f,
578 36.0f, 60.0f, 96.0f, 120.0f,
579 36.0f, 60.0f, 96.0f, 120.0f,
580 36.0f, 60.0f, 96.0f, 120.0f,
582 48.0f, 80.0f, 128.0f, 160.0f,
583 48.0f, 80.0f, 128.0f, 160.0f,
584 48.0f, 80.0f, 128.0f, 160.0f,
585 48.0f, 80.0f, 128.0f, 160.0f,
589 auto outputExpected = QuantizedVector<T>(
605 return SimplePooling3dTestImpl<ArmnnType>(
606 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
607 input, outputExpected, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
610 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
630 if(armnn::IsQuantizedType<T>())
638 std::vector<T> inputData(
640 1.0f, 2.0f, 5.0f, 6.0f,
641 3.0f, 4.0f, 7.0f, 8.0f,
642 9.0f, 10.0f, 13.0f, 14.0f,
643 11.0f, 12.0f, 15.0f, 16.0f,
645 17.0f, 18.0f, 21.0f, 22.0f,
646 19.0f, 20.0f, 23.0f, 24.0f,
647 25.0f, 26.0f, 29.0f, 30.0f,
648 27.0f, 28.0f, 31.0f, 32.0f,
650 33.0f, 34.0f, 37.0f, 38.0f,
651 35.0f, 36.0f, 39.0f, 40.0f,
652 41.0f, 42.0f, 45.0f, 46.0f,
653 43.0f, 44.0f, 47.0f, 48.0f,
655 49.0f, 50.0f, 53.0f, 54.0f,
656 51.0f, 52.0f, 55.0f, 56.0f,
657 57.0f, 58.0f, 61.0f, 62.0f,
658 59.0f, 60.0f, 63.0f, 64.0f,
662 std::vector<T> outputData(
664 13.2476412995f, 16.5981926727f,
665 20.1866292382f, 23.9060661758f,
667 43.2608367926f, 47.1963981677f,
668 51.1419592898f, 55.0953718564f,
675 std::vector<T> tmp(inputData.size());
679 std::vector<T> tmp1(outputData.size());
684 return SimplePooling3dTestImpl<ArmnnType>(
685 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
686 inputData, outputData, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
689 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
713 if(armnn::IsQuantizedType<T>())
721 auto input = QuantizedVector<T>(
723 1.0f, 2.0f, 3.0f, 4.0f,
724 1.0f, 2.0f, 3.0f, 4.0f,
725 1.0f, 2.0f, 3.0f, 4.0f,
726 1.0f, 2.0f, 3.0f, 4.0f,
728 2.0f, 3.0f, 4.0f, 5.0f,
729 2.0f, 3.0f, 4.0f, 5.0f,
730 2.0f, 3.0f, 4.0f, 5.0f,
731 2.0f, 3.0f, 4.0f, 5.0f,
733 3.0f, 4.0f, 5.0f, 6.0f,
734 3.0f, 4.0f, 5.0f, 6.0f,
735 3.0f, 4.0f, 5.0f, 6.0f,
736 3.0f, 4.0f, 5.0f, 6.0f,
738 4.0f, 5.0f, 6.0f, 7.0f,
739 4.0f, 5.0f, 6.0f, 7.0f,
740 4.0f, 5.0f, 6.0f, 7.0f,
741 4.0f, 5.0f, 6.0f, 7.0f,
745 float v111 = float(
sqrt(pow(1,2)/8.0f));
746 float v112 = float(
sqrt((pow(2,2)+pow(3,2))/8.0f));
747 float v113 = float(
sqrt(pow(4,2)/8));
749 float v121 = float(
sqrt((2*pow(1,2))/8.0f));
750 float v122 = float(
sqrt((2*pow(2,2)+2*pow(3,2))/8.0f));
751 float v123 = float(
sqrt((2*pow(4,2))/8.0f));
757 float v211 = float(
sqrt((pow(2,2)+pow(3,2))/8.0f));
758 float v212 = float(
sqrt((pow(3,2)+2*pow(4,2)+pow(5,2))/8.0f));
759 float v213 = float(
sqrt((pow(5,2)+pow(6,2))/8.0f));
761 float v221 = float(
sqrt((2*pow(2,2)+2*pow(3,2))/8.0f));
762 float v222 = float(
sqrt((2*pow(3,2)+4*pow(4,2)+2*pow(5,2))/8.0f));
763 float v223 = float(
sqrt((2*pow(5,2)+2*pow(6,2))/8.0f));
769 float v311 = float(
sqrt(pow(4,2)/8.0f));
770 float v312 = float(
sqrt((pow(5,2)+pow(6,2))/8.0f));
771 float v313 = float(
sqrt(pow(7,2)/8));
773 float v321 = float(
sqrt((2*pow(4,2))/8.0f));
774 float v322 = float(
sqrt((2*pow(5,2)+2*pow(6,2))/8.0f));
775 float v323 = float(
sqrt((2*pow(7,2))/8.0f));
781 auto outputExpected = QuantizedVector<T>(
797 return SimplePooling3dTestImpl<ArmnnType>(
798 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
799 input, outputExpected, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
802 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
815 descriptor.m_PoolWidth = 1;
816 descriptor.m_PoolHeight = 2;
817 descriptor.m_PoolDepth = 3;
818 descriptor.m_StrideX = 0;
819 descriptor.m_StrideY = 2;
820 descriptor.m_StrideZ = 1;
821 descriptor.m_PadLeft = 0;
822 descriptor.m_PadRight = 0;
823 descriptor.m_PadTop = 2;
824 descriptor.m_PadBottom = 0;
825 descriptor.m_PadFront = 1;
826 descriptor.m_PadBack = 2;
831 auto input = QuantizedVector<T>(
838 auto outputExpected = QuantizedVector<T>(
840 0.0f, 3.0f, 0.0f, 3.0f,
844 return SimplePooling3dTestImpl<ArmnnType>(
845 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
846 input, outputExpected, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
849 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
862 descriptor.m_PoolWidth = 1;
863 descriptor.m_PoolHeight = 2;
864 descriptor.m_PoolDepth = 3;
865 descriptor.m_StrideX = 0;
866 descriptor.m_StrideY = 2;
867 descriptor.m_StrideZ = 1;
868 descriptor.m_PadLeft = 0;
869 descriptor.m_PadRight = 0;
870 descriptor.m_PadTop = 2;
871 descriptor.m_PadBottom = 0;
872 descriptor.m_PadFront = 1;
873 descriptor.m_PadBack = 2;
878 auto input = QuantizedVector<T>(
885 auto outputExpected = QuantizedVector<T>(
887 0.0f, 2.0f, 0.0f, 2.0f,
891 return SimplePooling3dTestImpl<ArmnnType>(
892 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
893 input, outputExpected, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
896 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
909 descriptor.m_PoolWidth = 1;
910 descriptor.m_PoolHeight = 2;
911 descriptor.m_PoolDepth = 3;
912 descriptor.m_StrideX = 0;
913 descriptor.m_StrideY = 2;
914 descriptor.m_StrideZ = 1;
915 descriptor.m_PadLeft = 0;
916 descriptor.m_PadRight = 0;
917 descriptor.m_PadTop = 2;
918 descriptor.m_PadBottom = 0;
919 descriptor.m_PadFront = 1;
920 descriptor.m_PadBack = 2;
925 auto input = QuantizedVector<T>(
932 auto outputExpected = QuantizedVector<T>(
934 0.0f, 2.2360679775f, 0.0f, 2.2360679775f,
938 return SimplePooling3dTestImpl<ArmnnType>(
939 workloadFactory, memoryManager, tensorHandleFactory, descriptor, qScale, qOffset,
940 input, outputExpected, inputTensorInfo.
GetShape(), outputTensorInfo.
GetShape());
943 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
955 const unsigned int inputWidth = 16;
956 const unsigned int inputHeight = 32;
957 const unsigned int inputDepth = 48;
958 const unsigned int channelCount = 2;
959 const unsigned int batchSize = 5;
961 const unsigned int poolSize = 3;
962 const unsigned int strideX = 2;
963 const unsigned int strideY = 4;
964 const unsigned int strideZ = 6;
965 const unsigned int padX = 0;
966 const unsigned int padY = 0;
967 const unsigned int padZ = 0;
969 const unsigned int outputWidth = (inputWidth + 2 * padX + strideX - poolSize) / strideX;
970 const unsigned int outputHeight = (inputHeight + 2 * padY + strideY - poolSize) / strideY;
971 const unsigned int outputDepth = (inputDepth + 2 * padZ + strideZ - poolSize) / strideZ;
976 unsigned int inputShape[] = { batchSize, channelCount, inputHeight, inputWidth, inputDepth };
977 unsigned int outputShape[] = { batchSize, channelCount, outputHeight, outputWidth, outputDepth };
983 if(armnn::IsQuantizedType<T>())
991 std::vector<T> input = MakeRandomTensor<T>(inputTensorInfo, 81715);
997 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo);
998 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
1002 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
1003 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
1019 std::unique_ptr<armnn::ITensorHandle> outputHandleRef = refTensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
1020 std::unique_ptr<armnn::ITensorHandle> inputHandleRef = refTensorHandleFactory.
CreateTensorHandle(inputTensorInfo);
1024 std::string reasonIfUnsupported;
1029 reasonIfUnsupported);
1030 if (!comparisonResult.m_Supported)
1032 return comparisonResult;
1037 SetWorkloadInput(refData, refInfo, 0, inputTensorInfo, inputHandleRef.get());
1038 SetWorkloadOutput(refData, refInfo, 0, outputTensorInfo, outputHandleRef.get());
1040 std::unique_ptr<armnn::IWorkload> workload
1042 std::unique_ptr<armnn::IWorkload> workloadRef
1045 outputHandleRef->Allocate();
1046 inputHandleRef->Allocate();
1047 inputHandle->Allocate();
1048 outputHandle->Allocate();
1053 workload->Execute();
1054 workloadRef->Execute();
1059 comparisonResult.m_ActualData = actualOutput;
1060 comparisonResult.m_ExpectedData = expectedOutput;
1062 return comparisonResult;
1073 return SimpleMaxPooling3dSize2x2x2Stride1x1x1TestCommon<armnn::DataType::Float32>(
1074 workloadFactory, memoryManager, tensorHandleFactory);
1082 return SimpleMaxPooling3dSize2x2x2Stride1x1x1TestCommon<armnn::DataType::QAsymmU8>(
1083 workloadFactory, memoryManager, tensorHandleFactory, 0.1f, 128);
1091 return SimpleMaxPooling3dSize2x2x2Stride1x1x1TestCommon<armnn::DataType::QSymmS16>(
1092 workloadFactory, memoryManager, tensorHandleFactory);
1101 return SimpleMaxPooling3dTestCommon<armnn::DataType::Float32>(
1102 workloadFactory, memoryManager, tensorHandleFactory, dataLayout);
1111 return SimpleMaxPooling3dTestCommon<armnn::DataType::QAsymmU8>(
1112 workloadFactory, memoryManager, tensorHandleFactory, dataLayout);
1121 return SimpleMaxPooling3dTestCommon<armnn::DataType::QSymmS16>(
1122 workloadFactory, memoryManager, tensorHandleFactory, dataLayout);
1130 return IgnorePaddingSimpleMaxPooling3dTestCommon<armnn::DataType::Float32>(
1131 workloadFactory, memoryManager, tensorHandleFactory);
1139 return IgnorePaddingSimpleMaxPooling3dTestCommon<armnn::DataType::QAsymmU8>(
1140 workloadFactory, memoryManager, tensorHandleFactory, 1.0f, -5);
1148 return IgnorePaddingSimpleMaxPooling3dTestCommon<armnn::DataType::QSymmS16>(
1149 workloadFactory, memoryManager, tensorHandleFactory);
1158 return SimpleAveragePooling3dTestCommon<armnn::DataType::Float32>(
1159 workloadFactory, memoryManager, tensorHandleFactory, dataLayout);
1168 return SimpleAveragePooling3dTestCommon<armnn::DataType::QAsymmU8>(
1169 workloadFactory, memoryManager, tensorHandleFactory, dataLayout);
1178 return SimpleAveragePooling3dTestCommon<armnn::DataType::QSymmS16>(
1179 workloadFactory, memoryManager, tensorHandleFactory, dataLayout);
1188 return SimpleL2Pooling3dTestCommon<armnn::DataType::Float32>(
1189 workloadFactory, memoryManager, tensorHandleFactory, dataLayout);
1198 return SimpleL2Pooling3dTestCommon<armnn::DataType::QAsymmU8>(
1199 workloadFactory, memoryManager, tensorHandleFactory, dataLayout);
1208 return SimpleL2Pooling3dTestCommon<armnn::DataType::QSymmS16>(
1209 workloadFactory, memoryManager, tensorHandleFactory, dataLayout);
1217 return LargeTensorsAveragePooling3dTestCommon<armnn::DataType::Float32>(
1218 workloadFactory, memoryManager, tensorHandleFactory);
1226 return LargeTensorsAveragePooling3dTestCommon<armnn::DataType::QAsymmU8>(
1227 workloadFactory, memoryManager, tensorHandleFactory, 0.5, -1);
1235 return LargeTensorsAveragePooling3dTestCommon<armnn::DataType::QSymmS16>(
1236 workloadFactory, memoryManager, tensorHandleFactory);
1244 return IgnorePaddingSimpleAveragePooling3dTestCommon<armnn::DataType::Float32>(
1245 workloadFactory, memoryManager, tensorHandleFactory);
1253 return IgnorePaddingSimpleAveragePooling3dTestCommon<armnn::DataType::QAsymmU8>(
1254 workloadFactory, memoryManager, tensorHandleFactory, 1.0f, -5);
1262 return IgnorePaddingSimpleAveragePooling3dTestCommon<armnn::DataType::QSymmS16>(
1263 workloadFactory, memoryManager, tensorHandleFactory);
1271 return IgnorePaddingSimpleL2Pooling3dTestCommon<armnn::DataType::Float32>(
1272 workloadFactory, memoryManager, tensorHandleFactory);
1280 return IgnorePaddingSimpleL2Pooling3dTestCommon<armnn::DataType::QAsymmU8>(
1281 workloadFactory, memoryManager, tensorHandleFactory, 1.0f, -5);
1289 return IgnorePaddingSimpleL2Pooling3dTestCommon<armnn::DataType::QSymmS16>(
1290 workloadFactory, memoryManager, tensorHandleFactory);
1298 return AsymmetricNonSquareMaxPooling3dTestCommon<armnn::DataType::Float32>(
1299 workloadFactory, memoryManager, tensorHandleFactory);
1307 return AsymmetricNonSquareMaxPooling3dTestCommon<armnn::DataType::QAsymmU8>(
1308 workloadFactory, memoryManager, tensorHandleFactory);
1316 return AsymmetricNonSquareMaxPooling3dTestCommon<armnn::DataType::QSymmS16>(
1317 workloadFactory, memoryManager, tensorHandleFactory);
1325 return AsymmetricNonSquareAveragePooling3dTestCommon<armnn::DataType::Float32>(
1326 workloadFactory, memoryManager, tensorHandleFactory);
1334 return AsymmetricNonSquareAveragePooling3dTestCommon<armnn::DataType::QAsymmU8>(
1335 workloadFactory, memoryManager, tensorHandleFactory);
1343 return AsymmetricNonSquareAveragePooling3dTestCommon<armnn::DataType::QSymmS16>(
1344 workloadFactory, memoryManager, tensorHandleFactory);
1352 return AsymmetricNonSquareL2Pooling3dTestCommon<armnn::DataType::Float32>(
1353 workloadFactory, memoryManager, tensorHandleFactory);
1361 return AsymmetricNonSquareL2Pooling3dTestCommon<armnn::DataType::QAsymmU8>(
1362 workloadFactory, memoryManager, tensorHandleFactory);
1370 return AsymmetricNonSquareL2Pooling3dTestCommon<armnn::DataType::QSymmS16>(
1371 workloadFactory, memoryManager, tensorHandleFactory);
1382 return ComparePooling3dTestCommon<armnn::DataType::Float32>(
1383 workloadFactory, memoryManager, refWorkloadFactory, tensorHandleFactory, refTensorHandleFactory, poolingType);
1394 return ComparePooling3dTestCommon<armnn::DataType::QAsymmU8>(
1395 workloadFactory, memoryManager, refWorkloadFactory, tensorHandleFactory, refTensorHandleFactory,
1396 poolingType, 0.1f, 128);
1407 return ComparePooling3dTestCommon<armnn::DataType::QSymmS16>(
1408 workloadFactory, memoryManager, refWorkloadFactory, tensorHandleFactory, refTensorHandleFactory, poolingType);
unsigned int GetNumElements() const
Function that calculates the tensor elements by multiplying all dimension size which are Specified...
PoolingAlgorithm m_PoolType
The pooling algorithm to use (Max. Average, L2).
virtual const BackendId & GetBackendId() const =0
LayerTestResult< uint8_t, 5 > AsymmetricNonSquareMaxPooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
unsigned int GetWidthIndex() const
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
const TensorShape & GetShape() const
uint32_t m_PoolWidth
Pooling width value.
LayerTestResult< int16_t, 5 > AsymmetricNonSquareL2Pooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
uint32_t m_PoolDepth
Pooling depth value.
LayerTestResult< int16_t, 5 > SimpleAveragePooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout dataLayout)
LayerTestResult< int16_t, 5 > IgnorePaddingSimpleL2Pooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 5 > AsymmetricNonSquareMaxPooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 5 > AsymmetricNonSquareAveragePooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 5 > ComparePooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, armnn::IWorkloadFactory &refWorkloadFactory, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::ITensorHandleFactory &refTensorHandleFactory, armnn::PoolingAlgorithm poolingType)
The padding fields don't count and are ignored.
LayerTestResult< int16_t, 5 > SimpleMaxPooling3dSize2x2x2Stride1x1x1Int16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
bool IsPooling3dSupported(const TensorInfo &input, const TensorInfo &output, const Pooling3dDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional())
LayerTestResult< float, 5 > IgnorePaddingSimpleMaxPooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
uint32_t m_PadRight
Padding right value in the width dimension.
unsigned int GetDepthIndex() const
LayerTestResult< float, 5 > ComparePooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, armnn::IWorkloadFactory &refWorkloadFactory, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::ITensorHandleFactory &refTensorHandleFactory, armnn::PoolingAlgorithm poolingType)
DataLayout m_DataLayout
The data layout to be used (NCDHW, NDHWC).
LayerTestResult< uint8_t, 5 > SimpleMaxPooling3dSize2x2x2Stride1x1x1Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void IgnoreUnused(Ts &&...)
uint32_t m_PadFront
Padding front value in the depth dimension.
uint32_t m_PoolHeight
Pooling height value.
LayerDescriptor m_Parameters
LayerTestResult< uint8_t, 5 > LargeTensorsAveragePooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
unsigned int GetHeightIndex() const
LayerTestResult< uint8_t, 5 > IgnorePaddingSimpleL2Pooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 5 > AsymmetricNonSquareAveragePooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void Permute(const armnn::TensorShape &dstShape, const armnn::PermutationVector &mappings, const void *src, void *dst, size_t dataTypeSize)
LayerTestResult< int16_t, 5 > IgnorePaddingSimpleMaxPooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
uint32_t m_PadBack
Padding back value in the depth dimension.
LayerTestResult< float, 5 > SimpleL2Pooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout dataLayout)
LayerTestResult< uint8_t, 5 > IgnorePaddingSimpleAveragePooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...
LayerTestResult< float, 5 > SimpleMaxPooling3dSize2x2x2Stride1x1x1Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
OutputShapeRounding m_OutputShapeRounding
The rounding method for the output shape. (Floor, Ceiling).
uint32_t m_PadBottom
Padding bottom value in the height dimension.
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
void SetQuantizationScale(float scale)
LayerTestResult< uint8_t, 5 > AsymmetricNonSquareAveragePooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 5 > IgnorePaddingSimpleL2Pooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 5 > AsymmetricNonSquareL2Pooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 5 > SimpleAveragePooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout dataLayout)
LayerTestResult< uint8_t, 5 > IgnorePaddingSimpleMaxPooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 5 > SimpleMaxPooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout dataLayout)
A Pooling3dDescriptor for the Pooling3dLayer.
uint32_t m_StrideZ
Stride value when proceeding through input for the depth dimension.
LayerTestResult< int16_t, 5 > SimpleMaxPooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout dataLayout)
LayerTestResult< uint8_t, 5 > ComparePooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, armnn::IWorkloadFactory &refWorkloadFactory, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::ITensorHandleFactory &refTensorHandleFactory, armnn::PoolingAlgorithm poolingType)
uint32_t m_PadLeft
Padding left value in the width dimension.
The padding fields count, but are ignored.
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
LayerTestResult< float, 5 > LargeTensorsAveragePooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
uint32_t m_PadTop
Padding top value in the height dimension.
LayerTestResult< int16_t, 5 > IgnorePaddingSimpleAveragePooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 5 > LargeTensorsAveragePooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 5 > SimpleL2Pooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout dataLayout)
LayerTestResult< float, 5 > IgnorePaddingSimpleAveragePooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
std::enable_if_t< std::is_unsigned< Source >::value &&std::is_unsigned< Dest >::value, Dest > numeric_cast(Source source)
armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)
LayerTestResult< uint8_t, 5 > SimpleL2Pooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout dataLayout)
Contains information about TensorInfos of a layer.
void SetQuantizationOffset(int32_t offset)
LayerTestResult< float, 5 > SimpleMaxPooling3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout dataLayout)
LayerSupportHandle GetILayerSupportByBackendId(const armnn::BackendId &backend)
Convenience function to retrieve the ILayerSupportHandle for a backend.
uint32_t m_StrideX
Stride value when proceeding through input for the width dimension.
LayerTestResult< uint8_t, 5 > SimpleAveragePooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout dataLayout)
LayerTestResult< uint8_t, 5 > AsymmetricNonSquareL2Pooling3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
PaddingMethod m_PaddingMethod
The padding method to be used. (Exclude, IgnoreValue).
LayerTestResult< int16_t, 5 > AsymmetricNonSquareMaxPooling3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
unsigned int GetChannelsIndex() const
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0
unsigned int GetNumElements() const