// // Copyright © 2017-2024 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include #include #include #include #include #include #include #include #include #include #include #include #include #include "backendsCommon/test/Pooling2dEndToEndTestImpl.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include TEST_SUITE("ClEndToEnd") { std::vector clDefaultBackends = {armnn::Compute::GpuAcc}; // Activations // Linear TEST_CASE("ClLinearEndToEndTestFloat32") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::Linear); } TEST_CASE("ClLinearEndToEndTestFloat16") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::Linear); } // Sigmoid TEST_CASE("ClSigmoidEndToEndTestFloat32") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::Sigmoid); } // ReLu TEST_CASE("ClReLuEndToEndTestFloat32") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::ReLu); } TEST_CASE("ClReLuEndToEndTestFloat16") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::ReLu); } // BoundedReLu TEST_CASE("ClBoundedReLuEndToEndTestFloat32") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::BoundedReLu); } TEST_CASE("ClBoundedReLuEndToEndTestFloat16") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::BoundedReLu); } // SoftReLu TEST_CASE("ClSoftReLuEndToEndTestFloat32") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::SoftReLu); } // LeakyRelu TEST_CASE("ClLeakyReluActivationFloat32") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::LeakyReLu, 1.f, 0, 0.01f); } TEST_CASE("ClLeakyReluActivationFloat16") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::LeakyReLu, 0.3f, 5, 0.01f); } // Elu TEST_CASE("ClEluEndToEndTestFloat32") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::Elu); } TEST_CASE("ClEluEndToEndTestFloat16") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::Elu); } // HardSwish TEST_CASE("ClHardSwishEndToEndTestFloat32") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::HardSwish); } TEST_CASE("ClHardSwishEndToEndTestFloat16") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::HardSwish); } // TanH TEST_CASE("ClTanHEndToEndTestFloat32") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::TanH, 1.f, 0, 2, 3); } TEST_CASE("ClTanHEndToEndTestFloat16") { ActivationEndToEndTest(clDefaultBackends, ActivationFunction::TanH, 1.f, 0, 2, 3); } // ElementwiseUnary // Abs TEST_CASE("ClAbsEndToEndTestFloat32") { ElementwiseUnarySimpleEndToEnd(clDefaultBackends, UnaryOperation::Abs); } // Rsqrt TEST_CASE("ClRsqrtEndToEndTestFloat32") { ElementwiseUnarySimpleEndToEnd(clDefaultBackends, UnaryOperation::Rsqrt); } // ElementwiseBinary // Addition TEST_CASE("ClAdditionEndToEndFloat32Test") { AdditionEndToEnd(clDefaultBackends); } TEST_CASE("ClAdditionEndToEndUint8Test") { AdditionEndToEnd(clDefaultBackends); } TEST_CASE("ClAdditionEndToEndFloat32Simple3DTest") { ElementwiseBinarySimple3DEndToEnd(clDefaultBackends, BinaryOperation::Add); } TEST_CASE("ClAdditionEndToEndFloat16Simple3DTest") { ElementwiseBinarySimple3DEndToEnd(clDefaultBackends, BinaryOperation::Add); } // Div TEST_CASE("ClDivEndToEndTestFloat32") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::Div); } // Mul TEST_CASE("ClMulEndToEndTestFloat32") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::Mul); } TEST_CASE("ClMulEndToEndTestUint8") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::Mul); } // Sub TEST_CASE("ClSubtractionEndToEndFloat32Simple3DTest") { ElementwiseBinarySimple3DEndToEnd(clDefaultBackends, BinaryOperation::Sub); } TEST_CASE("ClSubtractionEndToEndFloat16Simple3DTest") { ElementwiseBinarySimple3DEndToEnd(clDefaultBackends, BinaryOperation::Sub); } // Max TEST_CASE("ClMaximumEndToEndTestFloat32") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::Maximum); } TEST_CASE("ClMaximumEndToEndTestUint8") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::Maximum); } // Min TEST_CASE("ClMinimumEndToEndTestFloat32") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::Minimum); } TEST_CASE("ClMinimumEndToEndTestUint8") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::Minimum); } // Power TEST_CASE("ClPowerEndToEndTestFloat32") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::Power); } // SqDiff TEST_CASE("ClSquaredDifferenceEndToEndTestFloat32") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::SqDiff); } TEST_CASE("ClSquaredDifferenceEndToEndTestUint8") { ElementwiseBinarySimpleEndToEnd(clDefaultBackends, BinaryOperation::SqDiff); } // Batch Mat Mul TEST_CASE("ClBatchMatMulEndToEndFloat32Test") { BatchMatMulEndToEnd(clDefaultBackends); } TEST_CASE("ClBatchMatMulEndToEndInt8Test") { BatchMatMulEndToEnd(clDefaultBackends); } // Constant TEST_CASE("ConstantUsage_Cl_Float32") { ConstantUsageFloat32Test(clDefaultBackends); } TEST_CASE("ClConcatEndToEndDim0Test") { ConcatDim0EndToEnd(clDefaultBackends); } TEST_CASE("ClConcatEndToEndDim0Uint8Test") { ConcatDim0EndToEnd(clDefaultBackends); } TEST_CASE("ClConcatEndToEndDim1Test") { ConcatDim1EndToEnd(clDefaultBackends); } TEST_CASE("ClConcatEndToEndDim1Uint8Test") { ConcatDim1EndToEnd(clDefaultBackends); } TEST_CASE("ClConcatEndToEndDim3Test") { ConcatDim3EndToEnd(clDefaultBackends); } TEST_CASE("ClConcatEndToEndDim3Uint8Test") { ConcatDim3EndToEnd(clDefaultBackends); } // DepthToSpace TEST_CASE("DephtToSpaceEndToEndNchwFloat32") { DepthToSpaceEndToEnd(clDefaultBackends, armnn::DataLayout::NCHW); } TEST_CASE("DephtToSpaceEndToEndNchwFloat16") { DepthToSpaceEndToEnd(clDefaultBackends, armnn::DataLayout::NCHW); } TEST_CASE("DephtToSpaceEndToEndNchwUint8") { DepthToSpaceEndToEnd(clDefaultBackends, armnn::DataLayout::NCHW); } TEST_CASE("DephtToSpaceEndToEndNchwInt16") { DepthToSpaceEndToEnd(clDefaultBackends, armnn::DataLayout::NCHW); } TEST_CASE("DephtToSpaceEndToEndNhwcFloat32") { DepthToSpaceEndToEnd(clDefaultBackends, armnn::DataLayout::NHWC); } TEST_CASE("DephtToSpaceEndToEndNhwcFloat16") { DepthToSpaceEndToEnd(clDefaultBackends, armnn::DataLayout::NHWC); } TEST_CASE("DephtToSpaceEndToEndNhwcUint8") { DepthToSpaceEndToEnd(clDefaultBackends, armnn::DataLayout::NHWC); } TEST_CASE("DephtToSpaceEndToEndNhwcInt16") { DepthToSpaceEndToEnd(clDefaultBackends, armnn::DataLayout::NHWC); } // Dequantize TEST_CASE("DequantizeEndToEndSimpleTest") { DequantizeEndToEndSimple(clDefaultBackends); } TEST_CASE("DequantizeEndToEndOffsetTest") { DequantizeEndToEndOffset(clDefaultBackends); } // Slice TEST_CASE("ClSliceEndtoEndTestFloat32") { SliceEndToEnd(clDefaultBackends); } TEST_CASE("ClSliceEndtoEndTestInt32") { SliceEndToEnd(clDefaultBackends); } TEST_CASE("ClSliceEndtoEndTestFloat16") { SliceEndToEndFloat16(clDefaultBackends); } TEST_CASE("ClStridedSliceInvalidSliceEndToEndTest") { StridedSliceInvalidSliceEndToEndTest(clDefaultBackends); } TEST_CASE("ClGreaterSimpleEndToEndTest") { const std::vector expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }); ComparisonSimpleEndToEnd(clDefaultBackends, ComparisonOperation::Greater, expectedOutput); } TEST_CASE("ClGreaterSimpleEndToEndUint8Test") { const std::vector expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }); ComparisonSimpleEndToEnd(clDefaultBackends, ComparisonOperation::Greater, expectedOutput); } TEST_CASE("ClGreaterBroadcastEndToEndTest") { const std::vector expectedOutput({ 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }); ComparisonBroadcastEndToEnd(clDefaultBackends, ComparisonOperation::Greater, expectedOutput); } TEST_CASE("ClGreaterBroadcastEndToEndUint8Test") { const std::vector expectedOutput({ 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }); ComparisonBroadcastEndToEnd(clDefaultBackends, ComparisonOperation::Greater, expectedOutput); } // InstanceNormalization TEST_CASE("ClInstanceNormalizationNhwcEndToEndTest1") { InstanceNormalizationNhwcEndToEndTest1(clDefaultBackends); } TEST_CASE("ClInstanceNormalizationNchwEndToEndTest1") { InstanceNormalizationNchwEndToEndTest1(clDefaultBackends); } TEST_CASE("ClInstanceNormalizationNhwcEndToEndTest2") { InstanceNormalizationNhwcEndToEndTest2(clDefaultBackends); } TEST_CASE("ClInstanceNormalizationNchwEndToEndTest2") { InstanceNormalizationNchwEndToEndTest2(clDefaultBackends); } // Pooling 2D // Average Pool 2D TEST_CASE("ClAvgPool2DEndtoEndTestFloat32") { AvgPool2dEndToEnd(clDefaultBackends); } TEST_CASE("ClAvgPool2DEndtoEndTestFloat16") { AvgPool2dEndToEndFloat16(clDefaultBackends); } TEST_CASE("ClAvgPool2DIgnoreValueEndtoEndTestFloat32") { AvgPool2dEndToEnd(clDefaultBackends, PaddingMethod::IgnoreValue); } // Max Pool 2D TEST_CASE("ClMaxPool2DEndtoEndTestFloat32") { MaxPool2dEndToEnd(clDefaultBackends); } TEST_CASE("ClMaxPool2DEndtoEndTestFloat16") { MaxPool2dEndToEndFloat16(clDefaultBackends); } TEST_CASE("ClMaxPool2DIgnoreValueEndtoEndTestFloat32") { MaxPool2dEndToEnd(clDefaultBackends, PaddingMethod::IgnoreValue); } TEST_CASE("ClMaxPool2DTwoLayerEndtoEndTestFloat32") { MaxPool2dTwoLayerEndToEnd(clDefaultBackends); } TEST_CASE("ClMaxPool2DThreeLayerEndtoEndTestFloat32") { MaxPool2dThreeLayerEndToEnd(clDefaultBackends); } // Fill TEST_CASE("ClFillEndToEndTest") { FillEndToEnd(clDefaultBackends); } TEST_CASE("ClFillEndToEndTestFloat16") { FillEndToEnd(clDefaultBackends); } TEST_CASE("ClFillEndToEndTestInt32") { FillEndToEnd(clDefaultBackends); } // Prelu TEST_CASE("ClPreluEndToEndFloat32Test") { PreluEndToEndNegativeTest(clDefaultBackends); } TEST_CASE("ClPreluEndToEndTestUint8") { PreluEndToEndPositiveTest(clDefaultBackends); } // Reduce TEST_CASE("ClReduceEndToEndTest") { ReduceEndToEnd(clDefaultBackends); } TEST_CASE("ClReduceEndToEndTestFloat16") { ReduceEndToEnd(clDefaultBackends); } // Reshape TEST_CASE("ClReshapeEndToEndTest") { ReshapeEndToEnd(clDefaultBackends); } TEST_CASE("ClReshapeEndToEndTestFloat16") { ReshapeEndToEndFloat16(clDefaultBackends); } TEST_CASE("ClReshapeEndToEndTestInt32") { ReshapeEndToEnd(clDefaultBackends); } TEST_CASE("ClReshapeEndToEndTestInt16") { ReshapeEndToEnd(clDefaultBackends); } TEST_CASE("ClReshapeEndToEndTestUInt8") { ReshapeEndToEnd(clDefaultBackends); } TEST_CASE("ClReshapeEndToEndTestInt8") { ReshapeEndToEnd(clDefaultBackends); } // Resize Bilinear TEST_CASE("ClResizeBilinearEndToEndFloatNchwTest") { ResizeBilinearEndToEnd(clDefaultBackends, armnn::DataLayout::NCHW); } TEST_CASE("ClResizeBilinearEndToEndFloatNhwcTest") { ResizeBilinearEndToEnd(clDefaultBackends, armnn::DataLayout::NHWC); } // Resize NearestNeighbor TEST_CASE("ClResizeNearestNeighborEndToEndFloatNchwTest") { ResizeNearestNeighborEndToEnd(clDefaultBackends, armnn::DataLayout::NCHW); } TEST_CASE("ClResizeNearestNeighborEndToEndFloatNhwcTest") { ResizeNearestNeighborEndToEnd(clDefaultBackends, armnn::DataLayout::NHWC); } TEST_CASE("ClResizeNearestNeighborEndToEndFloatAlignCornersNhwcTest") { ResizeNearestNeighborEndToEnd(clDefaultBackends, armnn::DataLayout::NHWC, true, false); } TEST_CASE("ClResizeNearestNeighborEndToEndFloatHalfPixelNhwcTest") { ResizeNearestNeighborEndToEnd(clDefaultBackends, armnn::DataLayout::NHWC, false, true); } // ReverseV2 TEST_CASE("ClReverseV2EndToEndTest") { ReverseV2EndToEnd(clDefaultBackends); } // Space to depth TEST_CASE("ClSpaceToDepthNhwcEndToEndTest1") { SpaceToDepthNhwcEndToEndTest1(clDefaultBackends); } TEST_CASE("ClSpaceToDepthNchwEndToEndTest1") { SpaceToDepthNchwEndToEndTest1(clDefaultBackends); } TEST_CASE("ClSpaceToDepthNhwcEndToEndTest2") { SpaceToDepthNhwcEndToEndTest2(clDefaultBackends); } TEST_CASE("ClSpaceToDepthNchwEndToEndTest2") { SpaceToDepthNchwEndToEndTest2(clDefaultBackends); } // Split TEST_CASE("ClSplitter1dEndToEndTest") { Splitter1dEndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter1dEndToEndUint8Test") { Splitter1dEndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter2dDim0EndToEndTest") { Splitter2dDim0EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter2dDim1EndToEndTest") { Splitter2dDim1EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter2dDim0EndToEndUint8Test") { Splitter2dDim0EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter2dDim1EndToEndUint8Test") { Splitter2dDim1EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter3dDim0EndToEndTest") { Splitter3dDim0EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter3dDim1EndToEndTest") { Splitter3dDim1EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter3dDim2EndToEndTest") { Splitter3dDim2EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter3dDim0EndToEndUint8Test") { Splitter3dDim0EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter3dDim1EndToEndUint8Test") { Splitter3dDim1EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter3dDim2EndToEndUint8Test") { Splitter3dDim2EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter4dDim0EndToEndTest") { Splitter4dDim0EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter4dDim1EndToEndTest") { Splitter4dDim1EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter4dDim2EndToEndTest") { Splitter4dDim2EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter4dDim3EndToEndTest") { Splitter4dDim3EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter4dDim0EndToEndUint8Test") { Splitter4dDim0EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter4dDim1EndToEndUint8Test") { Splitter4dDim1EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter4dDim2EndToEndUint8Test") { Splitter4dDim2EndToEnd(clDefaultBackends); } TEST_CASE("ClSplitter4dDim3EndToEndUint8Test") { Splitter4dDim3EndToEnd(clDefaultBackends); } // Tile TEST_CASE("ClTileEndToEndFloat32") { TileEndToEnd(clDefaultBackends); } TEST_CASE("ClTileEndToEndFloat16") { TileEndToEnd(clDefaultBackends); } TEST_CASE("ClTileEndToEndQAsymmS8") { TileEndToEnd(clDefaultBackends); } TEST_CASE("ClTileEndToEndQAsymmU8") { TileEndToEnd(clDefaultBackends); } TEST_CASE("ClTileEndToEndQSymmS8") { TileEndToEnd(clDefaultBackends); } TEST_CASE("ClTileEndToEndQSymmS16") { TileEndToEnd(clDefaultBackends); } TEST_CASE("ClTileEndToEndSigned32") { TileEndToEnd(clDefaultBackends); } // TransposeConvolution2d TEST_CASE("ClTransposeConvolution2dEndToEndFloatNchwTest") { TransposeConvolution2dEndToEnd( clDefaultBackends, armnn::DataLayout::NCHW); } TEST_CASE("ClTransposeConvolution2dEndToEndUint8NchwTest") { TransposeConvolution2dEndToEnd( clDefaultBackends, armnn::DataLayout::NCHW); } TEST_CASE("ClTransposeConvolution2dEndToEndFloatNhwcTest") { TransposeConvolution2dEndToEnd( clDefaultBackends, armnn::DataLayout::NHWC); } TEST_CASE("ClTransposeConvolution2dEndToEndUint8NhwcTest") { TransposeConvolution2dEndToEnd( clDefaultBackends, armnn::DataLayout::NHWC); } // Transpose TEST_CASE("ClTransposeEndToEndTest") { TransposeEndToEnd(clDefaultBackends); } TEST_CASE("ClQuantizedLstmEndToEndTest") { QuantizedLstmEndToEnd(clDefaultBackends); } // ArgMinMax TEST_CASE("ClArgMaxSimpleTest") { ArgMaxEndToEndSimple(clDefaultBackends); } TEST_CASE("ClArgMinSimpleTest") { ArgMinEndToEndSimple(clDefaultBackends); } TEST_CASE("ClArgMaxAxis0Test") { ArgMaxAxis0EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMinAxis0Test") { ArgMinAxis0EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMaxAxis1Test") { ArgMaxAxis1EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMinAxis1Test") { ArgMinAxis1EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMaxAxis2Test") { ArgMaxAxis2EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMinAxis2Test") { ArgMinAxis2EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMaxAxis3Test") { ArgMaxAxis3EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMinAxis3Test") { ArgMinAxis3EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMaxSimpleTestQAsymmU8") { ArgMaxEndToEndSimple(clDefaultBackends); } TEST_CASE("ClArgMinSimpleTestQAsymmU8") { ArgMinEndToEndSimple(clDefaultBackends); } TEST_CASE("ClArgMaxAxis0TestQAsymmU8") { ArgMaxAxis0EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMinAxis0TestQAsymmU8") { ArgMinAxis0EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMaxAxis1TestQAsymmU8") { ArgMaxAxis1EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMinAxis1TestQAsymmU8") { ArgMinAxis1EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMaxAxis2TestQAsymmU8") { ArgMaxAxis2EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMinAxis2TestQAsymmU8") { ArgMinAxis2EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMaxAxis3TestQAsymmU8") { ArgMaxAxis3EndToEnd(clDefaultBackends); } TEST_CASE("ClArgMinAxis3TestQAsymmU8") { ArgMinAxis3EndToEnd(clDefaultBackends); } TEST_CASE("ClQLstmEndToEndTest") { QLstmEndToEnd(clDefaultBackends); } TEST_CASE("ClForceImportWithMisalignedInputBuffersEndToEndTest" // Currently, the CL workload for activation does not support tensor handle replacement so this test case // will always fail. * doctest::skip(true)) { ForceImportWithMisalignedInputBuffersEndToEndTest(clDefaultBackends); } TEST_CASE("ClForceImportWithMisalignedOutputBuffersEndToEndTest" // Currently, the CL workload for activation does not support tensor handle replacement so this test case // will always fail. * doctest::skip(true)) { ForceImportWithMisalignedOutputBuffersEndToEndTest(clDefaultBackends); } TEST_CASE("ClForceImportWithMisalignedInputAndOutputBuffersEndToEndTest") { ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(clDefaultBackends); } TEST_CASE("ClReshapeRemovalSimpleCaseEndToEnd") { ReshapeRemovalEndToEnd(clDefaultBackends); } TEST_CASE("ClReshapeRemovalNCHWFirstEndToEnd") { ReshapeRemovalNCHWEndToEnd(clDefaultBackends, false, true); } TEST_CASE("ClReshapeRemovalNCHWSecondEndToEnd") { ReshapeRemovalNCHWEndToEnd(clDefaultBackends, false, false); } }