34 #include <doctest/doctest.h> 41 TEST_CASE(
"RefAbsEndToEndTestFloat32")
43 std::vector<float> expectedOutput =
45 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
46 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
49 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
54 TEST_CASE(
"RefAbsEndToEndTestUint8")
57 std::vector<float> expectedOutput =
59 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
60 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
63 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
68 TEST_CASE(
"RefAbsEndToEndTestInt16")
71 std::vector<float> expectedOutput =
73 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
74 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
77 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
83 TEST_CASE(
"ConstantUsage_Ref_Float32")
85 CHECK(ConstantUsageFloat32Test(defaultBackends));
88 TEST_CASE(
"ConstantUsage_Ref_Uint8")
90 CHECK(ConstantUsageUint8Test(defaultBackends));
93 TEST_CASE(
"Unsigned8")
95 using namespace armnn;
127 auto error = runtime->LoadNetwork(netId, std::move(optNet));
131 std::vector<uint8_t> inputData
135 std::vector<uint8_t> outputData(5);
137 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 0);
145 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
149 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
152 CHECK(outputData[0] == 0);
153 CHECK(outputData[1] == 0);
154 CHECK(outputData[2] == 0);
155 CHECK(outputData[3] == 255);
156 CHECK(outputData[4] == 0);
159 TEST_CASE(
"TrivialAdd")
163 using namespace armnn;
192 runtime->LoadNetwork(netId, std::move(optNet));
195 std::vector<float> input1Data
197 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
199 std::vector<float> input2Data
201 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
203 std::vector<float> outputData(12);
205 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
214 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
218 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
221 CHECK(outputData[0] == 101);
222 CHECK(outputData[1] == 202);
223 CHECK(outputData[2] == 303);
224 CHECK(outputData[3] == 404);
225 CHECK(outputData[4] == 505);
226 CHECK(outputData[5] == 606);
227 CHECK(outputData[6] == 707);
228 CHECK(outputData[7] == 808);
229 CHECK(outputData[8] == 909);
230 CHECK(outputData[9] == 1010);
231 CHECK(outputData[10] == 1111);
232 CHECK(outputData[11] == 1212);
235 TEST_CASE(
"MultipleOutputs")
237 using namespace armnn;
251 activation1Descriptor.
m_A = 1.f;
252 activation1Descriptor.
m_B = -1.f;
258 activation2Descriptor.
m_A = 6.0f;
264 activation3Descriptor.
m_A = 5.0f;
265 activation3Descriptor.
m_B = 2.0f;
292 runtime->LoadNetwork(netId, std::move(optNet));
295 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 };
297 std::vector<float> output1Data(inputData.size());
298 std::vector<float> output2Data(inputData.size());
299 std::vector<float> output3Data(inputData.size());
301 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
309 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
310 {1,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
311 {2,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
315 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
318 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 }));
319 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 }));
320 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 }));
323 TEST_CASE(
"TrivialMin")
325 using namespace armnn;
354 runtime->LoadNetwork(netId, std::move(optNet));
357 std::vector<float> input1Data
359 1.0f, 2.0f, 3.0f, 4.0f
361 std::vector<float> input2Data
363 2.0f, 1.0f, 5.0f, 2.0f
365 std::vector<float> outputData(4);
367 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
376 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
380 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
383 CHECK(outputData[0] == 1);
384 CHECK(outputData[1] == 1);
385 CHECK(outputData[2] == 3);
386 CHECK(outputData[3] == 2);
389 TEST_CASE(
"RefEqualSimpleEndToEndTest")
391 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
392 0, 0, 0, 0, 1, 1, 1, 1 });
394 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
399 TEST_CASE(
"RefGreaterSimpleEndToEndTest")
401 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
402 0, 0, 0, 0, 0, 0, 0, 0 });
404 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
409 TEST_CASE(
"RefEqualSimpleEndToEndUint8Test")
411 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
412 0, 0, 0, 0, 1, 1, 1, 1 });
414 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
419 TEST_CASE(
"RefGreaterSimpleEndToEndUint8Test")
421 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
422 0, 0, 0, 0, 0, 0, 0, 0 });
424 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
429 TEST_CASE(
"RefEqualBroadcastEndToEndTest")
431 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
434 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
439 TEST_CASE(
"RefGreaterBroadcastEndToEndTest")
441 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
444 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
449 TEST_CASE(
"RefEqualBroadcastEndToEndUint8Test")
451 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
454 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
459 TEST_CASE(
"RefGreaterBroadcastEndToEndUint8Test")
461 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
464 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
469 TEST_CASE(
"RefBatchToSpaceNdEndToEndFloat32NHWCTest")
474 TEST_CASE(
"RefBatchToSpaceNdEndToEndUint8NHWCTest")
479 TEST_CASE(
"RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
484 TEST_CASE(
"RefBatchToSpaceNdEndToEndFloat32NCHWTest")
489 TEST_CASE(
"RefBatchToSpaceNdEndToEndUint8NCHWTest")
494 TEST_CASE(
"RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
499 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
504 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
509 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
514 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
519 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
524 TEST_CASE(
"RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
529 TEST_CASE(
"RefChannelShuffleFloatTest")
531 ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends);
534 TEST_CASE(
"RefChannelShuffleUint8Test")
536 ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
539 TEST_CASE(
"RefConcatEndToEndDim0Test")
541 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
544 TEST_CASE(
"RefConcatEndToEndDim0Uint8Test")
546 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
549 TEST_CASE(
"RefConcatEndToEndDim1Test")
551 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
554 TEST_CASE(
"RefConcatEndToEndDim1Uint8Test")
556 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
559 TEST_CASE(
"RefConcatEndToEndDim2Test")
561 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
564 TEST_CASE(
"RefConcatEndToEndDim2Uint8Test")
566 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
569 TEST_CASE(
"RefConcatEndToEndDim3Test")
571 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
574 TEST_CASE(
"RefConcatEndToEndDim3Uint8Test")
576 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
579 TEST_CASE(
"RefConvolution3dFloat32Test")
581 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
585 TEST_CASE(
"RefConvolution3dNcdhwFloat32Test")
587 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
591 TEST_CASE(
"RefConvolution3dFloat16Test")
593 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
597 TEST_CASE(
"RefConvolution3dUint8Test")
599 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
603 TEST_CASE(
"RefConvolution3dInt8Test")
605 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
609 TEST_CASE(
"RefEluEndToEndTestFloat32")
611 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
614 TEST_CASE(
"RefEluEndToEndTestFloat16")
616 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
619 TEST_CASE(
"RefEluEndToEndTestBFloat16")
621 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
624 TEST_CASE(
"RefEluEndToEndTestQAsymmS8")
626 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
629 TEST_CASE(
"RefEluEndToEndTestQAsymmU8")
631 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
634 TEST_CASE(
"RefEluEndToEndTestQSymmS16")
636 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
639 TEST_CASE(
"RefFillEndToEndTest")
641 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
644 TEST_CASE(
"RefFillEndToEndTestFloat16")
646 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
649 TEST_CASE(
"RefFillEndToEndTestInt32")
651 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
654 TEST_CASE(
"RefFullyConnectedEndToEndTestFloat32")
656 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
659 TEST_CASE(
"RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
661 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends,
true,
true);
664 TEST_CASE(
"RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
666 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends,
true,
false);
669 TEST_CASE(
"RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
671 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
false,
true,
true,
true,
false);
674 TEST_CASE(
"RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
676 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
true,
true,
false,
true,
true);
679 TEST_CASE(
"RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
681 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
true,
true,
true,
false,
true);
684 TEST_CASE(
"RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
686 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
false,
true,
false,
false,
true);
689 TEST_CASE(
"RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
691 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends,
true,
false,
false,
true,
true);
694 TEST_CASE(
"RefGatherFloatTest")
696 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
699 TEST_CASE(
"RefGatherUint8Test")
701 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
704 TEST_CASE(
"RefGatherInt16Test")
706 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
709 TEST_CASE(
"RefGatherMultiDimFloatTest")
711 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
714 TEST_CASE(
"RefGatherMultiDimUint8Test")
716 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
719 TEST_CASE(
"RefGatherMultiDimInt16Test")
721 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
724 TEST_CASE(
"RefGatherNdFloatTest")
726 GatherNdEndToEnd<armnn::DataType::Float32>(defaultBackends);
729 TEST_CASE(
"RefGatherNdUint8Test")
731 GatherNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
734 TEST_CASE(
"RefGatherNdInt16Test")
736 GatherNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
739 TEST_CASE(
"RefGatherNdMultiDimFloatTest")
741 GatherNdMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
744 TEST_CASE(
"RefGatherNdMultiDimUint8Test")
746 GatherNdMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
749 TEST_CASE(
"RefGatherNdMultiDimInt16Test")
751 GatherNdMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
755 TEST_CASE(
"DephtToSpaceEndToEndNchwFloat32")
760 TEST_CASE(
"DephtToSpaceEndToEndNchwFloat16")
765 TEST_CASE(
"DephtToSpaceEndToEndNchwUint8")
770 TEST_CASE(
"DephtToSpaceEndToEndNchwInt16")
775 TEST_CASE(
"DephtToSpaceEndToEndNhwcFloat32")
780 TEST_CASE(
"DephtToSpaceEndToEndNhwcFloat16")
785 TEST_CASE(
"DephtToSpaceEndToEndNhwcUint8")
790 TEST_CASE(
"DephtToSpaceEndToEndNhwcInt16")
796 TEST_CASE(
"DequantizeEndToEndSimpleTest")
798 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
801 TEST_CASE(
"DequantizeEndToEndOffsetTest")
803 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
806 TEST_CASE(
"DequantizeEndToEndSimpleInt16Test")
808 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
811 TEST_CASE(
"DequantizeEndToEndOffsetInt16Test")
813 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
816 TEST_CASE(
"RefDetectionPostProcessRegularNmsTest")
818 std::vector<float> boxEncodings({
819 0.0f, 0.0f, 0.0f, 0.0f,
820 0.0f, 1.0f, 0.0f, 0.0f,
821 0.0f, -1.0f, 0.0f, 0.0f,
822 0.0f, 0.0f, 0.0f, 0.0f,
823 0.0f, 1.0f, 0.0f, 0.0f,
824 0.0f, 0.0f, 0.0f, 0.0f
826 std::vector<float> scores({
834 std::vector<float> anchors({
835 0.5f, 0.5f, 1.0f, 1.0f,
836 0.5f, 0.5f, 1.0f, 1.0f,
837 0.5f, 0.5f, 1.0f, 1.0f,
838 0.5f, 10.5f, 1.0f, 1.0f,
839 0.5f, 10.5f, 1.0f, 1.0f,
840 0.5f, 100.5f, 1.0f, 1.0f
842 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
853 TEST_CASE(
"RefDetectionPostProcessRegularNmsUint8Test")
860 boxEncodingsInfo.SetQuantizationOffset(1);
861 scoresInfo.SetQuantizationScale(0.01f);
862 scoresInfo.SetQuantizationOffset(0);
863 anchorsInfo.SetQuantizationScale(0.5f);
864 anchorsInfo.SetQuantizationOffset(0);
866 std::vector<float> boxEncodings({
867 0.0f, 0.0f, 0.0f, 0.0f,
868 0.0f, 1.0f, 0.0f, 0.0f,
869 0.0f, -1.0f, 0.0f, 0.0f,
870 0.0f, 0.0f, 0.0f, 0.0f,
871 0.0f, 1.0f, 0.0f, 0.0f,
872 0.0f, 0.0f, 0.0f, 0.0f
874 std::vector<float> scores({
882 std::vector<float> anchors({
883 0.5f, 0.5f, 1.0f, 1.0f,
884 0.5f, 0.5f, 1.0f, 1.0f,
885 0.5f, 0.5f, 1.0f, 1.0f,
886 0.5f, 10.5f, 1.0f, 1.0f,
887 0.5f, 10.5f, 1.0f, 1.0f,
888 0.5f, 100.5f, 1.0f, 1.0f
891 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
892 std::vector<uint8_t> qScores(scores.size(), 0);
893 std::vector<uint8_t> qAnchors(anchors.size(), 0);
894 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
895 QuantizeData(qScores.data(), scores.data(), scoresInfo);
896 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
897 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
899 1.0f, 1, 0.01f, 0, 0.5f, 0);
902 TEST_CASE(
"RefDetectionPostProcessFastNmsTest")
904 std::vector<float> boxEncodings({
905 0.0f, 0.0f, 0.0f, 0.0f,
906 0.0f, 1.0f, 0.0f, 0.0f,
907 0.0f, -1.0f, 0.0f, 0.0f,
908 0.0f, 0.0f, 0.0f, 0.0f,
909 0.0f, 1.0f, 0.0f, 0.0f,
910 0.0f, 0.0f, 0.0f, 0.0f
912 std::vector<float> scores({
920 std::vector<float> anchors({
921 0.5f, 0.5f, 1.0f, 1.0f,
922 0.5f, 0.5f, 1.0f, 1.0f,
923 0.5f, 0.5f, 1.0f, 1.0f,
924 0.5f, 10.5f, 1.0f, 1.0f,
925 0.5f, 10.5f, 1.0f, 1.0f,
926 0.5f, 100.5f, 1.0f, 1.0f
928 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
931 TEST_CASE(
"RefDetectionPostProcessFastNmsUint8Test")
938 boxEncodingsInfo.SetQuantizationOffset(1);
939 scoresInfo.SetQuantizationScale(0.01f);
940 scoresInfo.SetQuantizationOffset(0);
941 anchorsInfo.SetQuantizationScale(0.5f);
942 anchorsInfo.SetQuantizationOffset(0);
944 std::vector<float> boxEncodings({
945 0.0f, 0.0f, 0.0f, 0.0f,
946 0.0f, 1.0f, 0.0f, 0.0f,
947 0.0f, -1.0f, 0.0f, 0.0f,
948 0.0f, 0.0f, 0.0f, 0.0f,
949 0.0f, 1.0f, 0.0f, 0.0f,
950 0.0f, 0.0f, 0.0f, 0.0f
952 std::vector<float> scores({
960 std::vector<float> anchors({
961 0.5f, 0.5f, 1.0f, 1.0f,
962 0.5f, 0.5f, 1.0f, 1.0f,
963 0.5f, 0.5f, 1.0f, 1.0f,
964 0.5f, 10.5f, 1.0f, 1.0f,
965 0.5f, 10.5f, 1.0f, 1.0f,
966 0.5f, 100.5f, 1.0f, 1.0f
969 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
970 std::vector<uint8_t> qScores(scores.size(), 0);
971 std::vector<uint8_t> qAnchors(anchors.size(), 0);
972 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
973 QuantizeData(qScores.data(), scores.data(), scoresInfo);
974 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
975 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
977 1.0f, 1, 0.01f, 0, 0.5f, 0);
981 TEST_CASE(
"RefHardSwishEndToEndTestFloat32")
983 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
986 TEST_CASE(
"RefHardSwishEndToEndTestFloat16")
988 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
991 TEST_CASE(
"RefHardSwishEndToEndTestBFloat16")
993 HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
996 TEST_CASE(
"RefHardSwishEndToEndTestQAsymmS8")
998 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
1001 TEST_CASE(
"RefHardSwishEndToEndTestQAsymmU8")
1003 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
1006 TEST_CASE(
"RefHardSwishEndToEndTestQSymmS16")
1008 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
1012 TEST_CASE(
"RefLogSoftmaxEndToEndTest")
1017 TEST_CASE(
"RefPreluEndToEndTestFloat32")
1019 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
1022 TEST_CASE(
"RefPreluEndToEndTestUint8")
1024 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
1027 TEST_CASE(
"RefPreluEndToEndTestQSymm16")
1029 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
1032 TEST_CASE(
"RefSpaceToDepthNhwcEndToEndTest1")
1037 TEST_CASE(
"RefSpaceToDepthNchwEndToEndTest1")
1042 TEST_CASE(
"RefSpaceToDepthNhwcEndToEndTest2")
1047 TEST_CASE(
"RefSpaceToDepthNchwEndToEndTest2")
1052 TEST_CASE(
"RefSplitter1dEndToEndTest")
1054 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
1057 TEST_CASE(
"RefSplitter1dEndToEndUint8Test")
1059 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1062 TEST_CASE(
"RefSplitter2dDim0EndToEndTest")
1064 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1067 TEST_CASE(
"RefSplitter2dDim1EndToEndTest")
1069 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1072 TEST_CASE(
"RefSplitter2dDim0EndToEndUint8Test")
1074 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1077 TEST_CASE(
"RefSplitter2dDim1EndToEndUint8Test")
1079 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1082 TEST_CASE(
"RefSplitter3dDim0EndToEndTest")
1084 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1087 TEST_CASE(
"RefSplitter3dDim1EndToEndTest")
1089 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1092 TEST_CASE(
"RefSplitter3dDim2EndToEndTest")
1094 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1097 TEST_CASE(
"RefSplitter3dDim0EndToEndUint8Test")
1099 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1102 TEST_CASE(
"RefSplitter3dDim1EndToEndUint8Test")
1104 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1107 TEST_CASE(
"RefSplitter3dDim2EndToEndUint8Test")
1109 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1112 TEST_CASE(
"RefSplitter4dDim0EndToEndTest")
1114 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1117 TEST_CASE(
"RefSplitter4dDim1EndToEndTest")
1119 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1122 TEST_CASE(
"RefSplitter4dDim2EndToEndTest")
1124 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1127 TEST_CASE(
"RefSplitter4dDim3EndToEndTest")
1129 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1132 TEST_CASE(
"RefSplitter4dDim0EndToEndUint8Test")
1134 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1137 TEST_CASE(
"RefSplitter4dDim1EndToEndUint8Test")
1139 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1142 TEST_CASE(
"RefSplitter4dDim2EndToEndUint8Test")
1144 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1147 TEST_CASE(
"RefSplitter4dDim3EndToEndUint8Test")
1149 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1153 TEST_CASE(
"RefTransposeConvolution2dEndToEndFloatNchwTest")
1155 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1159 TEST_CASE(
"RefTransposeConvolution2dEndToEndUint8NchwTest")
1161 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1165 TEST_CASE(
"RefTransposeConvolution2dEndToEndInt16NchwTest")
1167 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1171 TEST_CASE(
"RefTransposeConvolution2dEndToEndFloatNhwcTest")
1173 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1177 TEST_CASE(
"RefTransposeConvolution2dEndToEndUint8NhwcTest")
1179 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1183 TEST_CASE(
"RefTransposeConvolution2dEndToEndInt16NhwcTest")
1185 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1190 TEST_CASE(
"RefResizeBilinearEndToEndFloatNchwTest")
1195 TEST_CASE(
"RefResizeBilinearEndToEndUint8NchwTest")
1200 TEST_CASE(
"RefResizeBilinearEndToEndInt16NchwTest")
1205 TEST_CASE(
"RefResizeBilinearEndToEndFloatNhwcTest")
1210 TEST_CASE(
"RefResizeBilinearEndToEndUint8NhwcTest")
1215 TEST_CASE(
"RefResizeBilinearEndToEndInt16NhwcTest")
1221 TEST_CASE(
"RefResizeNearestNeighborEndToEndFloatNchwTest")
1226 TEST_CASE(
"RefResizeNearestNeighborEndToEndUint8NchwTest")
1231 TEST_CASE(
"RefResizeNearestNeighborEndToEndInt16NchwTest")
1236 TEST_CASE(
"RefResizeNearestNeighborEndToEndFloatNhwcTest")
1241 TEST_CASE(
"RefResizeNearestNeighborEndToEndUint8NhwcTest")
1246 TEST_CASE(
"RefResizeNearestNeighborEndToEndInt16NhwcTest")
1252 TEST_CASE(
"RefInstanceNormalizationNhwcEndToEndTest1")
1257 TEST_CASE(
"RefInstanceNormalizationNchwEndToEndTest1")
1262 TEST_CASE(
"RefInstanceNormalizationNhwcEndToEndTest2")
1267 TEST_CASE(
"RefInstanceNormalizationNchwEndToEndTest2")
1273 TEST_CASE(
"RefArgMaxSimpleTest")
1275 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1278 TEST_CASE(
"RefArgMaxSimpleUint8Test")
1280 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
1283 TEST_CASE(
"RefArgMinSimpleTest")
1285 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1288 TEST_CASE(
"RefArgMinSimpleUint8Test")
1290 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
1293 TEST_CASE(
"RefArgMaxAxis0Test")
1295 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1298 TEST_CASE(
"RefArgMaxAxis0Uint8Test")
1300 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1303 TEST_CASE(
"RefArgMinAxis0Test")
1305 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1308 TEST_CASE(
"RefArgMinAxis0Uint8Test")
1311 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1314 TEST_CASE(
"RefArgMaxAxis1Test")
1316 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1319 TEST_CASE(
"RefArgMaxAxis1Uint8Test")
1321 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1324 TEST_CASE(
"RefArgMinAxis1Test")
1326 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1329 TEST_CASE(
"RefArgMinAxis1Uint8Test")
1332 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1335 TEST_CASE(
"RefArgMaxAxis2Test")
1337 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1340 TEST_CASE(
"RefArgMaxAxis2Uint8Test")
1342 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1345 TEST_CASE(
"RefArgMinAxis2Test")
1347 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1350 TEST_CASE(
"RefArgMinAxis2Uint8Test")
1353 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1356 TEST_CASE(
"RefArgMaxAxis3Test")
1358 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1361 TEST_CASE(
"RefArgMaxAxis3Uint8Test")
1363 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1366 TEST_CASE(
"RefArgMinAxis3Test")
1368 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1371 TEST_CASE(
"RefArgMinAxis3Uint8Test")
1374 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1377 TEST_CASE(
"RefQLstmEndToEndTest")
1382 TEST_CASE(
"RefRankEndToEndTest")
1384 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1387 TEST_CASE(
"RefRankEndToEndTestFloat16")
1389 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1392 TEST_CASE(
"RefRankEndToEndTestInt32")
1394 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1397 TEST_CASE(
"RefRankEndToEndTestQAsymmS8")
1399 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1402 TEST_CASE(
"RefRankEndToEndTestQSymmS16")
1404 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1407 TEST_CASE(
"RefRankEndToEndTestQSymmS8")
1409 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1412 TEST_CASE(
"RefForceImportWithAlignedBuffersEndToEndTest")
1414 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1417 TEST_CASE(
"RefForceImportWithMisalignedInputBuffersEndToEndTest")
1419 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1422 TEST_CASE(
"RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1424 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1427 TEST_CASE(
"RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1429 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
1432 TEST_CASE(
"RefForceImportRepeatedInferencesEndToEndTest")
1434 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1437 TEST_CASE(
"RefForceImportRepeatedInferencesInvertedEndToEndTest")
1439 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1442 #if !defined(__ANDROID__) 1444 TEST_CASE(
"RefImportNonAlignedPointerTest")
1446 ImportNonAlignedInputPointerTest(defaultBackends);
1449 TEST_CASE(
"RefExportNonAlignedPointerTest")
1451 ExportNonAlignedOutputPointerTest(defaultBackends);
1454 TEST_CASE(
"RefImportAlignedPointerTest")
1456 ImportAlignedPointerTest(defaultBackends);
1459 TEST_CASE(
"RefImportOnlyWorkload")
1461 ImportOnlyWorkload(defaultBackends);
1464 TEST_CASE(
"RefExportOnlyWorkload")
1466 ExportOnlyWorkload(defaultBackends);
1469 TEST_CASE(
"RefImportAndExportWorkload")
1471 ImportAndExportWorkload(defaultBackends);
1474 TEST_CASE(
"RefExportOutputWithSeveralOutputSlotConnectionsTest")
1476 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1479 TEST_CASE(
"RefStridedSliceInvalidSliceEndToEndTest")
1481 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1484 TEST_CASE(
"RefThreadSafeFP32StridedSlicedEndToEndTest")
1486 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
1489 TEST_CASE(
"RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
1491 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1494 TEST_CASE(
"RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
1496 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)