31 #include <doctest/doctest.h> 38 TEST_CASE(
"RefAbsEndToEndTestFloat32")
40 std::vector<float> expectedOutput =
42 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
43 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
46 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
51 TEST_CASE(
"RefAbsEndToEndTestUint8")
54 std::vector<float> expectedOutput =
56 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
57 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
60 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
65 TEST_CASE(
"RefAbsEndToEndTestInt16")
68 std::vector<float> expectedOutput =
70 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
71 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
74 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
80 TEST_CASE(
"ConstantUsage_Ref_Float32")
82 CHECK(ConstantUsageFloat32Test(defaultBackends));
85 TEST_CASE(
"ConstantUsage_Ref_Uint8")
87 CHECK(ConstantUsageUint8Test(defaultBackends));
90 TEST_CASE(
"Unsigned8")
92 using namespace armnn;
124 auto error = runtime->LoadNetwork(netId, std::move(optNet));
128 std::vector<uint8_t> inputData
132 std::vector<uint8_t> outputData(5);
140 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
144 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
147 CHECK(outputData[0] == 0);
148 CHECK(outputData[1] == 0);
149 CHECK(outputData[2] == 0);
150 CHECK(outputData[3] == 255);
151 CHECK(outputData[4] == 0);
154 TEST_CASE(
"TrivialAdd")
158 using namespace armnn;
187 runtime->LoadNetwork(netId, std::move(optNet));
190 std::vector<float> input1Data
192 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
194 std::vector<float> input2Data
196 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
198 std::vector<float> outputData(12);
207 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
211 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
214 CHECK(outputData[0] == 101);
215 CHECK(outputData[1] == 202);
216 CHECK(outputData[2] == 303);
217 CHECK(outputData[3] == 404);
218 CHECK(outputData[4] == 505);
219 CHECK(outputData[5] == 606);
220 CHECK(outputData[6] == 707);
221 CHECK(outputData[7] == 808);
222 CHECK(outputData[8] == 909);
223 CHECK(outputData[9] == 1010);
224 CHECK(outputData[10] == 1111);
225 CHECK(outputData[11] == 1212);
228 TEST_CASE(
"MultipleOutputs")
230 using namespace armnn;
244 activation1Descriptor.
m_A = 1.f;
245 activation1Descriptor.
m_B = -1.f;
251 activation2Descriptor.
m_A = 6.0f;
257 activation3Descriptor.
m_A = 5.0f;
258 activation3Descriptor.
m_B = 2.0f;
285 runtime->LoadNetwork(netId, std::move(optNet));
288 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 };
290 std::vector<float> output1Data(inputData.size());
291 std::vector<float> output2Data(inputData.size());
292 std::vector<float> output3Data(inputData.size());
300 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
301 {1,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
302 {2,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
306 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
309 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 }));
310 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 }));
311 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 }));
314 TEST_CASE(
"TrivialMin")
316 using namespace armnn;
345 runtime->LoadNetwork(netId, std::move(optNet));
348 std::vector<float> input1Data
350 1.0f, 2.0f, 3.0f, 4.0f
352 std::vector<float> input2Data
354 2.0f, 1.0f, 5.0f, 2.0f
356 std::vector<float> outputData(4);
365 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
369 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
372 CHECK(outputData[0] == 1);
373 CHECK(outputData[1] == 1);
374 CHECK(outputData[2] == 3);
375 CHECK(outputData[3] == 2);
378 TEST_CASE(
"RefEqualSimpleEndToEndTest")
380 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
381 0, 0, 0, 0, 1, 1, 1, 1 });
383 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
388 TEST_CASE(
"RefGreaterSimpleEndToEndTest")
390 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
391 0, 0, 0, 0, 0, 0, 0, 0 });
393 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
398 TEST_CASE(
"RefEqualSimpleEndToEndUint8Test")
400 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
401 0, 0, 0, 0, 1, 1, 1, 1 });
403 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
408 TEST_CASE(
"RefGreaterSimpleEndToEndUint8Test")
410 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
411 0, 0, 0, 0, 0, 0, 0, 0 });
413 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
418 TEST_CASE(
"RefEqualBroadcastEndToEndTest")
420 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
423 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
428 TEST_CASE(
"RefGreaterBroadcastEndToEndTest")
430 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
433 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
438 TEST_CASE(
"RefEqualBroadcastEndToEndUint8Test")
440 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
443 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
448 TEST_CASE(
"RefGreaterBroadcastEndToEndUint8Test")
450 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
453 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
458 TEST_CASE(
"RefBatchToSpaceNdEndToEndFloat32NHWCTest")
463 TEST_CASE(
"RefBatchToSpaceNdEndToEndUint8NHWCTest")
468 TEST_CASE(
"RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
473 TEST_CASE(
"RefBatchToSpaceNdEndToEndFloat32NCHWTest")
478 TEST_CASE(
"RefBatchToSpaceNdEndToEndUint8NCHWTest")
483 TEST_CASE(
"RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
488 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
493 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
498 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
503 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
508 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
513 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
518 TEST_CASE(
"RefConcatEndToEndDim0Test")
520 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
523 TEST_CASE(
"RefConcatEndToEndDim0Uint8Test")
525 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
528 TEST_CASE(
"RefConcatEndToEndDim1Test")
530 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
533 TEST_CASE(
"RefConcatEndToEndDim1Uint8Test")
535 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
538 TEST_CASE(
"RefConcatEndToEndDim2Test")
540 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
543 TEST_CASE(
"RefConcatEndToEndDim2Uint8Test")
545 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
548 TEST_CASE(
"RefConcatEndToEndDim3Test")
550 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
553 TEST_CASE(
"RefConcatEndToEndDim3Uint8Test")
555 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
558 TEST_CASE(
"RefEluEndToEndTestFloat32")
560 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
563 TEST_CASE(
"RefEluEndToEndTestFloat16")
565 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
568 TEST_CASE(
"RefEluEndToEndTestBFloat16")
570 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
573 TEST_CASE(
"RefEluEndToEndTestQAsymmS8")
575 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
578 TEST_CASE(
"RefEluEndToEndTestQAsymmU8")
580 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
583 TEST_CASE(
"RefEluEndToEndTestQSymmS16")
585 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
588 TEST_CASE(
"RefFillEndToEndTest")
590 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
593 TEST_CASE(
"RefFillEndToEndTestFloat16")
595 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
598 TEST_CASE(
"RefFillEndToEndTestInt32")
600 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
603 TEST_CASE(
"RefFullyConnectedEndToEndTestFloat32")
605 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
608 TEST_CASE(
"RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
610 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends,
true,
true);
613 TEST_CASE(
"RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
615 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends,
true,
false);
618 TEST_CASE(
"RefGatherFloatTest")
620 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
623 TEST_CASE(
"RefGatherUint8Test")
625 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
628 TEST_CASE(
"RefGatherInt16Test")
630 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
633 TEST_CASE(
"RefGatherMultiDimFloatTest")
635 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
638 TEST_CASE(
"RefGatherMultiDimUint8Test")
640 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
643 TEST_CASE(
"RefGatherMultiDimInt16Test")
645 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
649 TEST_CASE(
"DephtToSpaceEndToEndNchwFloat32")
654 TEST_CASE(
"DephtToSpaceEndToEndNchwFloat16")
659 TEST_CASE(
"DephtToSpaceEndToEndNchwUint8")
664 TEST_CASE(
"DephtToSpaceEndToEndNchwInt16")
669 TEST_CASE(
"DephtToSpaceEndToEndNhwcFloat32")
674 TEST_CASE(
"DephtToSpaceEndToEndNhwcFloat16")
679 TEST_CASE(
"DephtToSpaceEndToEndNhwcUint8")
684 TEST_CASE(
"DephtToSpaceEndToEndNhwcInt16")
690 TEST_CASE(
"DequantizeEndToEndSimpleTest")
692 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
695 TEST_CASE(
"DequantizeEndToEndOffsetTest")
697 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
700 TEST_CASE(
"DequantizeEndToEndSimpleInt16Test")
702 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
705 TEST_CASE(
"DequantizeEndToEndOffsetInt16Test")
707 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
710 TEST_CASE(
"RefDetectionPostProcessRegularNmsTest")
712 std::vector<float> boxEncodings({
713 0.0f, 0.0f, 0.0f, 0.0f,
714 0.0f, 1.0f, 0.0f, 0.0f,
715 0.0f, -1.0f, 0.0f, 0.0f,
716 0.0f, 0.0f, 0.0f, 0.0f,
717 0.0f, 1.0f, 0.0f, 0.0f,
718 0.0f, 0.0f, 0.0f, 0.0f
720 std::vector<float> scores({
728 std::vector<float> anchors({
729 0.5f, 0.5f, 1.0f, 1.0f,
730 0.5f, 0.5f, 1.0f, 1.0f,
731 0.5f, 0.5f, 1.0f, 1.0f,
732 0.5f, 10.5f, 1.0f, 1.0f,
733 0.5f, 10.5f, 1.0f, 1.0f,
734 0.5f, 100.5f, 1.0f, 1.0f
736 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
747 TEST_CASE(
"RefDetectionPostProcessRegularNmsUint8Test")
754 boxEncodingsInfo.SetQuantizationOffset(1);
755 scoresInfo.SetQuantizationScale(0.01f);
756 scoresInfo.SetQuantizationOffset(0);
757 anchorsInfo.SetQuantizationScale(0.5f);
758 anchorsInfo.SetQuantizationOffset(0);
760 std::vector<float> boxEncodings({
761 0.0f, 0.0f, 0.0f, 0.0f,
762 0.0f, 1.0f, 0.0f, 0.0f,
763 0.0f, -1.0f, 0.0f, 0.0f,
764 0.0f, 0.0f, 0.0f, 0.0f,
765 0.0f, 1.0f, 0.0f, 0.0f,
766 0.0f, 0.0f, 0.0f, 0.0f
768 std::vector<float> scores({
776 std::vector<float> anchors({
777 0.5f, 0.5f, 1.0f, 1.0f,
778 0.5f, 0.5f, 1.0f, 1.0f,
779 0.5f, 0.5f, 1.0f, 1.0f,
780 0.5f, 10.5f, 1.0f, 1.0f,
781 0.5f, 10.5f, 1.0f, 1.0f,
782 0.5f, 100.5f, 1.0f, 1.0f
785 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
786 std::vector<uint8_t> qScores(scores.size(), 0);
787 std::vector<uint8_t> qAnchors(anchors.size(), 0);
788 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
789 QuantizeData(qScores.data(), scores.data(), scoresInfo);
790 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
791 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
793 1.0f, 1, 0.01f, 0, 0.5f, 0);
796 TEST_CASE(
"RefDetectionPostProcessFastNmsTest")
798 std::vector<float> boxEncodings({
799 0.0f, 0.0f, 0.0f, 0.0f,
800 0.0f, 1.0f, 0.0f, 0.0f,
801 0.0f, -1.0f, 0.0f, 0.0f,
802 0.0f, 0.0f, 0.0f, 0.0f,
803 0.0f, 1.0f, 0.0f, 0.0f,
804 0.0f, 0.0f, 0.0f, 0.0f
806 std::vector<float> scores({
814 std::vector<float> anchors({
815 0.5f, 0.5f, 1.0f, 1.0f,
816 0.5f, 0.5f, 1.0f, 1.0f,
817 0.5f, 0.5f, 1.0f, 1.0f,
818 0.5f, 10.5f, 1.0f, 1.0f,
819 0.5f, 10.5f, 1.0f, 1.0f,
820 0.5f, 100.5f, 1.0f, 1.0f
822 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
825 TEST_CASE(
"RefDetectionPostProcessFastNmsUint8Test")
832 boxEncodingsInfo.SetQuantizationOffset(1);
833 scoresInfo.SetQuantizationScale(0.01f);
834 scoresInfo.SetQuantizationOffset(0);
835 anchorsInfo.SetQuantizationScale(0.5f);
836 anchorsInfo.SetQuantizationOffset(0);
838 std::vector<float> boxEncodings({
839 0.0f, 0.0f, 0.0f, 0.0f,
840 0.0f, 1.0f, 0.0f, 0.0f,
841 0.0f, -1.0f, 0.0f, 0.0f,
842 0.0f, 0.0f, 0.0f, 0.0f,
843 0.0f, 1.0f, 0.0f, 0.0f,
844 0.0f, 0.0f, 0.0f, 0.0f
846 std::vector<float> scores({
854 std::vector<float> anchors({
855 0.5f, 0.5f, 1.0f, 1.0f,
856 0.5f, 0.5f, 1.0f, 1.0f,
857 0.5f, 0.5f, 1.0f, 1.0f,
858 0.5f, 10.5f, 1.0f, 1.0f,
859 0.5f, 10.5f, 1.0f, 1.0f,
860 0.5f, 100.5f, 1.0f, 1.0f
863 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
864 std::vector<uint8_t> qScores(scores.size(), 0);
865 std::vector<uint8_t> qAnchors(anchors.size(), 0);
866 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
867 QuantizeData(qScores.data(), scores.data(), scoresInfo);
868 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
869 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
871 1.0f, 1, 0.01f, 0, 0.5f, 0);
875 TEST_CASE(
"RefHardSwishEndToEndTestFloat32")
877 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
880 TEST_CASE(
"RefHardSwishEndToEndTestFloat16")
882 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
885 TEST_CASE(
"RefHardSwishEndToEndTestBFloat16")
887 HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
890 TEST_CASE(
"RefHardSwishEndToEndTestQAsymmS8")
892 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
895 TEST_CASE(
"RefHardSwishEndToEndTestQAsymmU8")
897 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
900 TEST_CASE(
"RefHardSwishEndToEndTestQSymmS16")
902 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
906 TEST_CASE(
"RefLogSoftmaxEndToEndTest")
911 TEST_CASE(
"RefPreluEndToEndTestFloat32")
913 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
916 TEST_CASE(
"RefPreluEndToEndTestUint8")
918 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
921 TEST_CASE(
"RefPreluEndToEndTestQSymm16")
923 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
926 TEST_CASE(
"RefSpaceToDepthNhwcEndToEndTest1")
931 TEST_CASE(
"RefSpaceToDepthNchwEndToEndTest1")
936 TEST_CASE(
"RefSpaceToDepthNhwcEndToEndTest2")
941 TEST_CASE(
"RefSpaceToDepthNchwEndToEndTest2")
946 TEST_CASE(
"RefSplitter1dEndToEndTest")
948 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
951 TEST_CASE(
"RefSplitter1dEndToEndUint8Test")
953 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
956 TEST_CASE(
"RefSplitter2dDim0EndToEndTest")
958 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
961 TEST_CASE(
"RefSplitter2dDim1EndToEndTest")
963 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
966 TEST_CASE(
"RefSplitter2dDim0EndToEndUint8Test")
968 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
971 TEST_CASE(
"RefSplitter2dDim1EndToEndUint8Test")
973 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
976 TEST_CASE(
"RefSplitter3dDim0EndToEndTest")
978 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
981 TEST_CASE(
"RefSplitter3dDim1EndToEndTest")
983 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
986 TEST_CASE(
"RefSplitter3dDim2EndToEndTest")
988 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
991 TEST_CASE(
"RefSplitter3dDim0EndToEndUint8Test")
993 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
996 TEST_CASE(
"RefSplitter3dDim1EndToEndUint8Test")
998 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1001 TEST_CASE(
"RefSplitter3dDim2EndToEndUint8Test")
1003 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1006 TEST_CASE(
"RefSplitter4dDim0EndToEndTest")
1008 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1011 TEST_CASE(
"RefSplitter4dDim1EndToEndTest")
1013 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1016 TEST_CASE(
"RefSplitter4dDim2EndToEndTest")
1018 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1021 TEST_CASE(
"RefSplitter4dDim3EndToEndTest")
1023 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1026 TEST_CASE(
"RefSplitter4dDim0EndToEndUint8Test")
1028 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1031 TEST_CASE(
"RefSplitter4dDim1EndToEndUint8Test")
1033 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1036 TEST_CASE(
"RefSplitter4dDim2EndToEndUint8Test")
1038 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1041 TEST_CASE(
"RefSplitter4dDim3EndToEndUint8Test")
1043 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1047 TEST_CASE(
"RefTransposeConvolution2dEndToEndFloatNchwTest")
1049 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1053 TEST_CASE(
"RefTransposeConvolution2dEndToEndUint8NchwTest")
1055 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1059 TEST_CASE(
"RefTransposeConvolution2dEndToEndInt16NchwTest")
1061 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1065 TEST_CASE(
"RefTransposeConvolution2dEndToEndFloatNhwcTest")
1067 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1071 TEST_CASE(
"RefTransposeConvolution2dEndToEndUint8NhwcTest")
1073 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1077 TEST_CASE(
"RefTransposeConvolution2dEndToEndInt16NhwcTest")
1079 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1084 TEST_CASE(
"RefResizeBilinearEndToEndFloatNchwTest")
1089 TEST_CASE(
"RefResizeBilinearEndToEndUint8NchwTest")
1094 TEST_CASE(
"RefResizeBilinearEndToEndInt16NchwTest")
1099 TEST_CASE(
"RefResizeBilinearEndToEndFloatNhwcTest")
1104 TEST_CASE(
"RefResizeBilinearEndToEndUint8NhwcTest")
1109 TEST_CASE(
"RefResizeBilinearEndToEndInt16NhwcTest")
1115 TEST_CASE(
"RefResizeNearestNeighborEndToEndFloatNchwTest")
1120 TEST_CASE(
"RefResizeNearestNeighborEndToEndUint8NchwTest")
1125 TEST_CASE(
"RefResizeNearestNeighborEndToEndInt16NchwTest")
1130 TEST_CASE(
"RefResizeNearestNeighborEndToEndFloatNhwcTest")
1135 TEST_CASE(
"RefResizeNearestNeighborEndToEndUint8NhwcTest")
1140 TEST_CASE(
"RefResizeNearestNeighborEndToEndInt16NhwcTest")
1146 TEST_CASE(
"RefInstanceNormalizationNhwcEndToEndTest1")
1151 TEST_CASE(
"RefInstanceNormalizationNchwEndToEndTest1")
1156 TEST_CASE(
"RefInstanceNormalizationNhwcEndToEndTest2")
1161 TEST_CASE(
"RefInstanceNormalizationNchwEndToEndTest2")
1167 TEST_CASE(
"RefArgMaxSimpleTest")
1169 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1172 TEST_CASE(
"RefArgMaxSimpleUint8Test")
1174 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
1177 TEST_CASE(
"RefArgMinSimpleTest")
1179 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1182 TEST_CASE(
"RefArgMinSimpleUint8Test")
1184 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
1187 TEST_CASE(
"RefArgMaxAxis0Test")
1189 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1192 TEST_CASE(
"RefArgMaxAxis0Uint8Test")
1194 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1197 TEST_CASE(
"RefArgMinAxis0Test")
1199 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1202 TEST_CASE(
"RefArgMinAxis0Uint8Test")
1205 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1208 TEST_CASE(
"RefArgMaxAxis1Test")
1210 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1213 TEST_CASE(
"RefArgMaxAxis1Uint8Test")
1215 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1218 TEST_CASE(
"RefArgMinAxis1Test")
1220 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1223 TEST_CASE(
"RefArgMinAxis1Uint8Test")
1226 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1229 TEST_CASE(
"RefArgMaxAxis2Test")
1231 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1234 TEST_CASE(
"RefArgMaxAxis2Uint8Test")
1236 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1239 TEST_CASE(
"RefArgMinAxis2Test")
1241 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1244 TEST_CASE(
"RefArgMinAxis2Uint8Test")
1247 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1250 TEST_CASE(
"RefArgMaxAxis3Test")
1252 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1255 TEST_CASE(
"RefArgMaxAxis3Uint8Test")
1257 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1260 TEST_CASE(
"RefArgMinAxis3Test")
1262 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1265 TEST_CASE(
"RefArgMinAxis3Uint8Test")
1268 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1271 TEST_CASE(
"RefQLstmEndToEndTest")
1276 TEST_CASE(
"RefRankEndToEndTest")
1278 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1281 TEST_CASE(
"RefRankEndToEndTestFloat16")
1283 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1286 TEST_CASE(
"RefRankEndToEndTestInt32")
1288 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1291 TEST_CASE(
"RefRankEndToEndTestQAsymmS8")
1293 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1296 TEST_CASE(
"RefRankEndToEndTestQSymmS16")
1298 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1301 TEST_CASE(
"RefRankEndToEndTestQSymmS8")
1303 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1306 #if !defined(__ANDROID__) 1308 TEST_CASE(
"RefImportNonAlignedPointerTest")
1310 ImportNonAlignedInputPointerTest(defaultBackends);
1313 TEST_CASE(
"RefExportNonAlignedPointerTest")
1315 ExportNonAlignedOutputPointerTest(defaultBackends);
1318 TEST_CASE(
"RefImportAlignedPointerTest")
1320 ImportAlignedPointerTest(defaultBackends);
1323 TEST_CASE(
"RefImportOnlyWorkload")
1325 ImportOnlyWorkload(defaultBackends);
1328 TEST_CASE(
"RefExportOnlyWorkload")
1330 ExportOnlyWorkload(defaultBackends);
1333 TEST_CASE(
"RefImportAndExportWorkload")
1335 ImportAndExportWorkload(defaultBackends);
1338 TEST_CASE(
"RefExportOutputWithSeveralOutputSlotConnectionsTest")
1340 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1343 TEST_CASE(
"RefStridedSliceInvalidSliceEndToEndTest")
1345 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1348 TEST_CASE(
"RefThreadSafeFP32StridedSlicedEndToEndTest")
1350 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
1353 TEST_CASE(
"RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
1355 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1358 TEST_CASE(
"RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
1360 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.
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)