33 #include <doctest/doctest.h> 40 TEST_CASE(
"RefAbsEndToEndTestFloat32")
42 std::vector<float> expectedOutput =
44 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
45 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
48 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
53 TEST_CASE(
"RefAbsEndToEndTestUint8")
56 std::vector<float> expectedOutput =
58 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
59 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
62 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
67 TEST_CASE(
"RefAbsEndToEndTestInt16")
70 std::vector<float> expectedOutput =
72 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
73 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
76 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
82 TEST_CASE(
"ConstantUsage_Ref_Float32")
84 CHECK(ConstantUsageFloat32Test(defaultBackends));
87 TEST_CASE(
"ConstantUsage_Ref_Uint8")
89 CHECK(ConstantUsageUint8Test(defaultBackends));
92 TEST_CASE(
"Unsigned8")
94 using namespace armnn;
126 auto error = runtime->LoadNetwork(netId, std::move(optNet));
130 std::vector<uint8_t> inputData
134 std::vector<uint8_t> outputData(5);
136 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 0);
144 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
148 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
151 CHECK(outputData[0] == 0);
152 CHECK(outputData[1] == 0);
153 CHECK(outputData[2] == 0);
154 CHECK(outputData[3] == 255);
155 CHECK(outputData[4] == 0);
158 TEST_CASE(
"TrivialAdd")
162 using namespace armnn;
191 runtime->LoadNetwork(netId, std::move(optNet));
194 std::vector<float> input1Data
196 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
198 std::vector<float> input2Data
200 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
202 std::vector<float> outputData(12);
204 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
213 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
217 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
220 CHECK(outputData[0] == 101);
221 CHECK(outputData[1] == 202);
222 CHECK(outputData[2] == 303);
223 CHECK(outputData[3] == 404);
224 CHECK(outputData[4] == 505);
225 CHECK(outputData[5] == 606);
226 CHECK(outputData[6] == 707);
227 CHECK(outputData[7] == 808);
228 CHECK(outputData[8] == 909);
229 CHECK(outputData[9] == 1010);
230 CHECK(outputData[10] == 1111);
231 CHECK(outputData[11] == 1212);
234 TEST_CASE(
"MultipleOutputs")
236 using namespace armnn;
250 activation1Descriptor.
m_A = 1.f;
251 activation1Descriptor.
m_B = -1.f;
257 activation2Descriptor.
m_A = 6.0f;
263 activation3Descriptor.
m_A = 5.0f;
264 activation3Descriptor.
m_B = 2.0f;
291 runtime->LoadNetwork(netId, std::move(optNet));
294 const std::vector<float> inputData{ 3.f, 5.f, 2.f, 3.f, 7.f, 0.f, -2.f, -1.f, 3.f, 3.f };
296 std::vector<float> output1Data(inputData.size());
297 std::vector<float> output2Data(inputData.size());
298 std::vector<float> output3Data(inputData.size());
300 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
308 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
309 {1,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
310 {2,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
314 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
317 CHECK(output1Data == std::vector<float>({ 1.f, 1.f, 1.f, 1.f, 1.f, 0.f, -1.f, -1.f, 1.f, 1.f }));
318 CHECK(output2Data == std::vector<float>({ 3.f, 5.f, 2.f, 3.f, 6.f, 0.f, 0.f, 0.f, 3.f, 3.f }));
319 CHECK(output3Data == std::vector<float>({ 3.f, 5.f, 2.f, 3.f, 5.f, 2.f, 2.f, 2.f, 3.f, 3.f }));
322 TEST_CASE(
"TrivialMin")
324 using namespace armnn;
353 runtime->LoadNetwork(netId, std::move(optNet));
356 std::vector<float> input1Data
358 1.0f, 2.0f, 3.0f, 4.0f
360 std::vector<float> input2Data
362 2.0f, 1.0f, 5.0f, 2.0f
364 std::vector<float> outputData(4);
366 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
375 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
379 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
382 CHECK(outputData[0] == 1);
383 CHECK(outputData[1] == 1);
384 CHECK(outputData[2] == 3);
385 CHECK(outputData[3] == 2);
388 TEST_CASE(
"RefEqualSimpleEndToEndTest")
390 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
391 0, 0, 0, 0, 1, 1, 1, 1 });
393 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
398 TEST_CASE(
"RefGreaterSimpleEndToEndTest")
400 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
401 0, 0, 0, 0, 0, 0, 0, 0 });
403 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
408 TEST_CASE(
"RefEqualSimpleEndToEndUint8Test")
410 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
411 0, 0, 0, 0, 1, 1, 1, 1 });
413 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
418 TEST_CASE(
"RefGreaterSimpleEndToEndUint8Test")
420 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
421 0, 0, 0, 0, 0, 0, 0, 0 });
423 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
428 TEST_CASE(
"RefEqualBroadcastEndToEndTest")
430 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
433 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
438 TEST_CASE(
"RefGreaterBroadcastEndToEndTest")
440 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
443 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
448 TEST_CASE(
"RefEqualBroadcastEndToEndUint8Test")
450 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
453 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
458 TEST_CASE(
"RefGreaterBroadcastEndToEndUint8Test")
460 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
463 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
468 TEST_CASE(
"RefBatchToSpaceNdEndToEndFloat32NHWCTest")
473 TEST_CASE(
"RefBatchToSpaceNdEndToEndUint8NHWCTest")
478 TEST_CASE(
"RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
483 TEST_CASE(
"RefBatchToSpaceNdEndToEndFloat32NCHWTest")
488 TEST_CASE(
"RefBatchToSpaceNdEndToEndUint8NCHWTest")
493 TEST_CASE(
"RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
498 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
503 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
508 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
513 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
518 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
523 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
528 TEST_CASE(
"RefChannelShuffleFloatTest")
530 ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends);
533 TEST_CASE(
"RefChannelShuffleUint8Test")
535 ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
538 TEST_CASE(
"RefConcatEndToEndDim0Test")
540 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
543 TEST_CASE(
"RefConcatEndToEndDim0Uint8Test")
545 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
548 TEST_CASE(
"RefConcatEndToEndDim1Test")
550 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
553 TEST_CASE(
"RefConcatEndToEndDim1Uint8Test")
555 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
558 TEST_CASE(
"RefConcatEndToEndDim2Test")
560 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
563 TEST_CASE(
"RefConcatEndToEndDim2Uint8Test")
565 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
568 TEST_CASE(
"RefConcatEndToEndDim3Test")
570 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
573 TEST_CASE(
"RefConcatEndToEndDim3Uint8Test")
575 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
578 TEST_CASE(
"RefConvolution3dFloat32Test")
580 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
584 TEST_CASE(
"RefConvolution3dNcdhwFloat32Test")
586 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
590 TEST_CASE(
"RefConvolution3dFloat16Test")
592 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
596 TEST_CASE(
"RefConvolution3dUint8Test")
598 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
602 TEST_CASE(
"RefConvolution3dInt8Test")
604 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
608 TEST_CASE(
"RefEluEndToEndTestFloat32")
610 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
613 TEST_CASE(
"RefEluEndToEndTestFloat16")
615 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
618 TEST_CASE(
"RefEluEndToEndTestBFloat16")
620 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
623 TEST_CASE(
"RefEluEndToEndTestQAsymmS8")
625 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
628 TEST_CASE(
"RefEluEndToEndTestQAsymmU8")
630 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
633 TEST_CASE(
"RefEluEndToEndTestQSymmS16")
635 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
638 TEST_CASE(
"RefFillEndToEndTest")
640 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
643 TEST_CASE(
"RefFillEndToEndTestFloat16")
645 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
648 TEST_CASE(
"RefFillEndToEndTestInt32")
650 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
653 TEST_CASE(
"RefFullyConnectedEndToEndTestFloat32")
655 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
658 TEST_CASE(
"RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
660 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends,
true,
true);
663 TEST_CASE(
"RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
665 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends,
true,
false);
668 TEST_CASE(
"RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
670 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
false,
true,
true,
true,
false);
673 TEST_CASE(
"RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
675 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
true,
true,
false,
true,
true);
678 TEST_CASE(
"RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
680 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
true,
true,
true,
false,
true);
683 TEST_CASE(
"RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
685 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
false,
true,
false,
false,
true);
688 TEST_CASE(
"RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
690 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
true,
false,
false,
true,
true);
693 TEST_CASE(
"RefGatherFloatTest")
695 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
698 TEST_CASE(
"RefGatherUint8Test")
700 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
703 TEST_CASE(
"RefGatherInt16Test")
705 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
708 TEST_CASE(
"RefGatherMultiDimFloatTest")
710 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
713 TEST_CASE(
"RefGatherMultiDimUint8Test")
715 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
718 TEST_CASE(
"RefGatherMultiDimInt16Test")
720 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
724 TEST_CASE(
"DephtToSpaceEndToEndNchwFloat32")
729 TEST_CASE(
"DephtToSpaceEndToEndNchwFloat16")
734 TEST_CASE(
"DephtToSpaceEndToEndNchwUint8")
739 TEST_CASE(
"DephtToSpaceEndToEndNchwInt16")
744 TEST_CASE(
"DephtToSpaceEndToEndNhwcFloat32")
749 TEST_CASE(
"DephtToSpaceEndToEndNhwcFloat16")
754 TEST_CASE(
"DephtToSpaceEndToEndNhwcUint8")
759 TEST_CASE(
"DephtToSpaceEndToEndNhwcInt16")
765 TEST_CASE(
"DequantizeEndToEndSimpleTest")
767 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
770 TEST_CASE(
"DequantizeEndToEndOffsetTest")
772 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
775 TEST_CASE(
"DequantizeEndToEndSimpleInt16Test")
777 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
780 TEST_CASE(
"DequantizeEndToEndOffsetInt16Test")
782 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
785 TEST_CASE(
"RefDetectionPostProcessRegularNmsTest")
787 std::vector<float> boxEncodings({
788 0.0f, 0.0f, 0.0f, 0.0f,
789 0.0f, 1.0f, 0.0f, 0.0f,
790 0.0f, -1.0f, 0.0f, 0.0f,
791 0.0f, 0.0f, 0.0f, 0.0f,
792 0.0f, 1.0f, 0.0f, 0.0f,
793 0.0f, 0.0f, 0.0f, 0.0f
795 std::vector<float> scores({
803 std::vector<float> anchors({
804 0.5f, 0.5f, 1.0f, 1.0f,
805 0.5f, 0.5f, 1.0f, 1.0f,
806 0.5f, 0.5f, 1.0f, 1.0f,
807 0.5f, 10.5f, 1.0f, 1.0f,
808 0.5f, 10.5f, 1.0f, 1.0f,
809 0.5f, 100.5f, 1.0f, 1.0f
811 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
822 TEST_CASE(
"RefDetectionPostProcessRegularNmsUint8Test")
829 boxEncodingsInfo.SetQuantizationOffset(1);
830 scoresInfo.SetQuantizationScale(0.01f);
831 scoresInfo.SetQuantizationOffset(0);
832 anchorsInfo.SetQuantizationScale(0.5f);
833 anchorsInfo.SetQuantizationOffset(0);
835 std::vector<float> boxEncodings({
836 0.0f, 0.0f, 0.0f, 0.0f,
837 0.0f, 1.0f, 0.0f, 0.0f,
838 0.0f, -1.0f, 0.0f, 0.0f,
839 0.0f, 0.0f, 0.0f, 0.0f,
840 0.0f, 1.0f, 0.0f, 0.0f,
841 0.0f, 0.0f, 0.0f, 0.0f
843 std::vector<float> scores({
851 std::vector<float> anchors({
852 0.5f, 0.5f, 1.0f, 1.0f,
853 0.5f, 0.5f, 1.0f, 1.0f,
854 0.5f, 0.5f, 1.0f, 1.0f,
855 0.5f, 10.5f, 1.0f, 1.0f,
856 0.5f, 10.5f, 1.0f, 1.0f,
857 0.5f, 100.5f, 1.0f, 1.0f
860 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
861 std::vector<uint8_t> qScores(scores.size(), 0);
862 std::vector<uint8_t> qAnchors(anchors.size(), 0);
863 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
864 QuantizeData(qScores.data(), scores.data(), scoresInfo);
865 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
866 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
868 1.0f, 1, 0.01f, 0, 0.5f, 0);
871 TEST_CASE(
"RefDetectionPostProcessFastNmsTest")
873 std::vector<float> boxEncodings({
874 0.0f, 0.0f, 0.0f, 0.0f,
875 0.0f, 1.0f, 0.0f, 0.0f,
876 0.0f, -1.0f, 0.0f, 0.0f,
877 0.0f, 0.0f, 0.0f, 0.0f,
878 0.0f, 1.0f, 0.0f, 0.0f,
879 0.0f, 0.0f, 0.0f, 0.0f
881 std::vector<float> scores({
889 std::vector<float> anchors({
890 0.5f, 0.5f, 1.0f, 1.0f,
891 0.5f, 0.5f, 1.0f, 1.0f,
892 0.5f, 0.5f, 1.0f, 1.0f,
893 0.5f, 10.5f, 1.0f, 1.0f,
894 0.5f, 10.5f, 1.0f, 1.0f,
895 0.5f, 100.5f, 1.0f, 1.0f
897 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
900 TEST_CASE(
"RefDetectionPostProcessFastNmsUint8Test")
907 boxEncodingsInfo.SetQuantizationOffset(1);
908 scoresInfo.SetQuantizationScale(0.01f);
909 scoresInfo.SetQuantizationOffset(0);
910 anchorsInfo.SetQuantizationScale(0.5f);
911 anchorsInfo.SetQuantizationOffset(0);
913 std::vector<float> boxEncodings({
914 0.0f, 0.0f, 0.0f, 0.0f,
915 0.0f, 1.0f, 0.0f, 0.0f,
916 0.0f, -1.0f, 0.0f, 0.0f,
917 0.0f, 0.0f, 0.0f, 0.0f,
918 0.0f, 1.0f, 0.0f, 0.0f,
919 0.0f, 0.0f, 0.0f, 0.0f
921 std::vector<float> scores({
929 std::vector<float> anchors({
930 0.5f, 0.5f, 1.0f, 1.0f,
931 0.5f, 0.5f, 1.0f, 1.0f,
932 0.5f, 0.5f, 1.0f, 1.0f,
933 0.5f, 10.5f, 1.0f, 1.0f,
934 0.5f, 10.5f, 1.0f, 1.0f,
935 0.5f, 100.5f, 1.0f, 1.0f
938 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
939 std::vector<uint8_t> qScores(scores.size(), 0);
940 std::vector<uint8_t> qAnchors(anchors.size(), 0);
941 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
942 QuantizeData(qScores.data(), scores.data(), scoresInfo);
943 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
944 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
946 1.0f, 1, 0.01f, 0, 0.5f, 0);
950 TEST_CASE(
"RefHardSwishEndToEndTestFloat32")
952 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
955 TEST_CASE(
"RefHardSwishEndToEndTestFloat16")
957 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
960 TEST_CASE(
"RefHardSwishEndToEndTestBFloat16")
962 HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
965 TEST_CASE(
"RefHardSwishEndToEndTestQAsymmS8")
967 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
970 TEST_CASE(
"RefHardSwishEndToEndTestQAsymmU8")
972 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
975 TEST_CASE(
"RefHardSwishEndToEndTestQSymmS16")
977 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
981 TEST_CASE(
"RefLogSoftmaxEndToEndTest")
986 TEST_CASE(
"RefPreluEndToEndTestFloat32")
988 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
991 TEST_CASE(
"RefPreluEndToEndTestUint8")
993 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
996 TEST_CASE(
"RefPreluEndToEndTestQSymm16")
998 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
1001 TEST_CASE(
"RefSpaceToDepthNhwcEndToEndTest1")
1006 TEST_CASE(
"RefSpaceToDepthNchwEndToEndTest1")
1011 TEST_CASE(
"RefSpaceToDepthNhwcEndToEndTest2")
1016 TEST_CASE(
"RefSpaceToDepthNchwEndToEndTest2")
1021 TEST_CASE(
"RefSplitter1dEndToEndTest")
1023 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
1026 TEST_CASE(
"RefSplitter1dEndToEndUint8Test")
1028 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1031 TEST_CASE(
"RefSplitter2dDim0EndToEndTest")
1033 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1036 TEST_CASE(
"RefSplitter2dDim1EndToEndTest")
1038 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1041 TEST_CASE(
"RefSplitter2dDim0EndToEndUint8Test")
1043 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1046 TEST_CASE(
"RefSplitter2dDim1EndToEndUint8Test")
1048 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1051 TEST_CASE(
"RefSplitter3dDim0EndToEndTest")
1053 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1056 TEST_CASE(
"RefSplitter3dDim1EndToEndTest")
1058 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1061 TEST_CASE(
"RefSplitter3dDim2EndToEndTest")
1063 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1066 TEST_CASE(
"RefSplitter3dDim0EndToEndUint8Test")
1068 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1071 TEST_CASE(
"RefSplitter3dDim1EndToEndUint8Test")
1073 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1076 TEST_CASE(
"RefSplitter3dDim2EndToEndUint8Test")
1078 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1081 TEST_CASE(
"RefSplitter4dDim0EndToEndTest")
1083 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1086 TEST_CASE(
"RefSplitter4dDim1EndToEndTest")
1088 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1091 TEST_CASE(
"RefSplitter4dDim2EndToEndTest")
1093 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1096 TEST_CASE(
"RefSplitter4dDim3EndToEndTest")
1098 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1101 TEST_CASE(
"RefSplitter4dDim0EndToEndUint8Test")
1103 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1106 TEST_CASE(
"RefSplitter4dDim1EndToEndUint8Test")
1108 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1111 TEST_CASE(
"RefSplitter4dDim2EndToEndUint8Test")
1113 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1116 TEST_CASE(
"RefSplitter4dDim3EndToEndUint8Test")
1118 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1122 TEST_CASE(
"RefTransposeConvolution2dEndToEndFloatNchwTest")
1124 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1128 TEST_CASE(
"RefTransposeConvolution2dEndToEndUint8NchwTest")
1130 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1134 TEST_CASE(
"RefTransposeConvolution2dEndToEndInt16NchwTest")
1136 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1140 TEST_CASE(
"RefTransposeConvolution2dEndToEndFloatNhwcTest")
1142 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1146 TEST_CASE(
"RefTransposeConvolution2dEndToEndUint8NhwcTest")
1148 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1152 TEST_CASE(
"RefTransposeConvolution2dEndToEndInt16NhwcTest")
1154 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1159 TEST_CASE(
"RefResizeBilinearEndToEndFloatNchwTest")
1164 TEST_CASE(
"RefResizeBilinearEndToEndUint8NchwTest")
1169 TEST_CASE(
"RefResizeBilinearEndToEndInt16NchwTest")
1174 TEST_CASE(
"RefResizeBilinearEndToEndFloatNhwcTest")
1179 TEST_CASE(
"RefResizeBilinearEndToEndUint8NhwcTest")
1184 TEST_CASE(
"RefResizeBilinearEndToEndInt16NhwcTest")
1190 TEST_CASE(
"RefResizeNearestNeighborEndToEndFloatNchwTest")
1195 TEST_CASE(
"RefResizeNearestNeighborEndToEndUint8NchwTest")
1200 TEST_CASE(
"RefResizeNearestNeighborEndToEndInt16NchwTest")
1205 TEST_CASE(
"RefResizeNearestNeighborEndToEndFloatNhwcTest")
1210 TEST_CASE(
"RefResizeNearestNeighborEndToEndUint8NhwcTest")
1215 TEST_CASE(
"RefResizeNearestNeighborEndToEndInt16NhwcTest")
1221 TEST_CASE(
"RefInstanceNormalizationNhwcEndToEndTest1")
1226 TEST_CASE(
"RefInstanceNormalizationNchwEndToEndTest1")
1231 TEST_CASE(
"RefInstanceNormalizationNhwcEndToEndTest2")
1236 TEST_CASE(
"RefInstanceNormalizationNchwEndToEndTest2")
1242 TEST_CASE(
"RefArgMaxSimpleTest")
1244 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1247 TEST_CASE(
"RefArgMaxSimpleUint8Test")
1249 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
1252 TEST_CASE(
"RefArgMinSimpleTest")
1254 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1257 TEST_CASE(
"RefArgMinSimpleUint8Test")
1259 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
1262 TEST_CASE(
"RefArgMaxAxis0Test")
1264 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1267 TEST_CASE(
"RefArgMaxAxis0Uint8Test")
1269 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1272 TEST_CASE(
"RefArgMinAxis0Test")
1274 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1277 TEST_CASE(
"RefArgMinAxis0Uint8Test")
1280 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1283 TEST_CASE(
"RefArgMaxAxis1Test")
1285 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1288 TEST_CASE(
"RefArgMaxAxis1Uint8Test")
1290 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1293 TEST_CASE(
"RefArgMinAxis1Test")
1295 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1298 TEST_CASE(
"RefArgMinAxis1Uint8Test")
1301 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1304 TEST_CASE(
"RefArgMaxAxis2Test")
1306 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1309 TEST_CASE(
"RefArgMaxAxis2Uint8Test")
1311 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1314 TEST_CASE(
"RefArgMinAxis2Test")
1316 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1319 TEST_CASE(
"RefArgMinAxis2Uint8Test")
1322 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1325 TEST_CASE(
"RefArgMaxAxis3Test")
1327 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1330 TEST_CASE(
"RefArgMaxAxis3Uint8Test")
1332 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1335 TEST_CASE(
"RefArgMinAxis3Test")
1337 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1340 TEST_CASE(
"RefArgMinAxis3Uint8Test")
1343 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1346 TEST_CASE(
"RefQLstmEndToEndTest")
1351 TEST_CASE(
"RefRankEndToEndTest")
1353 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1356 TEST_CASE(
"RefRankEndToEndTestFloat16")
1358 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1361 TEST_CASE(
"RefRankEndToEndTestInt32")
1363 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1366 TEST_CASE(
"RefRankEndToEndTestQAsymmS8")
1368 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1371 TEST_CASE(
"RefRankEndToEndTestQSymmS16")
1373 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1376 TEST_CASE(
"RefRankEndToEndTestQSymmS8")
1378 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1381 TEST_CASE(
"RefForceImportWithAlignedBuffersEndToEndTest")
1383 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1386 TEST_CASE(
"RefForceImportWithMisalignedInputBuffersEndToEndTest")
1388 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1391 TEST_CASE(
"RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1393 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1396 TEST_CASE(
"RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1398 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
1401 TEST_CASE(
"RefForceImportRepeatedInferencesEndToEndTest")
1403 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1406 TEST_CASE(
"RefForceImportRepeatedInferencesInvertedEndToEndTest")
1408 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1411 #if !defined(__ANDROID__) 1413 TEST_CASE(
"RefImportNonAlignedPointerTest")
1415 ImportNonAlignedInputPointerTest(defaultBackends);
1418 TEST_CASE(
"RefExportNonAlignedPointerTest")
1420 ExportNonAlignedOutputPointerTest(defaultBackends);
1423 TEST_CASE(
"RefImportAlignedPointerTest")
1425 ImportAlignedPointerTest(defaultBackends);
1428 TEST_CASE(
"RefImportOnlyWorkload")
1430 ImportOnlyWorkload(defaultBackends);
1433 TEST_CASE(
"RefExportOnlyWorkload")
1435 ExportOnlyWorkload(defaultBackends);
1438 TEST_CASE(
"RefImportAndExportWorkload")
1440 ImportAndExportWorkload(defaultBackends);
1443 TEST_CASE(
"RefExportOutputWithSeveralOutputSlotConnectionsTest")
1445 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1448 TEST_CASE(
"RefStridedSliceInvalidSliceEndToEndTest")
1450 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1453 TEST_CASE(
"RefThreadSafeFP32StridedSlicedEndToEndTest")
1455 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
1458 TEST_CASE(
"RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
1460 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1463 TEST_CASE(
"RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
1465 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
void SpaceToDepthNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
static IRuntimePtr Create(const CreationOptions &options)
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
CPU Execution: Reference C++ kernels.
void InstanceNormalizationNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
void QuantizeData(RawType *quant, const float *dequant, const armnn::TensorInfo &info)
void LogSoftmaxEndToEndTest(const std::vector< armnn::BackendId > &defaultBackends)
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
std::vector< std::pair< LayerBindingId, class ConstTensor > > InputTensors
void InstanceNormalizationNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
Copyright (c) 2021 ARM Limited and Contributors.
void QLstmEndToEnd(const std::vector< armnn::BackendId > &backends)
void SpaceToDepthNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
virtual void SetTensorInfo(const TensorInfo &tensorInfo)=0
void SpaceToDepthNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
A tensor defined by a TensorInfo (shape and data type) and a mutable backing store.
void SpaceToDepthNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
IOptimizedNetworkPtr Optimize(const INetwork &network, const std::vector< BackendId > &backendPreferences, const IDeviceSpec &deviceSpec, const OptimizerOptions &options=OptimizerOptions(), Optional< std::vector< std::string > &> messages=EmptyOptional())
Create an optimized version of the network.
int32_t GetQuantizationOffset() const
float GetQuantizationScale() const
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
std::vector< std::pair< LayerBindingId, class Tensor > > OutputTensors
std::unique_ptr< IOptimizedNetwork, void(*)(IOptimizedNetwork *network)> IOptimizedNetworkPtr
void SetQuantizationScale(float scale)
An ActivationDescriptor for the ActivationLayer.
min(a, max(b, input)) ReLu1 & ReLu6.
float m_A
Alpha upper bound value used by the activation functions. (BoundedReLu, Linear, TanH, Elu).
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
void SetConstant(const bool IsConstant=true)
Marks the data corresponding to this tensor info as constant.
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
void InstanceNormalizationNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
TEST_SUITE("RefEndToEnd")
void SetQuantizationOffset(int32_t offset)
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
virtual int Connect(IInputSlot &destination)=0
static INetworkPtr Create(NetworkOptions networkOptions={})
float m_B
Beta lower bound value used by the activation functions. (BoundedReLu, Linear, TanH).
A SoftmaxDescriptor for the SoftmaxLayer.
ActivationFunction m_Function
The activation function to use (Sigmoid, TanH, Linear, ReLu, BoundedReLu, SoftReLu, LeakyReLu, Abs, Sqrt, Square, Elu).
unsigned int GetNumElements() const
void InstanceNormalizationNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)