From 4f907e18b5db5f5b222753b6217e025e435cfa53 Mon Sep 17 00:00:00 2001 From: Pablo Marquez Tello Date: Wed, 5 Nov 2025 14:15:01 +0000 Subject: [PATCH] style: Apply clang-format for tests Change-Id: I1632ba971cf0f42ecba07de6e3fd48ecffad461d Signed-off-by: Pablo Marquez Tello --- tests/AssetsLibrary.cpp | 103 +- tests/AssetsLibrary.h | 182 +- tests/CL/CLAccessor.h | 22 +- tests/CL/CLArrayAccessor.h | 12 +- tests/CL/Helper.h | 43 +- tests/IAccessor.h | 10 +- tests/NEON/Accessor.h | 16 +- tests/NEON/ArrayAccessor.h | 12 +- tests/NEON/Helper.h | 27 +- tests/PaddingCalculator.h | 30 +- tests/RawTensor.cpp | 14 +- tests/SimpleTensor.h | 55 +- tests/SimpleTensorAccessor.h | 18 +- tests/SimpleTensorPrinter.h | 45 +- tests/TensorCache.h | 11 +- tests/TypeReader.h | 19 +- tests/Utils.h | 65 +- tests/benchmark/CL/Scale.cpp | 25 +- tests/benchmark/NEON/Scale.cpp | 26 +- tests/benchmark/fixtures/ScaleFixture.h | 23 +- tests/benchmark/fixtures/ScaleLayerFixture.h | 23 +- tests/benchmark_examples/RunExample.cpp | 56 +- tests/datasets/ActivationFunctionsDataset.h | 61 +- .../datasets/BatchNormalizationLayerDataset.h | 16 +- tests/datasets/BatchToSpaceDataset.h | 56 +- tests/datasets/BorderModeDataset.h | 17 +- tests/datasets/ChannelShuffleLayerDataset.h | 18 +- tests/datasets/Col2ImLayerDataset.h | 26 +- tests/datasets/ComparisonOperationsDataset.h | 21 +- tests/datasets/ConvertPolicyDataset.h | 16 +- tests/datasets/ConvolutionLayerDataset.h | 39 +- tests/datasets/CropResizeDataset.h | 61 +- tests/datasets/DatatypeDataset.h | 88 +- tests/datasets/DepthToSpaceDataset.h | 16 +- .../DepthwiseConvolutionLayerDataset.h | 101 +- .../datasets/DilatedConvolutionLayerDataset.h | 51 +- .../DilatedDepthwiseConvolutionLayerDataset.h | 42 +- .../datasets/DirectConvolutionLayerDataset.h | 30 +- tests/datasets/DynamicFusionDataset.h | 26 +- tests/datasets/FullyConnectedLayerDataset.h | 24 +- tests/datasets/GEMMLowpDataset.h | 26 +- .../GEMMLowpFusedOffsetOutputDataset.h | 156 +- tests/datasets/GatherDataset.h | 24 +- tests/datasets/GradientDimensionDataset.h | 16 +- tests/datasets/InterpolationPolicyDataset.h | 17 +- tests/datasets/LSTMLayerDataset.h | 87 +- tests/datasets/LargeConvolutionLayerDataset.h | 255 +- tests/datasets/LargeGEMMDataset.h | 45 +- tests/datasets/LargeGEMMLowpDataset.h | 15 +- tests/datasets/LargeMatMulDataset.h | 24 +- tests/datasets/LargeMatMulMMULDataset.h | 12 +- tests/datasets/MatMulDataset.h | 13 +- tests/datasets/MatMulLowpMMULDataset.h | 6 +- tests/datasets/MatrixPatternDataset.h | 23 +- .../datasets/NonLinearFilterFunctionDataset.h | 18 +- tests/datasets/NormalizationTypesDataset.h | 15 +- .../datasets/NormalizePlanarYUVLayerDataset.h | 18 +- tests/datasets/OpticalFlowDataset.h | 166 -- tests/datasets/Pooling3dLayerDataset.h | 36 +- tests/datasets/PoolingLayerDataset.h | 26 +- tests/datasets/PoolingTypesDataset.h | 15 +- tests/datasets/PriorBoxLayerDataset.h | 41 +- tests/datasets/RNNLayerDataset.h | 42 +- tests/datasets/ROIDataset.h | 18 +- .../RandomBatchNormalizationLayerDataset.h | 15 +- .../RandomNormalizePlanarYUVLayerDataset.h | 15 +- tests/datasets/ReorderLayerDataset.h | 15 +- tests/datasets/ReorgLayerDataset.h | 18 +- tests/datasets/ReshapeLayerDataset.h | 8 +- tests/datasets/SamplingPolicyDataset.h | 15 +- tests/datasets/ScaleLayerDataset.h | 91 +- tests/datasets/ScaleValidationDataset.h | 135 +- tests/datasets/ScatterDataset.h | 63 +- tests/datasets/ShapeDatasets.h | 808 ++---- tests/datasets/SliceOperationsDataset.h | 61 +- tests/datasets/SmallConvolutionLayerDataset.h | 215 +- tests/datasets/SmallGEMMDataset.h | 58 +- tests/datasets/SmallGEMMLowpDataset.h | 15 +- tests/datasets/SmallMatMulDataset.h | 12 +- tests/datasets/SmallMatMulMMULDataset.h | 9 +- tests/datasets/SpaceToBatchDataset.h | 26 +- tests/datasets/SpaceToDepthDataset.h | 16 +- tests/datasets/SplitDataset.h | 31 +- tests/datasets/ThresholdDataset.h | 32 +- tests/datasets/TinyConvolutionLayerDataset.h | 27 +- .../datasets/WinogradInputTransformDataset.h | 410 ++- .../datasets/WinogradOutputTransformDataset.h | 582 ++-- .../alexnet/AlexNetActivationLayerDataset.h | 30 +- .../alexnet/AlexNetConvolutionLayerDataset.h | 51 +- .../AlexNetFullyConnectedLayerDataset.h | 15 +- .../AlexNetNormalizationLayerDataset.h | 28 +- .../alexnet/AlexNetPoolingLayerDataset.h | 15 +- ...ogLeNetInceptionV1ActivationLayerDataset.h | 160 +- ...gLeNetInceptionV1ConvolutionLayerDataset.h | 336 ++- ...NetInceptionV1FullyConnectedLayerDataset.h | 15 +- ...eNetInceptionV1NormalizationLayerDataset.h | 35 +- .../GoogLeNetInceptionV1PoolingLayerDataset.h | 45 +- ...ogLeNetInceptionV4ActivationLayerDataset.h | 116 +- ...nceptionV4BatchNormalizationLayerDataset.h | 15 +- ...gLeNetInceptionV4ConvolutionLayerDataset.h | 216 +- ...NetInceptionV4FullyConnectedLayerDataset.h | 15 +- ...nceptionV4NormalizePlanarYUVLayerDataset.h | 15 +- .../GoogLeNetInceptionV4PoolingLayerDataset.h | 36 +- .../lenet5/LeNet5ActivationLayerDataset.h | 28 +- .../lenet5/LeNet5ConvolutionLayerDataset.h | 21 +- .../lenet5/LeNet5FullyConnectedLayerDataset.h | 15 +- .../lenet5/LeNet5PoolingLayerDataset.h | 15 +- .../MobileNetActivationLayerDataset.h | 34 +- .../MobileNetBatchNormalizationLayerDataset.h | 12 +- .../MobileNetConvolutionLayerDataset.h | 24 +- ...obileNetDepthwiseConvolutionLayerDataset.h | 27 +- .../ResNet12ConvolutionLayerDataset.h | 18 +- .../SqueezeNetActivationLayerDataset.h | 68 +- .../SqueezeNetConvolutionLayerDataset.h | 81 +- .../SqueezeNetPoolingLayerDataset.h | 24 +- .../vgg/vgg16/VGG16ActivationLayerDataset.h | 51 +- .../vgg/vgg16/VGG16ConvolutionLayerDataset.h | 69 +- .../vgg16/VGG16FullyConnectedLayerDataset.h | 15 +- .../vgg/vgg16/VGG16PoolingLayerDataset.h | 30 +- tests/framework/Asserts.h | 208 +- tests/framework/DatasetModes.cpp | 16 +- tests/framework/DatasetModes.h | 10 +- tests/framework/Exceptions.cpp | 27 +- tests/framework/Exceptions.h | 14 +- tests/framework/Fixture.h | 12 +- tests/framework/Framework.cpp | 391 +-- tests/framework/Framework.h | 87 +- tests/framework/Macros.h | 227 +- tests/framework/ParametersLibrary.h | 14 +- tests/framework/Profiler.cpp | 25 +- tests/framework/Profiler.h | 3 +- tests/framework/Registrars.h | 16 +- tests/framework/TestCase.h | 19 +- tests/framework/TestCaseFactory.h | 45 +- tests/framework/TestFilter.cpp | 30 +- tests/framework/TestFilter.h | 13 +- tests/framework/TestResult.h | 19 +- tests/framework/Utils.cpp | 4 +- tests/framework/Utils.h | 25 +- .../framework/command_line/CommonOptions.cpp | 54 +- tests/framework/command_line/CommonOptions.h | 11 +- .../datasets/CartesianProductDataset.h | 28 +- tests/framework/datasets/ContainerDataset.h | 15 +- tests/framework/datasets/Dataset.h | 11 +- .../datasets/InitializerListDataset.h | 15 +- tests/framework/datasets/JoinDataset.h | 14 +- tests/framework/datasets/RangeDataset.h | 15 +- tests/framework/datasets/SingletonDataset.h | 20 +- tests/framework/datasets/ZipDataset.h | 19 +- tests/framework/instruments/Instrument.h | 9 +- tests/framework/instruments/Instruments.cpp | 95 +- tests/framework/instruments/Instruments.h | 21 +- .../instruments/InstrumentsStats.cpp | 27 +- .../framework/instruments/InstrumentsStats.h | 9 +- tests/framework/instruments/MaliCounter.cpp | 120 +- tests/framework/instruments/MaliCounter.h | 46 +- tests/framework/instruments/Measurement.h | 39 +- .../instruments/OpenCLMemoryUsage.cpp | 51 +- .../framework/instruments/OpenCLMemoryUsage.h | 23 +- tests/framework/instruments/OpenCLTimer.cpp | 68 +- tests/framework/instruments/PMU.cpp | 14 +- tests/framework/instruments/PMU.h | 12 +- tests/framework/instruments/PMUCounter.cpp | 13 +- tests/framework/instruments/PMUCounter.h | 18 +- .../framework/instruments/SchedulerTimer.cpp | 109 +- tests/framework/instruments/SchedulerTimer.h | 16 +- .../framework/instruments/WallClockTimer.cpp | 55 +- tests/framework/instruments/WallClockTimer.h | 17 +- tests/framework/instruments/hwc.hpp | 77 +- tests/framework/instruments/hwc_names.hpp | 2454 +++-------------- tests/framework/printers/JSONPrinter.cpp | 31 +- tests/framework/printers/JSONPrinter.h | 15 +- tests/framework/printers/PrettyPrinter.cpp | 13 +- tests/framework/printers/PrettyPrinter.h | 10 +- tests/framework/printers/Printer.cpp | 5 +- tests/framework/printers/Printer.h | 10 +- tests/framework/printers/Printers.cpp | 14 +- tests/framework/printers/Printers.h | 10 +- tests/instruments/Helpers.h | 11 +- tests/main.cpp | 128 +- tests/validate_examples/RunExample.cpp | 63 +- tests/validate_examples/ValidateExample.h | 12 +- tests/validate_examples/cl_gemm.cpp | 88 +- tests/validate_examples/graph_convolution.cpp | 199 +- .../graph_depthwiseconvolution.cpp | 189 +- .../graph_fully_connected.cpp | 126 +- .../validate_examples/graph_validate_utils.h | 219 +- tests/validation/CL/AbsLayer.cpp | 31 +- tests/validation/CL/ActivationLayer.cpp | 83 +- tests/validation/CL/ArgMinMax.cpp | 135 +- tests/validation/CL/ArithmeticAddition.cpp | 259 +- tests/validation/CL/ArithmeticDivision.cpp | 132 +- tests/validation/CL/ArithmeticSubtraction.cpp | 288 +- tests/validation/CL/BatchConcatenateLayer.cpp | 64 +- .../validation/CL/BatchNormalizationLayer.cpp | 100 +- tests/validation/CL/BatchToSpaceLayer.cpp | 63 +- tests/validation/CL/BitwiseAnd.cpp | 13 +- tests/validation/CL/BitwiseNot.cpp | 13 +- tests/validation/CL/BitwiseOr.cpp | 13 +- tests/validation/CL/BitwiseXor.cpp | 13 +- tests/validation/CL/BoundingBoxTransform.cpp | 32 +- tests/validation/CL/Cast.cpp | 125 +- tests/validation/CL/ChannelShuffle.cpp | 67 +- tests/validation/CL/Col2Im.cpp | 27 +- tests/validation/CL/Comparisons.cpp | 18 +- .../CL/ConvertFullyConnectedWeights.cpp | 47 +- tests/validation/CL/Convolution3D.cpp | 93 +- tests/validation/CL/ConvolutionLayer.cpp | 438 +-- tests/validation/CL/Copy.cpp | 25 +- tests/validation/CL/CropResize.cpp | 33 +- tests/validation/CL/DeconvolutionLayer.cpp | 644 +++-- tests/validation/CL/DepthConcatenateLayer.cpp | 64 +- tests/validation/CL/DepthConvertLayer.cpp | 186 +- tests/validation/CL/DepthToSpaceLayer.cpp | 43 +- .../CL/DepthwiseConvolutionLayer.cpp | 1012 ++++--- .../CL/DepthwiseConvolutionLayerNative.cpp | 13 +- tests/validation/CL/DequantizationLayer.cpp | 79 +- .../validation/CL/DilatedConvolutionLayer.cpp | 204 +- .../validation/CL/DirectConvolutionLayer.cpp | 409 +-- tests/validation/CL/ElementwiseMax.cpp | 171 +- tests/validation/CL/ElementwiseMin.cpp | 171 +- tests/validation/CL/ElementwisePower.cpp | 113 +- .../validation/CL/ElementwiseSquaredDiff.cpp | 163 +- tests/validation/CL/ExpLayer.cpp | 31 +- tests/validation/CL/FFT.cpp | 97 +- tests/validation/CL/Fill.cpp | 54 +- tests/validation/CL/FillBorder.cpp | 9 +- tests/validation/CL/Flatten.cpp | 35 +- tests/validation/CL/Floor.cpp | 27 +- tests/validation/CL/FullyConnectedLayer.cpp | 354 ++- .../validation/CL/FuseBatchNormalization.cpp | 13 +- tests/validation/CL/GEMM.cpp | 156 +- tests/validation/CL/GEMMLowp.cpp | 255 +- .../CL/GEMMLowpMatrixMultiplyNative.cpp | 11 +- .../CL/GEMMLowpMatrixMultiplyReshaped.cpp | 18 +- .../GEMMLowpMatrixMultiplyReshapedOnlyRHS.cpp | 21 +- ...MLowpMatrixMultiplyReshapedOnlyRhsMMUL.cpp | 27 +- .../CL/GEMMMatrixMultiplyNative.cpp | 13 +- .../CL/GEMMMatrixMultiplyReshaped.cpp | 38 +- .../CL/GEMMMatrixMultiplyReshapedOnlyRHS.cpp | 21 +- .../GEMMMatrixMultiplyReshapedOnlyRhsMMUL.cpp | 11 +- tests/validation/CL/GEMMReshapeLHSMatrix.cpp | 16 +- tests/validation/CL/GEMMReshapeRHSMatrix.cpp | 103 +- tests/validation/CL/Gather.cpp | 6 +- .../validation/CL/GenerateProposalsLayer.cpp | 235 +- tests/validation/CL/GlobalPoolingLayer.cpp | 31 +- .../validation/CL/HeightConcatenateLayer.cpp | 65 +- tests/validation/CL/Im2Col.cpp | 185 +- .../IndirectConv2dAddressPrecalculation.cpp | 10 +- .../CL/IndirectConvolutionLayer.cpp | 19 +- .../CL/InstanceNormalizationLayer.cpp | 30 +- tests/validation/CL/L2NormalizeLayer.cpp | 37 +- tests/validation/CL/LSTMLayer.cpp | 42 +- tests/validation/CL/LSTMLayerQuantized.cpp | 16 +- tests/validation/CL/LogLayer.cpp | 31 +- tests/validation/CL/LogSoftmaxLayer.cpp | 163 +- tests/validation/CL/Logical.cpp | 63 +- tests/validation/CL/MatMul.cpp | 205 +- tests/validation/CL/MatMulKernel.cpp | 686 ++--- .../validation/CL/MatMulLowpNativeKernel.cpp | 388 +-- .../CL/MatMulLowpNativeMMULKernel.cpp | 280 +- .../validation/CL/MatMulNativeMMULKernel.cpp | 454 +-- tests/validation/CL/MaxUnpoolingLayer.cpp | 38 +- .../CL/MeanStdDevNormalizationLayer.cpp | 54 +- tests/validation/CL/NegLayer.cpp | 37 +- tests/validation/CL/NormalizationLayer.cpp | 65 +- .../validation/CL/NormalizePlanarYUVLayer.cpp | 62 +- tests/validation/CL/PReluLayer.cpp | 102 +- tests/validation/CL/PadLayer.cpp | 112 +- tests/validation/CL/Permute.cpp | 79 +- .../validation/CL/PixelWiseMultiplication.cpp | 335 ++- tests/validation/CL/Pooling3dLayer.cpp | 165 +- tests/validation/CL/PoolingLayer.cpp | 293 +- tests/validation/CL/PriorBoxLayer.cpp | 28 +- .../validation/CL/QLSTMLayerNormalization.cpp | 67 +- tests/validation/CL/QuantizationLayer.cpp | 210 +- tests/validation/CL/RNNLayer.cpp | 26 +- tests/validation/CL/ROIAlignLayer.cpp | 50 +- tests/validation/CL/ROIPoolingLayer.cpp | 7 +- tests/validation/CL/Range.cpp | 73 +- tests/validation/CL/ReduceMean.cpp | 88 +- tests/validation/CL/ReductionOperation.cpp | 120 +- tests/validation/CL/ReorgLayer.cpp | 60 +- tests/validation/CL/ReshapeLayer.cpp | 34 +- tests/validation/CL/Reverse.cpp | 204 +- tests/validation/CL/RoundLayer.cpp | 31 +- tests/validation/CL/RsqrtLayer.cpp | 59 +- tests/validation/CL/Scale.cpp | 366 ++- tests/validation/CL/ScatterLayer.cpp | 368 +-- tests/validation/CL/Select.cpp | 17 +- tests/validation/CL/SinLayer.cpp | 31 +- tests/validation/CL/Slice.cpp | 4 +- tests/validation/CL/SoftmaxLayer.cpp | 160 +- tests/validation/CL/SpaceToBatchLayer.cpp | 68 +- tests/validation/CL/SpaceToDepthLayer.cpp | 43 +- tests/validation/CL/Split.cpp | 16 +- tests/validation/CL/StackLayer.cpp | 199 +- tests/validation/CL/StridedSlice.cpp | 6 +- tests/validation/CL/Tile.cpp | 55 +- tests/validation/CL/Transpose.cpp | 53 +- tests/validation/CL/UNIT/CompileContext.cpp | 21 +- tests/validation/CL/UNIT/DynamicTensor.cpp | 73 +- tests/validation/CL/UNIT/Extensions.cpp | 3 +- tests/validation/CL/UNIT/MLGOHeuristics.cpp | 59 +- tests/validation/CL/UNIT/MemoryManager.cpp | 15 +- tests/validation/CL/UNIT/Multithreaded.cpp | 80 +- tests/validation/CL/UNIT/TensorAllocator.cpp | 49 +- tests/validation/CL/UNIT/WeightsRetention.cpp | 18 +- tests/validation/CL/Unstack.cpp | 78 +- tests/validation/CL/WeightsReshape.cpp | 135 +- tests/validation/CL/WidthConcatenateLayer.cpp | 64 +- tests/validation/CL/Winograd.cpp | 9 +- tests/validation/CPP/DFT.cpp | 91 +- .../CPP/DetectionPostProcessLayer.cpp | 236 +- tests/validation/CPP/LUT.cpp | 119 +- .../validation/CPP/NonMaximumSuppression.cpp | 19 +- tests/validation/CPP/Permute.cpp | 82 +- tests/validation/CPP/TopKV.cpp | 150 +- tests/validation/Helpers.cpp | 140 +- tests/validation/Helpers.h | 4 +- tests/validation/NEON/ActivationLayer.cpp | 282 +- tests/validation/NEON/AddMulAdd.cpp | 180 +- tests/validation/NEON/ArgMinMax.cpp | 125 +- tests/validation/NEON/ArithmeticAddition.cpp | 213 +- .../validation/NEON/ArithmeticSubtraction.cpp | 410 +-- .../validation/NEON/BatchConcatenateLayer.cpp | 68 +- .../NEON/BatchNormalizationLayer.cpp | 123 +- tests/validation/NEON/BatchToSpaceLayer.cpp | 65 +- tests/validation/NEON/BitwiseAnd.cpp | 15 +- tests/validation/NEON/BitwiseNot.cpp | 15 +- tests/validation/NEON/BitwiseOr.cpp | 15 +- tests/validation/NEON/BitwiseXor.cpp | 15 +- .../validation/NEON/BoundingBoxTransform.cpp | 37 +- tests/validation/NEON/Cast.cpp | 250 +- tests/validation/NEON/ChannelShuffle.cpp | 70 +- tests/validation/NEON/Col2Im.cpp | 5 +- tests/validation/NEON/Comparisons.cpp | 37 +- .../NEON/ConvertFullyConnectedWeights.cpp | 53 +- tests/validation/NEON/Convolution3D.cpp | 173 +- tests/validation/NEON/ConvolutionLayer.cpp | 1574 ++++++----- tests/validation/NEON/Copy.cpp | 27 +- tests/validation/NEON/CropResize.cpp | 43 +- tests/validation/NEON/DeconvolutionLayer.cpp | 567 ++-- .../validation/NEON/DepthConcatenateLayer.cpp | 68 +- tests/validation/NEON/DepthConvertLayer.cpp | 650 +++-- tests/validation/NEON/DepthToSpaceLayer.cpp | 45 +- .../NEON/DepthwiseConvolutionLayer.cpp | 1293 +++++---- .../NEON/DepthwiseConvolutionLayerNative.cpp | 13 +- tests/validation/NEON/DequantizationLayer.cpp | 117 +- .../NEON/DetectionPostProcessLayer.cpp | 181 +- .../NEON/DilatedConvolutionLayer.cpp | 118 +- .../NEON/DirectConvolutionLayer.cpp | 243 +- .../NEON/ElementwiseAbsoluteValue.cpp | 78 +- tests/validation/NEON/ElementwiseDivision.cpp | 82 +- tests/validation/NEON/ElementwiseExpLayer.cpp | 60 +- .../NEON/ElementwiseKernelSelection.cpp | 138 +- tests/validation/NEON/ElementwiseLog.cpp | 66 +- tests/validation/NEON/ElementwiseMax.cpp | 144 +- tests/validation/NEON/ElementwiseMin.cpp | 145 +- tests/validation/NEON/ElementwiseNegation.cpp | 90 +- tests/validation/NEON/ElementwisePower.cpp | 65 +- tests/validation/NEON/ElementwiseRound.cpp | 61 +- .../validation/NEON/ElementwiseRsqrtLayer.cpp | 82 +- tests/validation/NEON/ElementwiseSin.cpp | 61 +- .../validation/NEON/ElementwiseSquareDiff.cpp | 147 +- tests/validation/NEON/FFT.cpp | 80 +- tests/validation/NEON/Fill.cpp | 56 +- tests/validation/NEON/FillBorder.cpp | 10 +- tests/validation/NEON/Flatten.cpp | 41 +- tests/validation/NEON/Floor.cpp | 33 +- tests/validation/NEON/FullyConnectedLayer.cpp | 468 ++-- .../NEON/FuseBatchNormalization.cpp | 15 +- tests/validation/NEON/GEMM.cpp | 379 +-- tests/validation/NEON/GEMMLowp.cpp | 441 +-- tests/validation/NEON/Gather.cpp | 11 +- .../NEON/GenerateProposalsLayer.cpp | 236 +- tests/validation/NEON/GlobalPoolingLayer.cpp | 21 +- .../NEON/HeightConcatenateLayer.cpp | 47 +- tests/validation/NEON/Im2Col.cpp | 232 +- .../NEON/InstanceNormalizationLayer.cpp | 34 +- tests/validation/NEON/L2NormalizeLayer.cpp | 61 +- tests/validation/NEON/LSTMLayer.cpp | 45 +- tests/validation/NEON/LSTMLayerQuantized.cpp | 13 +- tests/validation/NEON/LogSoftmaxLayer.cpp | 169 +- tests/validation/NEON/Logical.cpp | 31 +- tests/validation/NEON/MatMul.cpp | 136 +- tests/validation/NEON/MaxUnpoolingLayer.cpp | 57 +- .../NEON/MeanStdDevNormalizationLayer.cpp | 71 +- tests/validation/NEON/NormalizationLayer.cpp | 55 +- tests/validation/NEON/PReluLayer.cpp | 184 +- tests/validation/NEON/PadLayer.cpp | 98 +- tests/validation/NEON/Permute.cpp | 101 +- .../NEON/PixelWiseMultiplication.cpp | 808 ++++-- tests/validation/NEON/Pooling3dLayer.cpp | 175 +- tests/validation/NEON/PoolingLayer.cpp | 318 ++- tests/validation/NEON/PriorBoxLayer.cpp | 28 +- .../NEON/QLSTMLayerNormalization.cpp | 92 +- tests/validation/NEON/QuantizationLayer.cpp | 301 +- tests/validation/NEON/RNNLayer.cpp | 32 +- tests/validation/NEON/ROIAlignLayer.cpp | 54 +- tests/validation/NEON/ROIPoolingLayer.cpp | 35 +- tests/validation/NEON/Range.cpp | 70 +- tests/validation/NEON/ReduceMean.cpp | 138 +- tests/validation/NEON/ReductionOperation.cpp | 96 +- tests/validation/NEON/ReorderLayer.cpp | 22 +- tests/validation/NEON/ReorgLayer.cpp | 61 +- tests/validation/NEON/ReshapeLayer.cpp | 39 +- tests/validation/NEON/Reverse.cpp | 190 +- tests/validation/NEON/Scale.cpp | 422 ++- tests/validation/NEON/Scatter.cpp | 430 +-- tests/validation/NEON/Select.cpp | 15 +- tests/validation/NEON/Slice.cpp | 10 +- tests/validation/NEON/SoftmaxLayer.cpp | 261 +- tests/validation/NEON/SpaceToBatchLayer.cpp | 70 +- tests/validation/NEON/SpaceToDepthLayer.cpp | 45 +- tests/validation/NEON/Split.cpp | 20 +- tests/validation/NEON/StackLayer.cpp | 9 +- tests/validation/NEON/StridedSlice.cpp | 12 +- tests/validation/NEON/Tile.cpp | 54 +- tests/validation/NEON/Transpose.cpp | 51 +- tests/validation/NEON/UNIT/DynamicTensor.cpp | 72 +- tests/validation/NEON/UNIT/MemoryManager.cpp | 7 +- tests/validation/NEON/UNIT/RuntimeContext.cpp | 39 +- .../validation/NEON/UNIT/TensorAllocator.cpp | 38 +- tests/validation/NEON/Unstack.cpp | 84 +- .../validation/NEON/WidthConcatenateLayer.cpp | 47 +- tests/validation/UNIT/CPPScheduler.cpp | 20 +- tests/validation/UNIT/DataTypeUtils.cpp | 8 +- tests/validation/UNIT/GPUTarget.cpp | 16 +- tests/validation/UNIT/LifetimeManager.cpp | 5 +- tests/validation/UNIT/SafeIntegerOps.cpp | 7 +- tests/validation/UNIT/SubTensorInfo.cpp | 32 +- tests/validation/UNIT/TensorInfo.cpp | 22 +- tests/validation/UNIT/TensorShape.cpp | 7 +- tests/validation/UNIT/Utils.cpp | 64 +- tests/validation/UNIT/Version.cpp | 3 +- tests/validation/UNIT/WindowIterator.cpp | 175 +- tests/validation/Validation.cpp | 97 +- tests/validation/Validation.h | 252 +- tests/validation/cpu/unit/Context.cpp | 17 +- tests/validation/cpu/unit/Queue.cpp | 17 +- tests/validation/cpu/unit/Tensor.cpp | 26 +- tests/validation/cpu/unit/TensorPack.cpp | 18 +- .../fixtures/ActivationLayerFixture.h | 71 +- tests/validation/fixtures/AddMulAddFixture.h | 106 +- tests/validation/fixtures/ArgMinMaxFixture.h | 58 +- .../fixtures/ArithmeticDivisionFixture.h | 32 +- .../fixtures/ArithmeticOperationsFixture.h | 232 +- .../fixtures/BatchNormalizationLayerFixture.h | 59 +- .../BatchNormalizationLayerFusionFixture.h | 82 +- .../fixtures/BatchToSpaceLayerFixture.h | 46 +- tests/validation/fixtures/BitwiseAndFixture.h | 17 +- tests/validation/fixtures/BitwiseNotFixture.h | 15 +- tests/validation/fixtures/BitwiseOrFixture.h | 17 +- tests/validation/fixtures/BitwiseXorFixture.h | 17 +- .../fixtures/BoundingBoxTransformFixture.h | 74 +- tests/validation/fixtures/CastFixture.h | 28 +- .../fixtures/ChannelShuffleLayerFixture.h | 13 +- tests/validation/fixtures/Col2ImFixture.h | 42 +- tests/validation/fixtures/ComparisonFixture.h | 68 +- .../fixtures/ComputeAllAnchorsFixture.h | 27 +- .../fixtures/ConcatenateLayerFixture.h | 44 +- .../ConvertFullyConnectedWeightsFixture.h | 25 +- .../fixtures/ConvolutionLayerFixture.h | 658 +++-- tests/validation/fixtures/CopyFixture.h | 18 +- .../fixtures/CpuActivationFixture.h | 132 +- .../fixtures/CpuArithmeticOperationsFixture.h | 128 +- .../fixtures/CpuDepthwiseConv2dFixture.h | 4 +- .../fixtures/CpuDequantizeFixture.h | 15 +- .../fixtures/CpuElementwiseFixture.h | 114 +- .../fixtures/CpuFullyConnectedFixture.h | 42 +- .../validation/fixtures/CpuGEMMLowpFixture.h | 187 +- .../fixtures/CpuGemmConv2dFixture.h | 140 +- .../CpuMeanStdDevNormalizationFixture.h | 17 +- tests/validation/fixtures/CpuMulFixture.h | 156 +- tests/validation/fixtures/CpuPool2dFixture.h | 2 +- .../validation/fixtures/CpuQuantizeFixture.h | 52 +- tests/validation/fixtures/CpuSoftmaxFixture.h | 91 +- .../validation/fixtures/CpuTransposeFixture.h | 87 +- tests/validation/fixtures/CropResizeFixture.h | 58 +- .../fixtures/DeconvolutionLayerFixture.h | 253 +- .../fixtures/DepthConvertLayerFixture.h | 49 +- .../fixtures/DepthToSpaceLayerFixture.h | 42 +- .../DepthwiseConvolutionLayerFixture.h | 397 ++- .../fixtures/DequantizationLayerFixture.h | 23 +- .../fixtures/DirectConvolution3DFixture.h | 148 +- .../fixtures/DirectConvolutionLayerFixture.h | 237 +- .../validation/fixtures/DropoutLayerFixture.h | 13 +- .../fixtures/ElementwiseOperationsFixture.h | 693 +++-- .../fixtures/ElementwiseUnaryFixture.h | 169 +- tests/validation/fixtures/FFTFixture.h | 96 +- tests/validation/fixtures/FillFixture.h | 23 +- .../validation/fixtures/FlattenLayerFixture.h | 20 +- tests/validation/fixtures/FloorFixture.h | 11 +- .../fixtures/FullyConnectedLayerFixture.h | 316 ++- .../fixtures/FuseBatchNormalizationFixture.h | 71 +- tests/validation/fixtures/GEMMFixture.h | 1128 +++++--- .../fixtures/GEMMInterleave4x4Fixture.h | 23 +- tests/validation/fixtures/GEMMLowpFixture.h | 1279 ++++++--- .../fixtures/GEMMReshapeLHSMatrixFixture.h | 46 +- .../fixtures/GEMMReshapeRHSMatrixFixture.h | 35 +- .../fixtures/GEMMTranspose1xWFixture.h | 24 +- tests/validation/fixtures/GatherFixture.h | 39 +- tests/validation/fixtures/Im2ColFixture.h | 150 +- ...directConv2dAddressPrecalculationFixture.h | 45 +- .../InstanceNormalizationLayerFixture.h | 30 +- .../fixtures/L2NormalizeLayerFixture.h | 29 +- tests/validation/fixtures/LSTMLayerFixture.h | 350 ++- tests/validation/fixtures/LogicalFixture.h | 49 +- tests/validation/fixtures/MatMulFixture.h | 34 +- .../validation/fixtures/MatMulKernelFixture.h | 182 +- .../fixtures/MaxUnpoolingLayerFixture.h | 64 +- .../MeanStdDevNormalizationLayerFixture.h | 21 +- .../fixtures/NonMaxSuppressionFixture.h | 41 +- .../fixtures/NormalizationLayerFixture.h | 47 +- .../fixtures/NormalizePlanarYUVLayerFixture.h | 65 +- tests/validation/fixtures/PadLayerFixture.h | 41 +- tests/validation/fixtures/PermuteFixture.h | 9 +- .../fixtures/PixelWiseMultiplicationFixture.h | 206 +- .../fixtures/Pooling3dLayerFixture.h | 83 +- .../validation/fixtures/PoolingLayerFixture.h | 139 +- .../fixtures/PriorBoxLayerFixture.h | 30 +- .../fixtures/QLSTMLayerNormalizationFixture.h | 37 +- .../fixtures/QuantizationLayerFixture.h | 41 +- tests/validation/fixtures/RNNLayerFixture.h | 63 +- .../fixtures/ROIAlignLayerFixture.h | 90 +- .../fixtures/ROIPoolingLayerFixture.h | 80 +- tests/validation/fixtures/RangeFixture.h | 27 +- tests/validation/fixtures/ReduceMeanFixture.h | 78 +- .../fixtures/ReductionOperationFixture.h | 67 +- tests/validation/fixtures/ReorderFixture.h | 49 +- tests/validation/fixtures/ReorgLayerFixture.h | 17 +- .../validation/fixtures/ReshapeLayerFixture.h | 33 +- tests/validation/fixtures/ReverseFixture.h | 42 +- tests/validation/fixtures/ScaleFixture.h | 140 +- .../validation/fixtures/ScatterLayerFixture.h | 133 +- tests/validation/fixtures/ScharrFixture.h | 35 +- tests/validation/fixtures/SelectFixture.h | 17 +- .../fixtures/SliceOperationsFixtures.h | 50 +- .../validation/fixtures/SoftmaxLayerFixture.h | 73 +- .../validation/fixtures/SpaceToBatchFixture.h | 86 +- .../validation/fixtures/SpaceToDepthFixture.h | 43 +- tests/validation/fixtures/SplitFixture.h | 78 +- tests/validation/fixtures/StackLayerFixture.h | 21 +- tests/validation/fixtures/TileFixture.h | 15 +- tests/validation/fixtures/TransposeFixture.h | 11 +- .../validation/fixtures/UNIT/ContextFixture.h | 20 +- .../fixtures/UNIT/DynamicTensorFixture.h | 78 +- .../fixtures/UNIT/MemoryManagerFixture.h | 93 +- tests/validation/fixtures/UNIT/QueueFixture.h | 14 +- .../validation/fixtures/UNIT/TensorFixture.h | 50 +- .../fixtures/UNIT/TensorPackFixture.h | 30 +- .../fixtures/UNIT/WeightsRetentionFixture.h | 52 +- tests/validation/fixtures/UnstackFixture.h | 23 +- .../fixtures/WeightsReshapeFixture.h | 45 +- .../WinogradConvolutionLayerFixture.h | 325 ++- tests/validation/gpu/unit/Context.cpp | 23 +- tests/validation/gpu/unit/Queue.cpp | 24 +- tests/validation/gpu/unit/Tensor.cpp | 30 +- tests/validation/gpu/unit/TensorPack.cpp | 22 +- .../validation/helpers/ActivationHelpers.cpp | 59 +- tests/validation/helpers/ActivationHelpers.h | 8 +- .../reference/AbsoluteDifference.cpp | 21 +- tests/validation/reference/Accumulate.cpp | 41 +- .../validation/reference/ActivationLayer.cpp | 4 +- .../reference/ArithmeticDivision.cpp | 34 +- .../reference/ArithmeticOperations.cpp | 145 +- .../reference/ArithmeticOperations.h | 20 +- .../reference/BatchNormalizationLayer.cpp | 46 +- .../reference/BatchNormalizationLayer.h | 17 +- .../reference/BatchToSpaceLayer.cpp | 48 +- .../validation/reference/BatchToSpaceLayer.h | 14 +- tests/validation/reference/BitwiseAnd.cpp | 6 +- tests/validation/reference/BitwiseNot.cpp | 6 +- tests/validation/reference/BitwiseOr.cpp | 6 +- tests/validation/reference/BitwiseXor.cpp | 6 +- .../reference/BoundingBoxTransform.cpp | 37 +- .../reference/BoundingBoxTransform.h | 17 +- tests/validation/reference/ChannelShuffle.cpp | 23 +- tests/validation/reference/Col2Im.cpp | 38 +- .../validation/reference/ColorConvertHelper.h | 406 +-- tests/validation/reference/Comparisons.cpp | 46 +- .../reference/ComputeAllAnchors.cpp | 13 +- .../validation/reference/ComputeAllAnchors.h | 9 +- .../validation/reference/ConcatenateLayer.cpp | 70 +- tests/validation/reference/Conv3D.cpp | 133 +- tests/validation/reference/Conv3D.h | 13 +- .../ConvertFullyConnectedWeights.cpp | 28 +- .../reference/ConvertFullyConnectedWeights.h | 12 +- tests/validation/reference/Convolution3d.h | 119 +- .../validation/reference/ConvolutionLayer.cpp | 172 +- tests/validation/reference/ConvolutionLayer.h | 12 +- tests/validation/reference/Copy.cpp | 14 +- tests/validation/reference/CropResize.cpp | 271 +- tests/validation/reference/CropResize.h | 16 +- tests/validation/reference/DFT.cpp | 78 +- .../reference/DeconvolutionLayer.cpp | 82 +- .../validation/reference/DeconvolutionLayer.h | 16 +- .../reference/DepthConcatenateLayer.cpp | 74 +- .../reference/DepthConvertLayer.cpp | 265 +- .../validation/reference/DepthConvertLayer.h | 23 +- .../reference/DepthToSpaceLayer.cpp | 26 +- .../reference/DepthwiseConvolutionLayer.cpp | 142 +- .../reference/DepthwiseConvolutionLayer.h | 18 +- .../DepthwiseSeparableConvolutionLayer.h | 19 +- .../reference/DequantizationLayer.cpp | 28 +- .../reference/ElementwiseOperations.cpp | 146 +- .../reference/ElementwiseOperations.h | 20 +- .../validation/reference/ElementwiseUnary.cpp | 53 +- tests/validation/reference/Erode.cpp | 17 +- tests/validation/reference/FlattenLayer.cpp | 4 +- tests/validation/reference/Floor.cpp | 10 +- .../reference/FullyConnectedLayer.cpp | 134 +- .../reference/FullyConnectedLayer.h | 8 +- .../reference/FuseBatchNormalization.cpp | 78 +- .../reference/FuseBatchNormalization.h | 29 +- tests/validation/reference/GEMM.cpp | 94 +- tests/validation/reference/GEMM.h | 17 +- .../validation/reference/GEMMInterleave4x4.h | 29 +- .../reference/GEMMInterleaveBlocked.h | 28 +- tests/validation/reference/GEMMLowp.cpp | 314 ++- tests/validation/reference/GEMMLowp.h | 64 +- .../reference/GEMMReshapeLHSMatrix.cpp | 48 +- .../reference/GEMMReshapeLHSMatrix.h | 11 +- .../reference/GEMMReshapeRHSMatrix.cpp | 50 +- .../reference/GEMMReshapeRHSMatrix.h | 11 +- tests/validation/reference/GEMMTranspose1xW.h | 21 +- tests/validation/reference/Gather.cpp | 90 +- tests/validation/reference/Gather.h | 9 +- tests/validation/reference/Im2Col.cpp | 121 +- tests/validation/reference/Im2Col.h | 9 +- .../IndirectConv2dAddressPrecalculation.cpp | 19 +- .../IndirectConv2dAddressPrecalculation.h | 13 +- .../reference/InstanceNormalizationLayer.cpp | 24 +- .../validation/reference/L2NormalizeLayer.cpp | 28 +- tests/validation/reference/Logical.cpp | 46 +- .../reference/MaxUnpoolingLayer.cpp | 76 +- .../validation/reference/MaxUnpoolingLayer.h | 16 +- tests/validation/reference/MeanStdDev.cpp | 8 +- tests/validation/reference/MinMaxLocation.cpp | 28 +- .../reference/NonMaxSuppression.cpp | 73 +- .../validation/reference/NonMaxSuppression.h | 16 +- .../reference/NonMaximaSuppression.cpp | 30 +- .../reference/NonMaximaSuppression.h | 9 +- .../reference/NormalizationLayer.cpp | 45 +- .../reference/NormalizePlanarYUVLayer.cpp | 29 +- .../reference/NormalizePlanarYUVLayer.h | 11 +- tests/validation/reference/PadLayer.cpp | 102 +- tests/validation/reference/PadLayer.h | 14 +- tests/validation/reference/Permute.cpp | 2 +- .../reference/PixelWiseMultiplication.cpp | 188 +- .../reference/PixelWiseMultiplication.h | 16 +- tests/validation/reference/Pooling3dLayer.cpp | 69 +- tests/validation/reference/Pooling3dLayer.h | 22 +- tests/validation/reference/PoolingLayer.cpp | 123 +- tests/validation/reference/PoolingLayer.h | 20 +- tests/validation/reference/PriorBoxLayer.cpp | 46 +- tests/validation/reference/PriorBoxLayer.h | 13 +- .../reference/QLSTMLayerNormalization.cpp | 39 +- .../reference/QLSTMLayerNormalization.h | 12 +- .../reference/QuantizationLayer.cpp | 66 +- .../validation/reference/QuantizationLayer.h | 11 +- tests/validation/reference/ROIAlignLayer.cpp | 86 +- tests/validation/reference/ROIAlignLayer.h | 14 +- .../validation/reference/ROIPoolingLayer.cpp | 53 +- tests/validation/reference/ROIPoolingLayer.h | 14 +- tests/validation/reference/Range.cpp | 16 +- .../reference/ReductionOperation.cpp | 226 +- .../validation/reference/ReductionOperation.h | 18 +- tests/validation/reference/Reorder.cpp | 85 +- tests/validation/reference/Reorder.h | 6 +- tests/validation/reference/ReorgLayer.cpp | 16 +- tests/validation/reference/Reverse.cpp | 52 +- tests/validation/reference/Scale.cpp | 155 +- tests/validation/reference/Scale.h | 20 +- tests/validation/reference/ScatterLayer.cpp | 105 +- tests/validation/reference/ScatterLayer.h | 18 +- tests/validation/reference/Select.cpp | 23 +- .../validation/reference/SliceOperations.cpp | 98 +- tests/validation/reference/SliceOperations.h | 16 +- tests/validation/reference/SoftmaxLayer.cpp | 248 +- tests/validation/reference/SoftmaxLayer.h | 5 +- tests/validation/reference/SpaceToBatch.cpp | 40 +- tests/validation/reference/SpaceToBatch.h | 13 +- tests/validation/reference/SpaceToDepth.cpp | 22 +- tests/validation/reference/StackLayer.cpp | 46 +- tests/validation/reference/StackLayer.h | 13 +- tests/validation/reference/TableLookup.cpp | 4 +- tests/validation/reference/Tile.cpp | 21 +- tests/validation/reference/Transpose.cpp | 17 +- tests/validation/reference/Unstack.cpp | 35 +- tests/validation/reference/Unstack.h | 11 +- tests/validation/reference/Utils.cpp | 48 +- tests/validation/reference/Utils.h | 30 +- .../reference/UtilsQuantizedAsymm.h | 22 +- tests/validation/reference/WeightsReshape.cpp | 32 +- tests/validation/reference/WeightsReshape.h | 13 +- tests/validation/reference/Winograd.cpp | 412 +-- tests/validation/reference/Winograd.h | 20 +- .../experimental/operators/CpuActivation.cpp | 143 +- .../runtime/experimental/operators/CpuAdd.cpp | 81 +- .../operators/CpuDepthwiseConv2d.cpp | 4 +- .../experimental/operators/CpuDequantize.cpp | 46 +- .../experimental/operators/CpuElementwise.cpp | 134 +- .../operators/CpuFullyConnected.cpp | 32 +- .../experimental/operators/CpuGEMMLowp.cpp | 130 +- .../experimental/operators/CpuGemmConv2d.cpp | 52 +- .../operators/CpuMeanStdDevNormalization.cpp | 63 +- .../runtime/experimental/operators/CpuMul.cpp | 204 +- .../experimental/operators/CpuPool2d.cpp | 58 +- .../experimental/operators/CpuQuantize.cpp | 30 +- .../experimental/operators/CpuSoftmax.cpp | 9 +- .../runtime/experimental/operators/CpuSub.cpp | 82 +- .../experimental/operators/CpuTranspose.cpp | 42 +- 714 files changed, 36813 insertions(+), 27669 deletions(-) delete mode 100644 tests/datasets/OpticalFlowDataset.h diff --git a/tests/AssetsLibrary.cpp b/tests/AssetsLibrary.cpp index 5eb81797049..1e23dbc5c7c 100644 --- a/tests/AssetsLibrary.cpp +++ b/tests/AssetsLibrary.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020, 2023-2024 Arm Limited. + * Copyright (c) 2017-2020, 2023-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -23,10 +23,11 @@ */ #include "tests/AssetsLibrary.h" -#include "Utils.h" +#include "arm_compute/core/ITensor.h" + #include "utils/TypePrinter.h" -#include "arm_compute/core/ITensor.h" +#include "Utils.h" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" @@ -54,15 +55,17 @@ template ::value, int>:: void rgb_to_luminance(const RawTensor &src, RawTensor &dst) { // Ensure in/out tensors have same image dimensions (independent of element size and number of channels) - ARM_COMPUTE_ERROR_ON_MSG(src.num_elements() != dst.num_elements(), "Input and output images must have equal dimensions"); + ARM_COMPUTE_ERROR_ON_MSG(src.num_elements() != dst.num_elements(), + "Input and output images must have equal dimensions"); const size_t num_elements = dst.num_elements(); // Currently, input is always RGB888 (3 U8 channels per element). Output can be U8, U16/S16 or U32 // Note that src.data()[i] returns pointer to first channel of element[i], so RGB values have [0,1,2] offsets - for(size_t i = 0, j = 0; j < num_elements; i += 3, ++j) + for (size_t i = 0, j = 0; j < num_elements; i += 3, ++j) { - reinterpret_cast(dst.data())[j] = 0.2126f * src.data()[i] + 0.7152f * src.data()[i + 1] + 0.0722f * src.data()[i + 2]; + reinterpret_cast(dst.data())[j] = + 0.2126f * src.data()[i] + 0.7152f * src.data()[i + 1] + 0.0722f * src.data()[i + 2]; } } @@ -72,7 +75,7 @@ void extract_r_from_rgb(const RawTensor &src, RawTensor &dst) const size_t num_elements = dst.num_elements(); - for(size_t i = 0, j = 0; j < num_elements; i += 3, ++j) + for (size_t i = 0, j = 0; j < num_elements; i += 3, ++j) { dst.data()[j] = src.data()[i]; } @@ -84,7 +87,7 @@ void extract_g_from_rgb(const RawTensor &src, RawTensor &dst) const size_t num_elements = dst.num_elements(); - for(size_t i = 1, j = 0; j < num_elements; i += 3, ++j) + for (size_t i = 1, j = 0; j < num_elements; i += 3, ++j) { dst.data()[j] = src.data()[i]; } @@ -96,7 +99,7 @@ void extract_b_from_rgb(const RawTensor &src, RawTensor &dst) const size_t num_elements = dst.num_elements(); - for(size_t i = 2, j = 0; j < num_elements; i += 3, ++j) + for (size_t i = 2, j = 0; j < num_elements; i += 3, ++j) { dst.data()[j] = src.data()[i]; } @@ -104,7 +107,7 @@ void extract_b_from_rgb(const RawTensor &src, RawTensor &dst) void discard_comments(std::ifstream &fs) { - while(fs.peek() == '#') + while (fs.peek() == '#') { fs.ignore(std::numeric_limits::max(), '\n'); } @@ -112,11 +115,11 @@ void discard_comments(std::ifstream &fs) void discard_comments_and_spaces(std::ifstream &fs) { - while(true) + while (true) { discard_comments(fs); - if(isspace(fs.peek()) == 0) + if (isspace(fs.peek()) == 0) { break; } @@ -128,10 +131,10 @@ void discard_comments_and_spaces(std::ifstream &fs) std::tuple parse_netpbm_format_header(std::ifstream &fs, char number) { // check file type magic number is valid - std::array magic_number{ { 0 } }; + std::array magic_number{{0}}; fs >> magic_number[0] >> magic_number[1]; - if(magic_number[0] != 'P' || magic_number[1] != number) + if (magic_number[0] != 'P' || magic_number[1] != number) { throw std::runtime_error("File type magic number not supported"); } @@ -151,19 +154,19 @@ std::tuple parse_netpbm_format_header(std::ifst int max_value = 0; fs >> max_value; - if(!fs.good()) + if (!fs.good()) { throw std::runtime_error("Cannot read image dimensions"); } - if(max_value != 255) + if (max_value != 255) { throw std::runtime_error("RawTensor doesn't have 8-bit values"); } discard_comments(fs); - if(isspace(fs.peek()) == 0) + if (isspace(fs.peek()) == 0) { throw std::runtime_error("Invalid image header"); } @@ -190,7 +193,7 @@ void check_image_size(std::ifstream &fs, size_t raw_size) const size_t end_position = fs.tellg(); fs.seekg(current_position, std::ios_base::beg); - if((end_position - current_position) < raw_size) + if ((end_position - current_position) < raw_size) { throw std::runtime_error("Not enough data in file"); } @@ -200,7 +203,7 @@ void read_image_buffer(std::ifstream &fs, RawTensor &raw) { fs.read(reinterpret_cast(raw.data()), raw.size()); - if(!fs.good()) + if (!fs.good()) { throw std::runtime_error("Failure while reading image buffer"); } @@ -210,7 +213,7 @@ RawTensor load_ppm(const std::string &path) { std::ifstream file(path, std::ios::in | std::ios::binary); - if(!file.good()) + if (!file.good()) { throw framework::FileNotFound("Could not load PPM image: " + path); } @@ -232,7 +235,7 @@ RawTensor load_pgm(const std::string &path) { std::ifstream file(path, std::ios::in | std::ios::binary); - if(!file.good()) + if (!file.good()) { throw framework::FileNotFound("Could not load PGM image: " + path); } @@ -252,8 +255,7 @@ RawTensor load_pgm(const std::string &path) } // namespace AssetsLibrary::AssetsLibrary(std::string path, std::random_device::result_type seed) //NOLINT - : _library_path(std::move(path)), - _seed{ seed } + : _library_path(std::move(path)), _seed{seed} { } @@ -292,15 +294,11 @@ void AssetsLibrary::fill(RawTensor &raw, const std::string &name, Format format, const AssetsLibrary::Loader &AssetsLibrary::get_loader(const std::string &extension) const { - static std::unordered_map loaders = - { - { "ppm", load_ppm }, - { "pgm", load_pgm } - }; + static std::unordered_map loaders = {{"ppm", load_ppm}, {"pgm", load_pgm}}; const auto it = loaders.find(extension); - if(it != loaders.end()) + if (it != loaders.end()) { return it->second; } @@ -312,17 +310,15 @@ const AssetsLibrary::Loader &AssetsLibrary::get_loader(const std::string &extens const AssetsLibrary::Converter &AssetsLibrary::get_converter(Format src, Format dst) const { - static std::map, Converter> converters = - { - { std::make_pair(Format::RGB888, Format::U8), rgb_to_luminance }, - { std::make_pair(Format::RGB888, Format::U16), rgb_to_luminance }, - { std::make_pair(Format::RGB888, Format::S16), rgb_to_luminance }, - { std::make_pair(Format::RGB888, Format::U32), rgb_to_luminance } - }; + static std::map, Converter> converters = { + {std::make_pair(Format::RGB888, Format::U8), rgb_to_luminance}, + {std::make_pair(Format::RGB888, Format::U16), rgb_to_luminance}, + {std::make_pair(Format::RGB888, Format::S16), rgb_to_luminance}, + {std::make_pair(Format::RGB888, Format::U32), rgb_to_luminance}}; const auto it = converters.find(std::make_pair(src, dst)); - if(it != converters.end()) + if (it != converters.end()) { return it->second; } @@ -340,7 +336,7 @@ const AssetsLibrary::Converter &AssetsLibrary::get_converter(DataType src, Forma const auto it = converters.find(std::make_pair(src, dst)); - if(it != converters.end()) + if (it != converters.end()) { return it->second; } @@ -358,7 +354,7 @@ const AssetsLibrary::Converter &AssetsLibrary::get_converter(DataType src, DataT const auto it = converters.find(std::make_pair(src, dst)); - if(it != converters.end()) + if (it != converters.end()) { return it->second; } @@ -376,7 +372,7 @@ const AssetsLibrary::Converter &AssetsLibrary::get_converter(Format src, DataTyp const auto it = converters.find(std::make_pair(src, dst)); - if(it != converters.end()) + if (it != converters.end()) { return it->second; } @@ -390,16 +386,14 @@ const AssetsLibrary::Converter &AssetsLibrary::get_converter(Format src, DataTyp const AssetsLibrary::Extractor &AssetsLibrary::get_extractor(Format format, Channel channel) const { - static std::map, Extractor> extractors = - { - { std::make_pair(Format::RGB888, Channel::R), extract_r_from_rgb }, - { std::make_pair(Format::RGB888, Channel::G), extract_g_from_rgb }, - { std::make_pair(Format::RGB888, Channel::B), extract_b_from_rgb } - }; + static std::map, Extractor> extractors = { + {std::make_pair(Format::RGB888, Channel::R), extract_r_from_rgb}, + {std::make_pair(Format::RGB888, Channel::G), extract_g_from_rgb}, + {std::make_pair(Format::RGB888, Channel::B), extract_b_from_rgb}}; const auto it = extractors.find(std::make_pair(format, channel)); - if(it != extractors.end()) + if (it != extractors.end()) { return it->second; } @@ -430,14 +424,14 @@ const RawTensor &AssetsLibrary::find_or_create_raw_tensor(const std::string &nam const RawTensor *ptr = _cache.find(std::forward_as_tuple(name, format)); - if(ptr != nullptr) + if (ptr != nullptr) { return *ptr; } RawTensor raw = load_image(name); - if(raw.format() != format) + if (raw.format() != format) { //FIXME: Remove unnecessary copy RawTensor dst(raw.shape(), format); @@ -454,7 +448,7 @@ const RawTensor &AssetsLibrary::find_or_create_raw_tensor(const std::string &nam const RawTensor *ptr = _cache.find(std::forward_as_tuple(name, format, channel)); - if(ptr != nullptr) + if (ptr != nullptr) { return *ptr; } @@ -524,7 +518,8 @@ RawTensor AssetsLibrary::get(const std::string &name, Format format, Channel cha namespace detail { -inline void validate_npy_header(std::ifstream &stream, const std::string &expect_typestr, const TensorShape &expect_shape) +inline void +validate_npy_header(std::ifstream &stream, const std::string &expect_typestr, const TensorShape &expect_shape) { ARM_COMPUTE_UNUSED(expect_typestr); ARM_COMPUTE_UNUSED(expect_shape); @@ -543,16 +538,16 @@ inline void validate_npy_header(std::ifstream &stream, const std::string &expect // Validate tensor shape ARM_COMPUTE_ERROR_ON_MSG(shape.size() != expect_shape.num_dimensions(), "Tensor ranks mismatch"); - if(fortran_order) + if (fortran_order) { - for(size_t i = 0; i < shape.size(); ++i) + for (size_t i = 0; i < shape.size(); ++i) { ARM_COMPUTE_ERROR_ON_MSG(expect_shape[i] != shape[i], "Tensor dimensions mismatch"); } } else { - for(size_t i = 0; i < shape.size(); ++i) + for (size_t i = 0; i < shape.size(); ++i) { ARM_COMPUTE_ERROR_ON_MSG(expect_shape[i] != shape[shape.size() - i - 1], "Tensor dimensions mismatch"); } diff --git a/tests/AssetsLibrary.h b/tests/AssetsLibrary.h index dedad5227f9..2cf3b1256b9 100644 --- a/tests/AssetsLibrary.h +++ b/tests/AssetsLibrary.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2022, 2024 Arm Limited. + * Copyright (c) 2017-2022, 2024-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -31,11 +31,12 @@ #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" #include "arm_compute/core/Window.h" + #include "support/Random.h" +#include "tests/framework/Exceptions.h" #include "tests/RawTensor.h" #include "tests/TensorCache.h" #include "tests/Utils.h" -#include "tests/framework/Exceptions.h" #include "utils/Utils.h" #include @@ -436,7 +437,7 @@ class AssetsLibrary final const Converter &get_converter(Format src, DataType dst) const; const Converter &get_converter(DataType src, DataType dst) const; const Extractor &get_extractor(Format format, Channel) const; - const Loader &get_loader(const std::string &extension) const; + const Loader &get_loader(const std::string &extension) const; /** Creates a raw tensor from the specified image. * @@ -484,16 +485,13 @@ class AssetsLibrary final namespace detail { template -inline std::vector> convert_range_pair(const std::vector &excluded_range_pairs) +inline std::vector> +convert_range_pair(const std::vector &excluded_range_pairs) { std::vector> converted; - std::transform(excluded_range_pairs.begin(), - excluded_range_pairs.end(), - std::back_inserter(converted), - [](const AssetsLibrary::RangePair & p) - { - return std::pair(static_cast(p.first), static_cast(p.second)); - }); + std::transform(excluded_range_pairs.begin(), excluded_range_pairs.end(), std::back_inserter(converted), + [](const AssetsLibrary::RangePair &p) + { return std::pair(static_cast(p.first), static_cast(p.second)); }); return converted; } @@ -509,32 +507,36 @@ void validate_npy_header(std::ifstream &stream, const std::string &expect_typest } // namespace detail template -void AssetsLibrary::fill_borders_with_garbage(T &&tensor, D &&distribution, std::random_device::result_type seed_offset) const +void AssetsLibrary::fill_borders_with_garbage(T &&tensor, + D &&distribution, + std::random_device::result_type seed_offset) const { const PaddingSize padding_size = tensor.padding(); Window window; window.set(0, Window::Dimension(-padding_size.left, tensor.shape()[0] + padding_size.right, 1)); - if(tensor.shape().num_dimensions() > 1) + if (tensor.shape().num_dimensions() > 1) { window.set(1, Window::Dimension(-padding_size.top, tensor.shape()[1] + padding_size.bottom, 1)); } std::mt19937 gen(_seed + seed_offset); - execute_window_loop(window, [&](const Coordinates & id) - { - TensorShape shape = tensor.shape(); - - // If outside of valid region - if(id.x() < 0 || id.x() >= static_cast(shape.x()) || id.y() < 0 || id.y() >= static_cast(shape.y())) - { - using ResultType = typename std::remove_reference::type::result_type; - const ResultType value = distribution(gen); - void *const out_ptr = tensor(id); - store_value_with_data_type(out_ptr, value, tensor.data_type()); - } - }); + execute_window_loop(window, + [&](const Coordinates &id) + { + TensorShape shape = tensor.shape(); + + // If outside of valid region + if (id.x() < 0 || id.x() >= static_cast(shape.x()) || id.y() < 0 || + id.y() >= static_cast(shape.y())) + { + using ResultType = typename std::remove_reference::type::result_type; + const ResultType value = distribution(gen); + void *const out_ptr = tensor(id); + store_value_with_data_type(out_ptr, value, tensor.data_type()); + } + }); } template @@ -547,20 +549,20 @@ void AssetsLibrary::fill_boxes(T &&tensor, D &&distribution, std::random_device: TensorShape shape(tensor.shape()); const uint32_t num_boxes = tensor.num_elements() / 4; // Iterate over all elements - DistributionType size_dist{ ResultType(0.f), ResultType(1.f) }; - for(uint32_t element_idx = 0; element_idx < num_boxes * 4; element_idx += 4) + DistributionType size_dist{ResultType(0.f), ResultType(1.f)}; + for (uint32_t element_idx = 0; element_idx < num_boxes * 4; element_idx += 4) { - const ResultType delta = size_dist(gen); - const ResultType epsilon = size_dist(gen); - const ResultType left = distribution(gen); - const ResultType top = distribution(gen); - const ResultType right = left + delta; - const ResultType bottom = top + epsilon; + const ResultType delta = size_dist(gen); + const ResultType epsilon = size_dist(gen); + const ResultType left = distribution(gen); + const ResultType top = distribution(gen); + const ResultType right = left + delta; + const ResultType bottom = top + epsilon; const std::tuple box(left, top, right, bottom); - Coordinates x1 = index2coord(shape, element_idx); - Coordinates y1 = index2coord(shape, element_idx + 1); - Coordinates x2 = index2coord(shape, element_idx + 2); - Coordinates y2 = index2coord(shape, element_idx + 3); + Coordinates x1 = index2coord(shape, element_idx); + Coordinates y1 = index2coord(shape, element_idx + 1); + Coordinates x2 = index2coord(shape, element_idx + 2); + Coordinates y2 = index2coord(shape, element_idx + 3); ResultType &target_value_x1 = reinterpret_cast(tensor(x1))[0]; ResultType &target_value_y1 = reinterpret_cast(tensor(y1))[0]; ResultType &target_value_x2 = reinterpret_cast(tensor(x2))[0]; @@ -581,7 +583,7 @@ void AssetsLibrary::fill(std::vector &vec, D &&distribution, std::random_devi using ResultType = typename std::remove_reference::type::result_type; std::mt19937 gen(_seed + seed_offset); - for(size_t i = 0; i < vec.size(); ++i) + for (size_t i = 0; i < vec.size(); ++i) { const ResultType value = distribution(gen); @@ -594,7 +596,7 @@ void AssetsLibrary::fill_with_generator(T &&tensor, const GeneratorFunctionType< { const bool is_nhwc = tensor.data_layout() == DataLayout::NHWC; TensorShape shape(tensor.shape()); - if(is_nhwc) + if (is_nhwc) { // Ensure that the equivalent tensors will be filled for both data layouts permute(shape, PermutationVector(1U, 2U, 0U)); @@ -602,18 +604,18 @@ void AssetsLibrary::fill_with_generator(T &&tensor, const GeneratorFunctionType< // Iterate over all elements const uint32_t num_elements = tensor.num_elements(); - for(uint32_t element_idx = 0; element_idx < num_elements; ++element_idx) + for (uint32_t element_idx = 0; element_idx < num_elements; ++element_idx) { Coordinates id = index2coord(shape, element_idx); - if(is_nhwc) + if (is_nhwc) { // Write in the correct id for permuted shapes permute(id, PermutationVector(2U, 0U, 1U)); } // Iterate over all channels - for(int channel = 0; channel < tensor.num_channels(); ++channel) + for (int channel = 0; channel < tensor.num_channels(); ++channel) { const ResultType value = generate_value(); ResultType &target_value = reinterpret_cast(tensor(id))[channel]; @@ -648,7 +650,7 @@ void AssetsLibrary::fill_static_values(T &&tensor, const std::vector & const DataType value = *it; ++it; - if(it == values.end()) + if (it == values.end()) { it = values.begin(); } @@ -664,7 +666,7 @@ void AssetsLibrary::fill(RawTensor &raw, D &&distribution, std::random_device::r { std::mt19937 gen(_seed + seed_offset); - for(size_t offset = 0; offset < raw.size(); offset += raw.element_size()) + for (size_t offset = 0; offset < raw.size(); offset += raw.element_size()) { using ResultType = typename std::remove_reference::type::result_type; const ResultType value = distribution(gen); @@ -678,7 +680,7 @@ void AssetsLibrary::fill(T &&tensor, const std::string &name, Format format) con { const RawTensor &raw = get(name, format); - for(size_t offset = 0; offset < raw.size(); offset += raw.element_size()) + for (size_t offset = 0; offset < raw.size(); offset += raw.element_size()) { const Coordinates id = index2coord(raw.shape(), offset / raw.element_size()); @@ -699,7 +701,7 @@ void AssetsLibrary::fill(T &&tensor, const std::string &name, Format format, Cha { const RawTensor &raw = get(name, format, channel); - for(size_t offset = 0; offset < raw.size(); offset += raw.element_size()) + for (size_t offset = 0; offset < raw.size(); offset += raw.element_size()) { const Coordinates id = index2coord(raw.shape(), offset / raw.element_size()); @@ -712,7 +714,7 @@ void AssetsLibrary::fill(T &&tensor, const std::string &name, Format format, Cha template void AssetsLibrary::fill(T &&tensor, RawTensor raw) const { - for(size_t offset = 0; offset < raw.size(); offset += raw.element_size()) + for (size_t offset = 0; offset < raw.size(); offset += raw.element_size()) { const Coordinates id = index2coord(raw.shape(), offset / raw.element_size()); @@ -725,12 +727,13 @@ void AssetsLibrary::fill(T &&tensor, RawTensor raw) const template void AssetsLibrary::fill_tensor_uniform(T &&tensor, std::random_device::result_type seed_offset) const { - switch(tensor.data_type()) + switch (tensor.data_type()) { case DataType::U8: case DataType::QASYMM8: { - std::uniform_int_distribution distribution_u8(std::numeric_limits::lowest(), std::numeric_limits::max()); + std::uniform_int_distribution distribution_u8(std::numeric_limits::lowest(), + std::numeric_limits::max()); fill(tensor, distribution_u8, seed_offset); break; } @@ -739,59 +742,67 @@ void AssetsLibrary::fill_tensor_uniform(T &&tensor, std::random_device::result_t case DataType::QSYMM8_PER_CHANNEL: case DataType::QASYMM8_SIGNED: { - std::uniform_int_distribution distribution_s8(std::numeric_limits::lowest(), std::numeric_limits::max()); + std::uniform_int_distribution distribution_s8(std::numeric_limits::lowest(), + std::numeric_limits::max()); fill(tensor, distribution_s8, seed_offset); break; } case DataType::U16: case DataType::QASYMM16: { - std::uniform_int_distribution distribution_u16(std::numeric_limits::lowest(), std::numeric_limits::max()); + std::uniform_int_distribution distribution_u16(std::numeric_limits::lowest(), + std::numeric_limits::max()); fill(tensor, distribution_u16, seed_offset); break; } case DataType::S16: case DataType::QSYMM16: { - std::uniform_int_distribution distribution_s16(std::numeric_limits::lowest(), std::numeric_limits::max()); + std::uniform_int_distribution distribution_s16(std::numeric_limits::lowest(), + std::numeric_limits::max()); fill(tensor, distribution_s16, seed_offset); break; } case DataType::U32: { - std::uniform_int_distribution distribution_u32(std::numeric_limits::lowest(), std::numeric_limits::max()); + std::uniform_int_distribution distribution_u32(std::numeric_limits::lowest(), + std::numeric_limits::max()); fill(tensor, distribution_u32, seed_offset); break; } case DataType::S32: { - std::uniform_int_distribution distribution_s32(std::numeric_limits::lowest(), std::numeric_limits::max()); + std::uniform_int_distribution distribution_s32(std::numeric_limits::lowest(), + std::numeric_limits::max()); fill(tensor, distribution_s32, seed_offset); break; } case DataType::U64: { - std::uniform_int_distribution distribution_u64(std::numeric_limits::lowest(), std::numeric_limits::max()); + std::uniform_int_distribution distribution_u64(std::numeric_limits::lowest(), + std::numeric_limits::max()); fill(tensor, distribution_u64, seed_offset); break; } case DataType::S64: { - std::uniform_int_distribution distribution_s64(std::numeric_limits::lowest(), std::numeric_limits::max()); + std::uniform_int_distribution distribution_s64(std::numeric_limits::lowest(), + std::numeric_limits::max()); fill(tensor, distribution_s64, seed_offset); break; } case DataType::BFLOAT16: { // It doesn't make sense to check [-inf, inf], so hard code it to a big number - arm_compute::utils::uniform_real_distribution_16bit distribution_bf16{ -1000.f, 1000.f, true /* portable */ }; + arm_compute::utils::uniform_real_distribution_16bit distribution_bf16{-1000.f, 1000.f, + true /* portable */}; fill(tensor, distribution_bf16, seed_offset); break; } case DataType::F16: { // It doesn't make sense to check [-inf, inf], so hard code it to a big number - arm_compute::utils::uniform_real_distribution_16bit distribution_f16{ -100.f, 100.f }; + arm_compute::utils::uniform_real_distribution_16bit distribution_f16{-100.f, 100.f}; fill(tensor, distribution_f16, seed_offset); break; } @@ -811,7 +822,8 @@ void AssetsLibrary::fill_tensor_uniform(T &&tensor, std::random_device::result_t } case DataType::SIZET: { - std::uniform_int_distribution distribution_sizet(std::numeric_limits::lowest(), std::numeric_limits::max()); + std::uniform_int_distribution distribution_sizet(std::numeric_limits::lowest(), + std::numeric_limits::max()); fill(tensor, distribution_sizet, seed_offset); break; } @@ -827,69 +839,63 @@ void AssetsLibrary::fill_tensor_uniform_ranged(T { using namespace arm_compute::utils::random; - switch(tensor.data_type()) + switch (tensor.data_type()) { case DataType::U8: case DataType::QASYMM8: { - const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); + const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); RangedUniformDistribution distribution_u8(std::numeric_limits::lowest(), - std::numeric_limits::max(), - converted_pairs); + std::numeric_limits::max(), converted_pairs); fill(tensor, distribution_u8, seed_offset); break; } case DataType::S8: case DataType::QSYMM8: { - const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); + const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); RangedUniformDistribution distribution_s8(std::numeric_limits::lowest(), - std::numeric_limits::max(), - converted_pairs); + std::numeric_limits::max(), converted_pairs); fill(tensor, distribution_s8, seed_offset); break; } case DataType::U16: { - const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); + const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); RangedUniformDistribution distribution_u16(std::numeric_limits::lowest(), - std::numeric_limits::max(), - converted_pairs); + std::numeric_limits::max(), converted_pairs); fill(tensor, distribution_u16, seed_offset); break; } case DataType::S16: case DataType::QSYMM16: { - const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); + const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); RangedUniformDistribution distribution_s16(std::numeric_limits::lowest(), - std::numeric_limits::max(), - converted_pairs); + std::numeric_limits::max(), converted_pairs); fill(tensor, distribution_s16, seed_offset); break; } case DataType::U32: { - const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); + const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); RangedUniformDistribution distribution_u32(std::numeric_limits::lowest(), - std::numeric_limits::max(), - converted_pairs); + std::numeric_limits::max(), converted_pairs); fill(tensor, distribution_u32, seed_offset); break; } case DataType::S32: { - const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); + const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); RangedUniformDistribution distribution_s32(std::numeric_limits::lowest(), - std::numeric_limits::max(), - converted_pairs); + std::numeric_limits::max(), converted_pairs); fill(tensor, distribution_s32, seed_offset); break; } case DataType::BFLOAT16: { // It doesn't make sense to check [-inf, inf], so hard code it to a big number - const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); + const auto converted_pairs = detail::convert_range_pair(excluded_range_pairs); RangedUniformDistribution distribution_bf16(bfloat16(-1000.f), bfloat16(1000.f), converted_pairs); fill(tensor, distribution_bf16, seed_offset); break; @@ -918,7 +924,7 @@ void AssetsLibrary::fill_tensor_uniform_ranged(T template void AssetsLibrary::fill_tensor_uniform(T &&tensor, std::random_device::result_type seed_offset, D low, D high) const { - switch(tensor.data_type()) + switch (tensor.data_type()) { case DataType::U8: case DataType::QASYMM8: @@ -982,13 +988,13 @@ void AssetsLibrary::fill_tensor_uniform(T &&tensor, std::random_device::result_t } case DataType::BFLOAT16: { - arm_compute::utils::uniform_real_distribution_16bit distribution_bf16{ float(low), float(high) }; + arm_compute::utils::uniform_real_distribution_16bit distribution_bf16{float(low), float(high)}; fill(tensor, distribution_bf16, seed_offset); break; } case DataType::F16: { - arm_compute::utils::uniform_real_distribution_16bit distribution_f16{ float(low), float(high) }; + arm_compute::utils::uniform_real_distribution_16bit distribution_f16{float(low), float(high)}; fill(tensor, distribution_f16, seed_offset); break; } @@ -1030,7 +1036,7 @@ void AssetsLibrary::fill_layer_data(T &&tensor, std::string name) const // Open file std::ifstream stream(path, std::ios::in | std::ios::binary); - if(!stream.good()) + if (!stream.good()) { throw framework::FileNotFound("Could not load npy file: " + path); } @@ -1038,7 +1044,7 @@ void AssetsLibrary::fill_layer_data(T &&tensor, std::string name) const validate_npy_header(stream, tensor.data_type(), tensor.shape()); // Read data - if(tensor.padding().empty()) + if (tensor.padding().empty()) { // If tensor has no padding read directly from stream. stream.read(reinterpret_cast(tensor.data()), tensor.size()); @@ -1049,10 +1055,8 @@ void AssetsLibrary::fill_layer_data(T &&tensor, std::string name) const Window window; window.use_tensor_dimensions(tensor.shape()); - execute_window_loop(window, [&](const Coordinates & id) - { - stream.read(reinterpret_cast(tensor(id)), tensor.element_size()); - }); + execute_window_loop(window, [&](const Coordinates &id) + { stream.read(reinterpret_cast(tensor(id)), tensor.element_size()); }); } } diff --git a/tests/CL/CLAccessor.h b/tests/CL/CLAccessor.h index ef1983364b7..ff48660ea18 100644 --- a/tests/CL/CLAccessor.h +++ b/tests/CL/CLAccessor.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_CLACCESSOR_H -#define ARM_COMPUTE_TEST_CLACCESSOR_H +#ifndef ACL_TESTS_CL_CLACCESSOR_H +#define ACL_TESTS_CL_CLACCESSOR_H #include "arm_compute/runtime/CL/CLTensor.h" -#include "tests/IAccessor.h" + #include "tests/framework/Framework.h" +#include "tests/IAccessor.h" namespace arm_compute { @@ -77,17 +78,16 @@ class CLAccessor : public IAccessor int num_elements() const override; PaddingSize padding() const override; QuantizationInfo quantization_info() const override; - const void *operator()(const Coordinates &coord) const override; - void *operator()(const Coordinates &coord) override; + const void *operator()(const Coordinates &coord) const override; + void *operator()(const Coordinates &coord) override; private: CLTensor &_tensor; }; -inline CLAccessor::CLAccessor(CLTensor &tensor) - : _tensor{ tensor } +inline CLAccessor::CLAccessor(CLTensor &tensor) : _tensor{tensor} { - if(!framework::Framework::get().configure_only() || !framework::Framework::get().new_fixture_call()) + if (!framework::Framework::get().configure_only() || !framework::Framework::get().new_fixture_call()) { _tensor.map(); } @@ -95,7 +95,7 @@ inline CLAccessor::CLAccessor(CLTensor &tensor) inline CLAccessor::~CLAccessor() { - if(!framework::Framework::get().configure_only() || !framework::Framework::get().new_fixture_call()) + if (!framework::Framework::get().configure_only() || !framework::Framework::get().new_fixture_call()) { _tensor.unmap(); } @@ -172,4 +172,4 @@ inline void *CLAccessor::operator()(const Coordinates &coord) } } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_CLACCESSOR_H */ +#endif // ACL_TESTS_CL_CLACCESSOR_H diff --git a/tests/CL/CLArrayAccessor.h b/tests/CL/CLArrayAccessor.h index cfc63095a2e..3dfb1aaa477 100644 --- a/tests/CL/CLArrayAccessor.h +++ b/tests/CL/CLArrayAccessor.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_CLARRAYACCESSOR_H -#define ARM_COMPUTE_TEST_CLARRAYACCESSOR_H +#ifndef ACL_TESTS_CL_CLARRAYACCESSOR_H +#define ACL_TESTS_CL_CLARRAYACCESSOR_H #include "arm_compute/runtime/CL/CLArray.h" + #include "tests/IArrayAccessor.h" namespace arm_compute @@ -43,8 +44,7 @@ class CLArrayAccessor : public IArrayAccessor * @note The CL memory is mapped by the constructor. * */ - CLArrayAccessor(CLArray &array) - : _array{ array } + CLArrayAccessor(CLArray &array) : _array{array} { _array.map(); } @@ -91,4 +91,4 @@ class CLArrayAccessor : public IArrayAccessor }; } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_CLARRAYACCESSOR_H */ +#endif // ACL_TESTS_CL_CLARRAYACCESSOR_H diff --git a/tests/CL/Helper.h b/tests/CL/Helper.h index dd5e8647b04..829a8451a1b 100644 --- a/tests/CL/Helper.h +++ b/tests/CL/Helper.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,18 +21,18 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_CL_HELPER_H -#define ARM_COMPUTE_TEST_CL_HELPER_H +#ifndef ACL_TESTS_CL_HELPER_H +#define ACL_TESTS_CL_HELPER_H #include "arm_compute/runtime/CL/CLScheduler.h" -#include "arm_compute/runtime/CL/ICLSimpleFunction.h" #include "arm_compute/runtime/CL/functions/CLFill.h" +#include "arm_compute/runtime/CL/ICLSimpleFunction.h" #include "arm_compute/runtime/IFunction.h" + +#include "src/core/CL/ICLKernel.h" #include "src/core/CL/kernels/CLFillBorderKernel.h" #include "src/gpu/cl/IClOperator.h" #include "src/gpu/cl/operators/ClFill.h" - -#include "src/core/CL/ICLKernel.h" #include "support/Cast.h" #include @@ -51,7 +51,7 @@ class CLSynthetizeOperator : public opencl::IClOperator * @param[in] args Configuration arguments. */ template - void configure(Args &&... args) + void configure(Args &&...args) { auto k = std::make_unique(); k->configure(CLKernelLibrary::get().get_compile_context(), std::forward(args)...); @@ -63,7 +63,7 @@ class CLSynthetizeOperator : public opencl::IClOperator * @param[in] args Configuration arguments. */ template - void configure(GPUTarget gpu_target, Args &&... args) + void configure(GPUTarget gpu_target, Args &&...args) { auto k = std::make_unique(); k->set_target(gpu_target); @@ -75,7 +75,7 @@ class CLSynthetizeOperator : public opencl::IClOperator * @param[in] args Configuration arguments. */ template - static Status validate(Args &&... args) + static Status validate(Args &&...args) { return K::validate(std::forward(args)...); } @@ -93,7 +93,7 @@ class CLSynthetizeOperatorInitOutputWithZeroAndWithZeroConstantBorder : public o * @param[in] args Rest of the configuration arguments. */ template - void configure(T first, T second, Args &&... args) + void configure(T first, T second, Args &&...args) { auto cctx = CLKernelLibrary::get().get_compile_context(); auto k = std::make_unique(); @@ -109,7 +109,7 @@ class CLSynthetizeOperatorInitOutputWithZeroAndWithZeroConstantBorder : public o { ARM_COMPUTE_ERROR_ON_MSG(!_kernel, "The CL kernel or function isn't configured"); - ITensorPack fill_pack = { { ACL_SRC, tensors.get_tensor(TensorType::ACL_DST) } }; + ITensorPack fill_pack = {{ACL_SRC, tensors.get_tensor(TensorType::ACL_DST)}}; _fill.run(fill_pack); CLScheduler::get().enqueue_op(_border_handler, tensors); CLScheduler::get().enqueue_op(*_kernel, tensors); @@ -131,7 +131,7 @@ class CLSynthetizeFunction : public ICLSimpleFunction * @param[in] args Configuration arguments. */ template - void configure(Args &&... args) + void configure(Args &&...args) { auto k = std::make_unique(); k->configure(std::forward(args)...); @@ -143,7 +143,7 @@ class CLSynthetizeFunction : public ICLSimpleFunction * @param[in] args Configuration arguments. */ template - void configure(GPUTarget gpu_target, Args &&... args) + void configure(GPUTarget gpu_target, Args &&...args) { auto k = std::make_unique(); k->set_target(gpu_target); @@ -155,7 +155,7 @@ class CLSynthetizeFunction : public ICLSimpleFunction * @param[in] args Configuration arguments. */ template - static Status validate(Args &&... args) + static Status validate(Args &&...args) { return K::validate(std::forward(args)...); } @@ -172,7 +172,7 @@ class CLSynthetizeFunctionWithZeroConstantBorder : public ICLSimpleFunction * @param[in] args Rest of the configuration arguments. */ template - void configure(T first, Args &&... args) + void configure(T first, Args &&...args) { auto k = std::make_unique(); k->configure(first, std::forward(args)...); @@ -193,7 +193,7 @@ class CLSynthetizeFunctionInitOutputWithZeroAndWithZeroConstantBorder : public I * @param[in] args Rest of the configuration arguments. */ template - void configure(T first, T second, Args &&... args) + void configure(T first, T second, Args &&...args) { auto k = std::make_unique(); k->set_target(CLScheduler::get().target()); @@ -230,14 +230,15 @@ class ClSynthetizeOperatorWithBorder : public opencl::IClOperator * @param[in] args Rest of the configuration arguments. */ template - void configure(T first, Args &&... args) + void configure(T first, Args &&...args) { auto k = std::make_unique(); k->configure(CLKernelLibrary::get().get_compile_context(), first, std::forward(args)...); _kernel = std::move(k); auto b = std::make_unique(); - b->configure(CLKernelLibrary::get().get_compile_context(), first, BorderSize(_kernel->border_size()), BorderMode::CONSTANT, PixelValue()); + b->configure(CLKernelLibrary::get().get_compile_context(), first, BorderSize(_kernel->border_size()), + BorderMode::CONSTANT, PixelValue()); _border_handler = std::move(b); } @@ -248,9 +249,9 @@ class ClSynthetizeOperatorWithBorder : public opencl::IClOperator } private: - std::unique_ptr _border_handler{ nullptr }; /**< Kernel to handle borders */ - std::unique_ptr _kernel{}; /**< Kernel to run */ + std::unique_ptr _border_handler{nullptr}; /**< Kernel to handle borders */ + std::unique_ptr _kernel{}; /**< Kernel to run */ }; } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_CL_HELPER_H */ +#endif // ACL_TESTS_CL_HELPER_H diff --git a/tests/IAccessor.h b/tests/IAccessor.h index 75faee19ce1..e6b673d93fa 100644 --- a/tests/IAccessor.h +++ b/tests/IAccessor.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019, 2023 Arm Limited. + * Copyright (c) 2017-2019, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_IACCESSOR_H -#define ARM_COMPUTE_TEST_IACCESSOR_H +#ifndef ACL_TESTS_IACCESSOR_H +#define ACL_TESTS_IACCESSOR_H #include "arm_compute/core/Coordinates.h" -#include "arm_compute/core/Types.h" #include "arm_compute/core/QuantizationInfo.h" +#include "arm_compute/core/Types.h" namespace arm_compute { @@ -119,4 +119,4 @@ class IAccessor }; } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_IACCESSOR_H */ +#endif // ACL_TESTS_IACCESSOR_H diff --git a/tests/NEON/Accessor.h b/tests/NEON/Accessor.h index 6dc09e38f11..e3292dd0851 100644 --- a/tests/NEON/Accessor.h +++ b/tests/NEON/Accessor.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_ACCESSOR_H -#define ARM_COMPUTE_TEST_ACCESSOR_H +#ifndef ACL_TESTS_NEON_ACCESSOR_H +#define ACL_TESTS_NEON_ACCESSOR_H #include "arm_compute/runtime/Tensor.h" + #include "tests/IAccessor.h" namespace arm_compute @@ -69,15 +70,14 @@ class Accessor : public IAccessor int num_elements() const override; PaddingSize padding() const override; QuantizationInfo quantization_info() const override; - const void *operator()(const Coordinates &coord) const override; - void *operator()(const Coordinates &coord) override; + const void *operator()(const Coordinates &coord) const override; + void *operator()(const Coordinates &coord) override; private: ITensor &_tensor; }; -inline Accessor::Accessor(ITensor &tensor) - : _tensor{ tensor } +inline Accessor::Accessor(ITensor &tensor) : _tensor{tensor} { } @@ -152,4 +152,4 @@ inline void *Accessor::operator()(const Coordinates &coord) } } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_ACCESSOR_H */ +#endif // ACL_TESTS_NEON_ACCESSOR_H diff --git a/tests/NEON/ArrayAccessor.h b/tests/NEON/ArrayAccessor.h index 8de67edb735..4c83fd43c67 100644 --- a/tests/NEON/ArrayAccessor.h +++ b/tests/NEON/ArrayAccessor.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_ARRAYACCESSOR_H -#define ARM_COMPUTE_TEST_ARRAYACCESSOR_H +#ifndef ACL_TESTS_NEON_ARRAYACCESSOR_H +#define ACL_TESTS_NEON_ARRAYACCESSOR_H #include "arm_compute/runtime/Array.h" + #include "tests/IArrayAccessor.h" namespace arm_compute @@ -40,8 +41,7 @@ class ArrayAccessor : public IArrayAccessor * * @param[in, out] array To be accessed array. */ - ArrayAccessor(Array &array) - : _array{ array } + ArrayAccessor(Array &array) : _array{array} { } @@ -81,4 +81,4 @@ class ArrayAccessor : public IArrayAccessor }; } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_ARRAYACCESSOR_H */ +#endif // ACL_TESTS_NEON_ARRAYACCESSOR_H diff --git a/tests/NEON/Helper.h b/tests/NEON/Helper.h index fb0231b62af..4820f1590a2 100644 --- a/tests/NEON/Helper.h +++ b/tests/NEON/Helper.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_NEON_HELPER_H -#define ARM_COMPUTE_TEST_NEON_HELPER_H +#ifndef ACL_TESTS_NEON_HELPER_H +#define ACL_TESTS_NEON_HELPER_H #include "arm_compute/runtime/Array.h" #include "arm_compute/runtime/NEON/INESimpleFunction.h" #include "arm_compute/runtime/NEON/INESimpleFunctionNoBorder.h" #include "arm_compute/runtime/NEON/NEScheduler.h" + #include "src/core/NEON/kernels/NEFillBorderKernel.h" #include "src/cpu/ICpuOperator.h" #include "tests/Globals.h" @@ -42,13 +43,13 @@ namespace arm_compute namespace test { template -void fill_tensors(D &&dist, std::initializer_list seeds, T &&tensor, Ts &&... other_tensors) +void fill_tensors(D &&dist, std::initializer_list seeds, T &&tensor, Ts &&...other_tensors) { - const std::array < T, 1 + sizeof...(Ts) > tensors{ { std::forward(tensor), std::forward(other_tensors)... } }; - std::vector vs(seeds); + const std::array tensors{{std::forward(tensor), std::forward(other_tensors)...}}; + std::vector vs(seeds); ARM_COMPUTE_ERROR_ON(vs.size() != tensors.size()); int k = 0; - for(auto tp : tensors) + for (auto tp : tensors) { library->fill(Accessor(*tp), std::forward(dist), vs[k++]); } @@ -64,7 +65,7 @@ class NESynthetizeFunction : public INESimpleFunctionNoBorder * @param[in] args Configuration arguments. */ template - void configure(Args &&... args) + void configure(Args &&...args) { auto k = std::make_unique(); k->configure(std::forward(args)...); @@ -75,7 +76,7 @@ class NESynthetizeFunction : public INESimpleFunctionNoBorder * @param[in] args Configuration arguments. */ template - static Status validate(Args &&... args) + static Status validate(Args &&...args) { return K::validate(std::forward(args)...); } @@ -92,7 +93,7 @@ class NESynthetizeFunctionWithZeroConstantBorder : public INESimpleFunction * @param[in] args Rest of the configuration arguments. */ template - void configure(T first, Args &&... args) + void configure(T first, Args &&...args) { auto k = std::make_unique(); k->configure(first, std::forward(args)...); @@ -115,7 +116,7 @@ class NESynthetizeFunctionWithZeroConstantKernelBorder : public cpu::ICpuOperato * @param[in] args Rest of the configuration arguments. */ template - void configure(T first, Args &&... args) + void configure(T first, Args &&...args) { auto k = std::make_unique(); k->configure(first, std::forward(args)...); @@ -133,9 +134,9 @@ class NESynthetizeFunctionWithZeroConstantKernelBorder : public cpu::ICpuOperato } private: - std::unique_ptr _border_handler{ nullptr }; + std::unique_ptr _border_handler{nullptr}; }; } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_NEON_HELPER_H */ +#endif // ACL_TESTS_NEON_HELPER_H diff --git a/tests/PaddingCalculator.h b/tests/PaddingCalculator.h index 72c9236f587..8f319e56074 100644 --- a/tests/PaddingCalculator.h +++ b/tests/PaddingCalculator.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_PADDING_CALCULATOR_H -#define ARM_COMPUTE_TEST_PADDING_CALCULATOR_H +#ifndef ACL_TESTS_PADDINGCALCULATOR_H +#define ACL_TESTS_PADDINGCALCULATOR_H #include "arm_compute/core/Types.h" @@ -49,7 +49,7 @@ class PaddingCalculator final * @param[in] processed_elements Number of elements processed per iteration. */ PaddingCalculator(int size, int processed_elements) - : _size{ size }, _num_processed_elements{ processed_elements }, _num_accessed_elements{ processed_elements } + : _size{size}, _num_processed_elements{processed_elements}, _num_accessed_elements{processed_elements} { } @@ -109,9 +109,9 @@ class PaddingCalculator final int _size; int _num_processed_elements; int _num_accessed_elements; - BorderMode _mode{ BorderMode::UNDEFINED }; - int _border_size{ 0 }; - int _offset{ 0 }; + BorderMode _mode{BorderMode::UNDEFINED}; + int _border_size{0}; + int _offset{0}; }; inline void PaddingCalculator::set_border_mode(BorderMode mode) @@ -145,17 +145,23 @@ inline PaddingSize PaddingCalculator::required_padding() const inline PaddingSize PaddingCalculator::required_padding(Option option) const { - PaddingSize padding{ (_mode == BorderMode::UNDEFINED || option == Option::EXCLUDE_BORDER) ? 0U : static_cast(std::max(0, _border_size)) }; + PaddingSize padding{(_mode == BorderMode::UNDEFINED || option == Option::EXCLUDE_BORDER) + ? 0U + : static_cast(std::max(0, _border_size))}; int padding_right = 0; - if(_mode == BorderMode::UNDEFINED) + if (_mode == BorderMode::UNDEFINED) { - padding_right = (((_size - 2 * _border_size + _num_processed_elements - 1) / _num_processed_elements) - 1) * _num_processed_elements + _num_accessed_elements - _size + _border_size + _offset; + padding_right = (((_size - 2 * _border_size + _num_processed_elements - 1) / _num_processed_elements) - 1) * + _num_processed_elements + + _num_accessed_elements - _size + _border_size + _offset; } else { - padding_right = (((_size + _num_processed_elements - 1) / _num_processed_elements) - 1) * _num_processed_elements + _num_accessed_elements - _size + _offset; + padding_right = + (((_size + _num_processed_elements - 1) / _num_processed_elements) - 1) * _num_processed_elements + + _num_accessed_elements - _size + _offset; } padding.right = std::max(0, padding_right); @@ -164,4 +170,4 @@ inline PaddingSize PaddingCalculator::required_padding(Option option) const } } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_PADDING_CALCULATOR_H */ +#endif // ACL_TESTS_PADDINGCALCULATOR_H diff --git a/tests/RawTensor.cpp b/tests/RawTensor.cpp index 8d610a4969b..75cbf189f41 100644 --- a/tests/RawTensor.cpp +++ b/tests/RawTensor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -27,20 +27,20 @@ namespace arm_compute { namespace test { -RawTensor::RawTensor(TensorShape shape, Format format) - : SimpleTensor(shape, format) +RawTensor::RawTensor(TensorShape shape, Format format) : SimpleTensor(shape, format) { - _buffer = std::make_unique(SimpleTensor::num_elements() * SimpleTensor::num_channels() * SimpleTensor::element_size()); + _buffer = std::make_unique(SimpleTensor::num_elements() * SimpleTensor::num_channels() * + SimpleTensor::element_size()); } RawTensor::RawTensor(TensorShape shape, DataType data_type, int num_channels) : SimpleTensor(shape, data_type, num_channels) { - _buffer = std::make_unique(SimpleTensor::num_elements() * SimpleTensor::num_channels() * SimpleTensor::element_size()); + _buffer = std::make_unique(SimpleTensor::num_elements() * SimpleTensor::num_channels() * + SimpleTensor::element_size()); } -RawTensor::RawTensor(const RawTensor &tensor) - : SimpleTensor(tensor.shape(), tensor.data_type(), tensor.num_channels()) +RawTensor::RawTensor(const RawTensor &tensor) : SimpleTensor(tensor.shape(), tensor.data_type(), tensor.num_channels()) { _format = tensor.format(); _buffer = std::make_unique(num_elements() * num_channels() * element_size()); diff --git a/tests/SimpleTensor.h b/tests/SimpleTensor.h index 419621e8088..6e8fb116caa 100644 --- a/tests/SimpleTensor.h +++ b/tests/SimpleTensor.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020, 2023 Arm Limited. + * Copyright (c) 2017-2020, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SIMPLE_TENSOR_H -#define ARM_COMPUTE_TEST_SIMPLE_TENSOR_H +#ifndef ACL_TESTS_SIMPLETENSOR_H +#define ACL_TESTS_SIMPLETENSOR_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" #include "arm_compute/core/Utils.h" + #include "tests/IAccessor.h" #include "tests/Utils.h" @@ -76,7 +77,8 @@ class SimpleTensor : public IAccessor * @param[in] quantization_info (Optional) Quantization info for asymmetric quantization (default = empty). * @param[in] data_layout (Optional) Data layout of the tensor (default = NCHW). */ - SimpleTensor(TensorShape shape, DataType data_type, + SimpleTensor(TensorShape shape, + DataType data_type, int num_channels = 1, QuantizationInfo quantization_info = QuantizationInfo(), DataLayout data_layout = DataLayout::NCHW); @@ -219,23 +221,21 @@ class SimpleTensor : public IAccessor friend void swap(SimpleTensor &tensor1, SimpleTensor &tensor2); protected: - Buffer _buffer{ nullptr }; + Buffer _buffer{nullptr}; TensorShape _shape{}; - Format _format{ Format::UNKNOWN }; - DataType _data_type{ DataType::UNKNOWN }; - int _num_channels{ 0 }; + Format _format{Format::UNKNOWN}; + DataType _data_type{DataType::UNKNOWN}; + int _num_channels{0}; QuantizationInfo _quantization_info{}; - DataLayout _data_layout{ DataLayout::UNKNOWN }; + DataLayout _data_layout{DataLayout::UNKNOWN}; }; template SimpleTensor copy_tensor(const SimpleTensor &tensor) { - SimpleTensor st(tensor.shape(), tensor.data_type(), - tensor.num_channels(), - tensor.quantization_info(), + SimpleTensor st(tensor.shape(), tensor.data_type(), tensor.num_channels(), tensor.quantization_info(), tensor.data_layout()); - for(size_t n = 0; n < size_t(st.num_elements()); n++) + for (size_t n = 0; n < size_t(st.num_elements()); n++) { st.data()[n] = static_cast(tensor.data()[n]); } @@ -245,22 +245,20 @@ SimpleTensor copy_tensor(const SimpleTensor &tensor) template ::value, int>::type = 0> SimpleTensor copy_tensor(const SimpleTensor &tensor) { - SimpleTensor st(tensor.shape(), tensor.data_type(), - tensor.num_channels(), - tensor.quantization_info(), + SimpleTensor st(tensor.shape(), tensor.data_type(), tensor.num_channels(), tensor.quantization_info(), tensor.data_layout()); memcpy((void *)st.data(), (const void *)tensor.data(), size_t(st.num_elements() * sizeof(T1))); return st; } -template < typename T1, typename T2, typename std::enable_if < (std::is_same::value || std::is_same::value), int >::type = 0 > +template ::value || std::is_same::value), int>::type = 0> SimpleTensor copy_tensor(const SimpleTensor &tensor) { - SimpleTensor st(tensor.shape(), tensor.data_type(), - tensor.num_channels(), - tensor.quantization_info(), + SimpleTensor st(tensor.shape(), tensor.data_type(), tensor.num_channels(), tensor.quantization_info(), tensor.data_layout()); - for(size_t n = 0; n < size_t(st.num_elements()); n++) + for (size_t n = 0; n < size_t(st.num_elements()); n++) { st.data()[n] = half_float::detail::half_cast(tensor.data()[n]); } @@ -269,18 +267,15 @@ SimpleTensor copy_tensor(const SimpleTensor &tensor) template SimpleTensor::SimpleTensor(TensorShape shape, Format format) - : _buffer(nullptr), - _shape(shape), - _format(format), - _quantization_info(), - _data_layout(DataLayout::NCHW) + : _buffer(nullptr), _shape(shape), _format(format), _quantization_info(), _data_layout(DataLayout::NCHW) { _num_channels = num_channels(); _buffer = std::make_unique(num_elements() * _num_channels); } template -SimpleTensor::SimpleTensor(TensorShape shape, DataType data_type, int num_channels, QuantizationInfo quantization_info, DataLayout data_layout) +SimpleTensor::SimpleTensor( + TensorShape shape, DataType data_type, int num_channels, QuantizationInfo quantization_info, DataLayout data_layout) : _buffer(nullptr), _shape(shape), _data_type(data_type), @@ -372,7 +367,7 @@ DataLayout SimpleTensor::data_layout() const template DataType SimpleTensor::data_type() const { - if(_format != Format::UNKNOWN) + if (_format != Format::UNKNOWN) { return data_type_from_format(_format); } @@ -385,7 +380,7 @@ DataType SimpleTensor::data_type() const template int SimpleTensor::num_channels() const { - switch(_format) + switch (_format) { case Format::U8: case Format::U16: @@ -471,4 +466,4 @@ void swap(SimpleTensor &tensor1, SimpleTensor &tensor2) } } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SIMPLE_TENSOR_H */ +#endif // ACL_TESTS_SIMPLETENSOR_H diff --git a/tests/SimpleTensorAccessor.h b/tests/SimpleTensorAccessor.h index 606a94f100a..32c3ae20768 100644 --- a/tests/SimpleTensorAccessor.h +++ b/tests/SimpleTensorAccessor.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Arm Limited. + * Copyright (c) 2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SIMPLE_TENSOR_ACCESSOR_H -#define ARM_COMPUTE_TEST_SIMPLE_TENSOR_ACCESSOR_H +#ifndef ACL_TESTS_SIMPLETENSORACCESSOR_H +#define ACL_TESTS_SIMPLETENSORACCESSOR_H -#include "SimpleTensor.h" #include "tests/IAccessor.h" +#include "SimpleTensor.h" + namespace arm_compute { namespace test @@ -73,16 +74,15 @@ class SimpleTensorAccessor : public IAccessor int num_elements() const override; PaddingSize padding() const override; QuantizationInfo quantization_info() const override; - const void *operator()(const Coordinates &coord) const override; - void *operator()(const Coordinates &coord) override; + const void *operator()(const Coordinates &coord) const override; + void *operator()(const Coordinates &coord) override; private: SimpleTensor &_tensor; }; template -inline SimpleTensorAccessor::SimpleTensorAccessor(SimpleTensor &tensor) - : _tensor{ tensor } +inline SimpleTensorAccessor::SimpleTensorAccessor(SimpleTensor &tensor) : _tensor{tensor} { } @@ -171,4 +171,4 @@ inline void *SimpleTensorAccessor::operator()(const Coordinates &coord) } } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SIMPLE_TENSOR_ACCESSOR_H */ +#endif // ACL_TESTS_SIMPLETENSORACCESSOR_H diff --git a/tests/SimpleTensorPrinter.h b/tests/SimpleTensorPrinter.h index e4ca66bb362..179b0dd1422 100644 --- a/tests/SimpleTensorPrinter.h +++ b/tests/SimpleTensorPrinter.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018, 2021-2022 Arm Limited. + * Copyright (c) 2017-2018, 2021-2022, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -22,8 +22,8 @@ * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SIMPLE_TENSOR_PRINTER -#define ARM_COMPUTE_TEST_SIMPLE_TENSOR_PRINTER +#ifndef ACL_TESTS_SIMPLETENSORPRINTER_H +#define ACL_TESTS_SIMPLETENSORPRINTER_H #include "arm_compute/core/Error.h" @@ -38,7 +38,8 @@ namespace arm_compute namespace test { template -inline std::string prettify_tensor(const SimpleTensor &input, const IOFormatInfo &io_fmt = IOFormatInfo{ IOFormatInfo::PrintRegion::NoPadding }) +inline std::string prettify_tensor(const SimpleTensor &input, + const IOFormatInfo &io_fmt = IOFormatInfo{IOFormatInfo::PrintRegion::NoPadding}) { ARM_COMPUTE_ERROR_ON(input.data() == nullptr); @@ -55,10 +56,10 @@ inline std::string prettify_tensor(const SimpleTensor &input, const IOFormatI std::ostringstream os; // Set precision - if(is_data_type_float(dt) && (io_fmt.precision_type != IOFormatInfo::PrecisionType::Default)) + if (is_data_type_float(dt) && (io_fmt.precision_type != IOFormatInfo::PrecisionType::Default)) { int precision = io_fmt.precision; - if(io_fmt.precision_type == IOFormatInfo::PrecisionType::Full) + if (io_fmt.precision_type == IOFormatInfo::PrecisionType::Full) { precision = std::numeric_limits().max_digits10; } @@ -69,7 +70,7 @@ inline std::string prettify_tensor(const SimpleTensor &input, const IOFormatI size_t print_width = 0; size_t print_height = 0; int start_offset = 0; - switch(io_fmt.print_region) + switch (io_fmt.print_region) { case IOFormatInfo::PrintRegion::NoPadding: print_width = info.dimension(0); @@ -79,13 +80,14 @@ inline std::string prettify_tensor(const SimpleTensor &input, const IOFormatI case IOFormatInfo::PrintRegion::ValidRegion: print_width = info.valid_region().shape.x(); print_height = info.valid_region().shape.y(); - start_offset = info.offset_element_in_bytes(Coordinates(info.valid_region().anchor.x(), - info.valid_region().anchor.y())); + start_offset = info.offset_element_in_bytes( + Coordinates(info.valid_region().anchor.x(), info.valid_region().anchor.y())); break; case IOFormatInfo::PrintRegion::Full: print_width = padding.left + info.dimension(0) + padding.right; print_height = padding.top + info.dimension(1) + padding.bottom; - start_offset = static_cast(info.offset_first_element_in_bytes()) - padding.top * strides[1] - padding.left * strides[0]; + start_offset = static_cast(info.offset_first_element_in_bytes()) - padding.top * strides[1] - + padding.left * strides[0]; break; default: break; @@ -97,16 +99,17 @@ inline std::string prettify_tensor(const SimpleTensor &input, const IOFormatI const uint8_t *ptr = tensor.data() + start_offset; // Start printing - for(size_t i = 0; i < slices2D; ++i) + for (size_t i = 0; i < slices2D; ++i) { // Find max_width of elements in slice to align columns int max_element_width = 0; - if(io_fmt.align_columns) + if (io_fmt.align_columns) { size_t offset = i * strides[2]; - for(size_t h = 0; h < print_height; ++h) + for (size_t h = 0; h < print_height; ++h) { - max_element_width = std::max(max_element_width, max_consecutive_elements_display_width(os, dt, ptr + offset, print_width)); + max_element_width = std::max( + max_element_width, max_consecutive_elements_display_width(os, dt, ptr + offset, print_width)); offset += strides[1]; } } @@ -114,7 +117,7 @@ inline std::string prettify_tensor(const SimpleTensor &input, const IOFormatI // Print slice { size_t offset = i * strides[2]; - for(size_t h = 0; h < print_height; ++h) + for (size_t h = 0; h < print_height; ++h) { print_consecutive_elements(os, dt, ptr + offset, print_width, max_element_width, io_fmt.element_delim); offset += strides[1]; @@ -130,7 +133,7 @@ inline std::string prettify_tensor(const SimpleTensor &input, const IOFormatI template inline std::ostream &operator<<(std::ostream &os, const SimpleTensor &tensor) { - os << prettify_tensor(tensor, IOFormatInfo{ IOFormatInfo::PrintRegion::NoPadding }); + os << prettify_tensor(tensor, IOFormatInfo{IOFormatInfo::PrintRegion::NoPadding}); return os; } @@ -144,15 +147,17 @@ inline std::string to_string(const SimpleTensor &tensor) #if PRINT_TENSOR_LIMIT template -void print_simpletensor(const SimpleTensor &tensor, const std::string &title, const IOFormatInfo::PrintRegion ®ion = IOFormatInfo::PrintRegion::NoPadding) +void print_simpletensor(const SimpleTensor &tensor, + const std::string &title, + const IOFormatInfo::PrintRegion ®ion = IOFormatInfo::PrintRegion::NoPadding) { - if(tensor.num_elements() < PRINT_TENSOR_LIMIT) + if (tensor.num_elements() < PRINT_TENSOR_LIMIT) { std::cout << title << ":" << std::endl; - std::cout << prettify_tensor(tensor, IOFormatInfo{ region }); + std::cout << prettify_tensor(tensor, IOFormatInfo{region}); } } #endif // PRINT_TENSOR_LIMIT } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SIMPLE_TENSOR_PRINTER */ +#endif // ACL_TESTS_SIMPLETENSORPRINTER_H diff --git a/tests/TensorCache.h b/tests/TensorCache.h index 6f979462315..db2a38df40f 100644 --- a/tests/TensorCache.h +++ b/tests/TensorCache.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_TENSOR_CACHE_H -#define ARM_COMPUTE_TEST_TENSOR_CACHE_H - -#include "RawTensor.h" +#ifndef ACL_TESTS_TENSORCACHE_H +#define ACL_TESTS_TENSORCACHE_H #include "support/Mutex.h" +#include "RawTensor.h" #include #include #include @@ -117,4 +116,4 @@ inline RawTensor &TensorCache::add(std::tuple>(::std::istream &is, BorderMode &mode) is >> value; - std::transform(value.begin(), value.end(), value.begin(), [](unsigned char c) - { - return std::toupper(c); - }); + std::transform(value.begin(), value.end(), value.begin(), [](unsigned char c) { return std::toupper(c); }); - if(value == "UNDEFINED") + if (value == "UNDEFINED") { mode = BorderMode::UNDEFINED; } - else if(value == "CONSTANT") + else if (value == "CONSTANT") { mode = BorderMode::CONSTANT; } - else if(value == "REPLICATE") + else if (value == "REPLICATE") { mode = BorderMode::REPLICATE; } @@ -70,4 +67,4 @@ inline ::std::istream &operator>>(::std::istream &is, BorderMode &mode) return is; } } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_TYPE_READER_H */ +#endif // ACL_TESTS_TYPEREADER_H diff --git a/tests/Utils.h b/tests/Utils.h index b48aa434d18..426650c8e7b 100644 --- a/tests/Utils.h +++ b/tests/Utils.h @@ -30,6 +30,7 @@ #include "arm_compute/core/TensorInfo.h" #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "support/StringSupport.h" #include "support/ToolchainSupport.h" @@ -38,6 +39,9 @@ #include "arm_compute/runtime/CL/CLScheduler.h" #endif /* ARM_COMPUTE_CL */ +#include "arm_compute/runtime/CPP/CPPScheduler.h" +#include "arm_compute/runtime/RuntimeContext.h" + #include #include #include @@ -48,9 +52,6 @@ #include #include -#include "arm_compute/runtime/CPP/CPPScheduler.h" -#include "arm_compute/runtime/RuntimeContext.h" - namespace arm_compute { #ifdef ARM_COMPUTE_CL @@ -84,10 +85,10 @@ inline T round_half_even(T value, T epsilon = std::numeric_limits::epsilon()) T ipart = 0; std::modf(positive_value, &ipart); // If 'value' is exactly halfway between two integers - if(std::abs(positive_value - (ipart + 0.5f)) < epsilon) + if (std::abs(positive_value - (ipart + 0.5f)) < epsilon) { // If 'ipart' is even then return 'ipart' - if(std::fmod(ipart, 2.f) < epsilon) + if (std::fmod(ipart, 2.f) < epsilon) { return support::cpp11::copysign(ipart, value); } @@ -143,7 +144,7 @@ using make_unsigned_conditional_t = typename std::conditional decltype(func(value1, val * @param[in] values Remaining arguments. */ template -inline I foldl(F &&func, I &&initial, T &&value, Vs &&... values) +inline I foldl(F &&func, I &&initial, T &&value, Vs &&...values) { - return foldl(std::forward(func), func(std::forward(initial), std::forward(value)), std::forward(values)...); + return foldl(std::forward(func), func(std::forward(initial), std::forward(value)), + std::forward(values)...); } /** Create a valid region based on tensor shape, border mode and border size @@ -215,22 +217,25 @@ inline I foldl(F &&func, I &&initial, T &&value, Vs &&... values) * @return A valid region starting at (0, 0, ...) with size of @p shape if @p border_undefined is false; otherwise * return A valid region starting at (@p border_size.left, @p border_size.top, ...) with reduced size of @p shape. */ -inline ValidRegion shape_to_valid_region(const TensorShape &a_shape, bool border_undefined = false, BorderSize border_size = BorderSize(0)) +inline ValidRegion +shape_to_valid_region(const TensorShape &a_shape, bool border_undefined = false, BorderSize border_size = BorderSize(0)) { - ValidRegion valid_region{ Coordinates(), a_shape }; + ValidRegion valid_region{Coordinates(), a_shape}; Coordinates &anchor = valid_region.anchor; TensorShape &shape = valid_region.shape; - if(border_undefined) + if (border_undefined) { ARM_COMPUTE_ERROR_ON(shape.num_dimensions() < 2); anchor.set(0, border_size.left); anchor.set(1, border_size.top); - const int valid_shape_x = std::max(0, static_cast(shape.x()) - static_cast(border_size.left) - static_cast(border_size.right)); - const int valid_shape_y = std::max(0, static_cast(shape.y()) - static_cast(border_size.top) - static_cast(border_size.bottom)); + const int valid_shape_x = std::max(0, static_cast(shape.x()) - static_cast(border_size.left) - + static_cast(border_size.right)); + const int valid_shape_y = std::max(0, static_cast(shape.y()) - static_cast(border_size.top) - + static_cast(border_size.bottom)); shape.set(0, valid_shape_x); shape.set(1, valid_shape_y); @@ -250,7 +255,7 @@ inline ValidRegion shape_to_valid_region(const TensorShape &a_shape, bool border template void store_value_with_data_type(void *ptr, T value, DataType data_type) { - switch(data_type) + switch (data_type) { case DataType::U8: case DataType::QASYMM8: @@ -311,11 +316,11 @@ void store_value_with_data_type(void *ptr, T value, DataType data_type) template T saturate_cast(T val) { - if(val > static_cast(std::numeric_limits::max())) + if (val > static_cast(std::numeric_limits::max())) { val = static_cast(std::numeric_limits::max()); } - if(val < static_cast(std::numeric_limits::lowest())) + if (val < static_cast(std::numeric_limits::lowest())) { val = static_cast(std::numeric_limits::lowest()); } @@ -362,9 +367,9 @@ inline Coordinates index2coord(const TensorShape &shape, int index) ARM_COMPUTE_ERROR_ON_MSG(index < 0 || index >= num_elements, "Index has to be in [0, num_elements]"); ARM_COMPUTE_ERROR_ON_MSG(num_elements == 0, "Cannot create coordinate from empty shape"); - Coordinates coord{ 0 }; + Coordinates coord{0}; - for(int d = shape.num_dimensions() - 1; d >= 0; --d) + for (int d = shape.num_dimensions() - 1; d >= 0; --d) { num_elements /= shape[d]; coord.set(d, index / num_elements); @@ -392,7 +397,7 @@ inline int coord2index(const TensorShape &shape, const Coordinates &coord) int index = 0; int dim_size = 1; - for(unsigned int i = 0; i < coord.num_dimensions(); ++i) + for (unsigned int i = 0; i < coord.num_dimensions(); ++i) { index += coord[i] * dim_size; dim_size *= shape[i]; @@ -404,9 +409,9 @@ inline int coord2index(const TensorShape &shape, const Coordinates &coord) /** Check if a coordinate is within a valid region */ inline bool is_in_valid_region(const ValidRegion &valid_region, Coordinates coord) { - for(size_t d = 0; d < Coordinates::num_max_dimensions; ++d) + for (size_t d = 0; d < Coordinates::num_max_dimensions; ++d) { - if(coord[d] < valid_region.start(d) || coord[d] >= valid_region.end(d)) + if (coord[d] < valid_region.start(d) || coord[d] >= valid_region.end(d)) { return false; } @@ -442,8 +447,12 @@ inline T create_tensor(const TensorInfo &info, IRuntimeContext *ctx = nullptr) * @return Initialized tensor of given type. */ template -inline T create_tensor(const TensorShape &shape, DataType data_type, int num_channels = 1, - QuantizationInfo quantization_info = QuantizationInfo(), DataLayout data_layout = DataLayout::NCHW, IRuntimeContext *ctx = nullptr) +inline T create_tensor(const TensorShape &shape, + DataType data_type, + int num_channels = 1, + QuantizationInfo quantization_info = QuantizationInfo(), + DataLayout data_layout = DataLayout::NCHW, + IRuntimeContext *ctx = nullptr) { T tensor(ctx); TensorInfo info(shape, num_channels, data_type); @@ -485,7 +494,7 @@ inline std::vector generate_random_real(unsigned int num_values, T min, T max std::mt19937 gen(seed); std::uniform_real_distribution dist(min, max); - for(unsigned int i = 0; i < num_values; ++i) + for (unsigned int i = 0; i < num_values; ++i) { v.at(i) = dist(gen); } @@ -512,7 +521,7 @@ inline std::string get_typestring(DataType data_type) const unsigned int i = 1; const char *c = reinterpret_cast(&i); std::string endianness; - if(*c == 1) + if (*c == 1) { endianness = std::string("<"); } @@ -522,7 +531,7 @@ inline std::string get_typestring(DataType data_type) } const std::string no_endianness("|"); - switch(data_type) + switch (data_type) { case DataType::U8: return no_endianness + "u" + support::cpp11::to_string(sizeof(uint8_t)); @@ -557,7 +566,7 @@ template inline void sync_if_necessary() { #ifdef ARM_COMPUTE_CL - if(opencl_is_available() && std::is_same::type, arm_compute::CLTensor>::value) + if (opencl_is_available() && std::is_same::type, arm_compute::CLTensor>::value) { CLScheduler::get().sync(); } diff --git a/tests/benchmark/CL/Scale.cpp b/tests/benchmark/CL/Scale.cpp index 8a1ceb663ea..3506ef922f9 100644 --- a/tests/benchmark/CL/Scale.cpp +++ b/tests/benchmark/CL/Scale.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -26,14 +26,15 @@ #include "arm_compute/runtime/CL/CLTensor.h" #include "arm_compute/runtime/CL/CLTensorAllocator.h" #include "arm_compute/runtime/CL/functions/CLScale.h" + #include "src/core/CL/kernels/CLFillBorderKernel.h" -#include "tests/CL/CLAccessor.h" #include "tests/benchmark/fixtures/ScaleFixture.h" +#include "tests/CL/CLAccessor.h" #include "tests/datasets/BorderModeDataset.h" #include "tests/datasets/SamplingPolicyDataset.h" #include "tests/datasets/ShapeDatasets.h" -#include "tests/framework/Macros.h" #include "tests/framework/datasets/Datasets.h" +#include "tests/framework/Macros.h" #include "utils/TypePrinter.h" namespace arm_compute @@ -44,18 +45,24 @@ namespace benchmark { namespace { -const auto interpolation_types = framework::dataset::make("InterpolationPolicy", { InterpolationPolicy::NEAREST_NEIGHBOR, InterpolationPolicy::BILINEAR }); +const auto interpolation_types = framework::dataset::make( + "InterpolationPolicy", {InterpolationPolicy::NEAREST_NEIGHBOR, InterpolationPolicy::BILINEAR}); } // namespace using CLScaleFixture = ScaleFixture; TEST_SUITE(CL) TEST_SUITE(Scale) -REGISTER_FIXTURE_DATA_TEST_CASE(RunSmall, CLScaleFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(combine(datasets::SmallImageShapes(), framework::dataset::make("DataType", { DataType::F16, DataType::F32 })), - framework::dataset::make("DataLayout", { DataLayout::NCHW })), - interpolation_types), - datasets::BorderModes()), - datasets::SamplingPolicies())); +REGISTER_FIXTURE_DATA_TEST_CASE( + RunSmall, + CLScaleFixture, + framework::DatasetMode::PRECOMMIT, + combine(combine(combine(combine(combine(datasets::SmallImageShapes(), + framework::dataset::make("DataType", {DataType::F16, DataType::F32})), + framework::dataset::make("DataLayout", {DataLayout::NCHW})), + interpolation_types), + datasets::BorderModes()), + datasets::SamplingPolicies())); TEST_SUITE_END() // Scale TEST_SUITE_END() // CL } // namespace benchmark diff --git a/tests/benchmark/NEON/Scale.cpp b/tests/benchmark/NEON/Scale.cpp index 85a9e68fee2..baf04c71996 100644 --- a/tests/benchmark/NEON/Scale.cpp +++ b/tests/benchmark/NEON/Scale.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -26,12 +26,13 @@ #include "arm_compute/runtime/NEON/functions/NEScale.h" #include "arm_compute/runtime/Tensor.h" #include "arm_compute/runtime/TensorAllocator.h" -#include "tests/NEON/Accessor.h" + #include "tests/benchmark/fixtures/ScaleFixture.h" #include "tests/datasets/BorderModeDataset.h" #include "tests/datasets/ShapeDatasets.h" -#include "tests/framework/Macros.h" #include "tests/framework/datasets/Datasets.h" +#include "tests/framework/Macros.h" +#include "tests/NEON/Accessor.h" #include "utils/TypePrinter.h" namespace arm_compute @@ -42,18 +43,25 @@ namespace benchmark { namespace { -const auto interpolation_types = framework::dataset::make("InterpolationPolicy", { InterpolationPolicy::NEAREST_NEIGHBOR, InterpolationPolicy::BILINEAR }); +const auto interpolation_types = framework::dataset::make( + "InterpolationPolicy", {InterpolationPolicy::NEAREST_NEIGHBOR, InterpolationPolicy::BILINEAR}); } // namespace using NEScaleFixture = ScaleFixture; TEST_SUITE(NEON) TEST_SUITE(Scale) -REGISTER_FIXTURE_DATA_TEST_CASE(RunSmall, NEScaleFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(combine(datasets::SmallImageShapes(), framework::dataset::make("DataType", { DataType::U8, DataType::S16, DataType::F32 })), - framework::dataset::make("DataLayout", { DataLayout::NCHW })), - interpolation_types), - datasets::BorderModes()), - framework::dataset::make("SamplingPolicy", { SamplingPolicy::CENTER }))); +REGISTER_FIXTURE_DATA_TEST_CASE( + RunSmall, + NEScaleFixture, + framework::DatasetMode::PRECOMMIT, + combine(combine(combine(combine(combine(datasets::SmallImageShapes(), + framework::dataset::make("DataType", + {DataType::U8, DataType::S16, DataType::F32})), + framework::dataset::make("DataLayout", {DataLayout::NCHW})), + interpolation_types), + datasets::BorderModes()), + framework::dataset::make("SamplingPolicy", {SamplingPolicy::CENTER}))); TEST_SUITE_END() // Scale TEST_SUITE_END() // Neon } // namespace benchmark diff --git a/tests/benchmark/fixtures/ScaleFixture.h b/tests/benchmark/fixtures/ScaleFixture.h index 81f34bd5385..71498ad7b14 100644 --- a/tests/benchmark/fixtures/ScaleFixture.h +++ b/tests/benchmark/fixtures/ScaleFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020, 2023 Arm Limited. + * Copyright (c) 2017-2020, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SCALE_FIXTURE -#define ARM_COMPUTE_TEST_SCALE_FIXTURE +#ifndef ACL_TESTS_BENCHMARK_FIXTURES_SCALEFIXTURE_H +#define ACL_TESTS_BENCHMARK_FIXTURES_SCALEFIXTURE_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + +#include "tests/framework/Fixture.h" #include "tests/Globals.h" #include "tests/Utils.h" -#include "tests/framework/Fixture.h" namespace arm_compute { @@ -40,13 +41,18 @@ template class ScaleFixture : public framework::Fixture { public: - void setup(TensorShape shape, DataType data_type, DataLayout data_layout, InterpolationPolicy policy, BorderMode border_mode, SamplingPolicy sampling_policy) + void setup(TensorShape shape, + DataType data_type, + DataLayout data_layout, + InterpolationPolicy policy, + BorderMode border_mode, + SamplingPolicy sampling_policy) { constexpr float max_width = 8192.0f; constexpr float max_height = 6384.0f; // Change shape in case of NHWC. - if(data_layout == DataLayout::NHWC) + if (data_layout == DataLayout::NHWC) { permute(shape, PermutationVector(2U, 0U, 1U)); } @@ -74,7 +80,8 @@ class ScaleFixture : public framework::Fixture dst = create_tensor(shape_scaled, data_type); // Create and configure function - scale_func.configure(&src, &dst, ScaleKernelInfo{ policy, border_mode, constant_border_value, sampling_policy, false }); + scale_func.configure(&src, &dst, + ScaleKernelInfo{policy, border_mode, constant_border_value, sampling_policy, false}); // Allocate tensors src.allocator()->allocate(); @@ -106,4 +113,4 @@ class ScaleFixture : public framework::Fixture } // namespace benchmark } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SCALE_FIXTURE */ +#endif // ACL_TESTS_BENCHMARK_FIXTURES_SCALEFIXTURE_H diff --git a/tests/benchmark/fixtures/ScaleLayerFixture.h b/tests/benchmark/fixtures/ScaleLayerFixture.h index 59cc12c77de..640ca51778d 100644 --- a/tests/benchmark/fixtures/ScaleLayerFixture.h +++ b/tests/benchmark/fixtures/ScaleLayerFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021, 2023 Arm Limited. + * Copyright (c) 2017-2021, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,15 +21,16 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SCALELAYERFIXTURE -#define ARM_COMPUTE_TEST_SCALELAYERFIXTURE +#ifndef ACL_TESTS_BENCHMARK_FIXTURES_SCALELAYERFIXTURE_H +#define ACL_TESTS_BENCHMARK_FIXTURES_SCALELAYERFIXTURE_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" -#include "tests/Globals.h" -#include "tests/Utils.h" + #include "tests/framework/Asserts.h" #include "tests/framework/Fixture.h" +#include "tests/Globals.h" +#include "tests/Utils.h" namespace arm_compute { @@ -40,7 +41,13 @@ template class ScaleLayerFixture : public framework::Fixture { public: - void setup(TensorShape shape, InterpolationPolicy policy, BorderMode border_mode, SamplingPolicy sampling_policy, float sx, float sy, DataType data_type) + void setup(TensorShape shape, + InterpolationPolicy policy, + BorderMode border_mode, + SamplingPolicy sampling_policy, + float sx, + float sy, + DataType data_type) { constexpr float max_width = 8192.0f; constexpr float max_height = 6384.0f; @@ -60,7 +67,7 @@ class ScaleLayerFixture : public framework::Fixture shape_scaled.set(1, shape[1] * scale_y); dst = create_tensor(shape_scaled, data_type); - scale_layer.configure(&src, &dst, ScaleKernelInfo{ policy, border_mode, constant_border_value, sampling_policy }); + scale_layer.configure(&src, &dst, ScaleKernelInfo{policy, border_mode, constant_border_value, sampling_policy}); ARM_COMPUTE_ASSERT(src.info()->is_resizable()); ARM_COMPUTE_ASSERT(dst.info()->is_resizable()); @@ -94,4 +101,4 @@ class ScaleLayerFixture : public framework::Fixture }; } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SCALELAYERFIXTURE */ +#endif // ACL_TESTS_BENCHMARK_FIXTURES_SCALELAYERFIXTURE_H diff --git a/tests/benchmark_examples/RunExample.cpp b/tests/benchmark_examples/RunExample.cpp index 3e56ea2e646..d37bbe32a09 100644 --- a/tests/benchmark_examples/RunExample.cpp +++ b/tests/benchmark_examples/RunExample.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2021,2023 Arm Limited. + * Copyright (c) 2018-2021,2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,15 +24,15 @@ #include "utils/Utils.h" #define BENCHMARK_EXAMPLES -#include "utils/Utils.cpp" - #include "arm_compute/core/Version.h" #include "arm_compute/runtime/Scheduler.h" -#include "tests/framework/Framework.h" -#include "tests/framework/Macros.h" + #include "tests/framework/command_line/CommonOptions.h" +#include "tests/framework/Framework.h" #include "tests/framework/instruments/Instruments.h" +#include "tests/framework/Macros.h" #include "utils/command_line/CommandLineParser.h" +#include "utils/Utils.cpp" #ifdef ARM_COMPUTE_CL #include "arm_compute/runtime/CL/CLGEMMHeuristicsHandle.h" @@ -50,7 +50,7 @@ namespace std::string command_line(int argc, char **argv) { std::stringstream ss; - for(int i = 0; i < argc; i++) + for (int i = 0; i < argc; i++) { ss << argv[i] << " "; } @@ -74,14 +74,14 @@ class ExampleTest : public arm_compute::test::framework::TestCase } void do_run() override { - if(_is_setup) + if (_is_setup) { g_example->do_run(); } } void do_teardown() override { - if(_is_setup) + if (_is_setup) { g_example->do_teardown(); } @@ -89,7 +89,7 @@ class ExampleTest : public arm_compute::test::framework::TestCase } private: - bool _is_setup{ false }; + bool _is_setup{false}; }; int run_example(int argc, char **argv, std::unique_ptr example) @@ -102,7 +102,7 @@ int run_example(int argc, char **argv, std::unique_ptr example) parser.parse(argc, argv); - if(options.help->is_set() && options.help->value()) + if (options.help->is_set() && options.help->value()) { parser.print_help(argv[0]); return 0; @@ -112,14 +112,14 @@ int run_example(int argc, char **argv, std::unique_ptr example) g_example = std::move(example); g_example_argv.clear(); g_example_argv.emplace_back(argv[0]); - for(auto &arg : example_args->value()) + for (auto &arg : example_args->value()) { g_example_argv.emplace_back(const_cast(arg.c_str())); // NOLINT } - if(options.log_level->value() > framework::LogLevel::NONE) + if (options.log_level->value() > framework::LogLevel::NONE) { - for(auto &p : printers) + for (auto &p : printers) { p->print_global_header(); } @@ -127,12 +127,12 @@ int run_example(int argc, char **argv, std::unique_ptr example) #ifdef ARM_COMPUTE_CL CLGEMMHeuristicsHandle gemm_h; - if(opencl_is_available()) + if (opencl_is_available()) { CLBackendType backend_type = CLBackendType::Native; - for(auto &arg : example_args->value()) + for (auto &arg : example_args->value()) { - if(arg.find("--target=clvk") != std::string::npos) + if (arg.find("--target=clvk") != std::string::npos) { backend_type = CLBackendType::Clvk; break; @@ -141,19 +141,19 @@ int run_example(int argc, char **argv, std::unique_ptr example) auto ctx_dev_err = create_opencl_context_and_device(backend_type); ARM_COMPUTE_ERROR_ON_MSG(std::get<2>(ctx_dev_err) != CL_SUCCESS, "Failed to create OpenCL context"); - CLScheduler::get() - .default_init_with_context(std::get<1>(ctx_dev_err), std::get<0>(ctx_dev_err), nullptr, &gemm_h); + CLScheduler::get().default_init_with_context(std::get<1>(ctx_dev_err), std::get<0>(ctx_dev_err), nullptr, + &gemm_h); } #endif /* ARM_COMPUTE_CL */ - if(options.log_level->value() >= framework::LogLevel::CONFIG) + if (options.log_level->value() >= framework::LogLevel::CONFIG) { - for(auto &p : printers) + for (auto &p : printers) { p->print_entry("Version", build_information()); p->print_entry("CommandLine", command_line(argc, argv)); #ifdef ARM_COMPUTE_CL - if(opencl_is_available()) + if (opencl_is_available()) { p->print_entry("CL_DEVICE_VERSION", CLKernelLibrary::get().get_device_version()); } @@ -173,23 +173,25 @@ int run_example(int argc, char **argv, std::unique_ptr example) fconfig.log_level = options.log_level->value(); framework.init(fconfig); - for(auto &p : printers) + for (auto &p : printers) { framework.add_printer(p.get()); } framework.set_throw_errors(options.throw_errors->value()); - arm_compute::test::framework::detail::TestSuiteRegistrar suite{ "Examples" }; + arm_compute::test::framework::detail::TestSuiteRegistrar suite{"Examples"}; #ifdef BARE_METAL - framework.add_test_case(argv[0], framework::DatasetMode::ALL, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE); + framework.add_test_case(argv[0], framework::DatasetMode::ALL, + arm_compute::test::framework::TestCaseFactory::Status::ACTIVE); #else /* BARE_METAL */ - framework.add_test_case(basename(argv[0]), framework::DatasetMode::ALL, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE); + framework.add_test_case(basename(argv[0]), framework::DatasetMode::ALL, + arm_compute::test::framework::TestCaseFactory::Status::ACTIVE); #endif /* BARE_METAL */ //func(argc, argv); bool success = framework.run(); - if(options.log_level->value() > framework::LogLevel::NONE) + if (options.log_level->value() > framework::LogLevel::NONE) { - for(auto &p : printers) + for (auto &p : printers) { p->print_global_footer(); } diff --git a/tests/datasets/ActivationFunctionsDataset.h b/tests/datasets/ActivationFunctionsDataset.h index 9b0d775376f..3dc5595b359 100644 --- a/tests/datasets/ActivationFunctionsDataset.h +++ b/tests/datasets/ActivationFunctionsDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019, 2022 Arm Limited. + * Copyright (c) 2017-2019, 2022, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_ACTIVATIONFUNCTIONS_DATASET_H -#define ARM_COMPUTE_TEST_ACTIVATIONFUNCTIONS_DATASET_H +#ifndef ACL_TESTS_DATASETS_ACTIVATIONFUNCTIONSDATASET_H +#define ACL_TESTS_DATASETS_ACTIVATIONFUNCTIONSDATASET_H #include "arm_compute/core/Types.h" + #include "tests/framework/datasets/ContainerDataset.h" #include @@ -35,49 +36,51 @@ namespace test { namespace datasets { -class ActivationFunctions final : public framework::dataset::ContainerDataset> +class ActivationFunctions final + : public framework::dataset::ContainerDataset> { public: ActivationFunctions() : ContainerDataset("ActivationFunction", - { - ActivationLayerInfo::ActivationFunction::ABS, - ActivationLayerInfo::ActivationFunction::LINEAR, - ActivationLayerInfo::ActivationFunction::LOGISTIC, - ActivationLayerInfo::ActivationFunction::RELU, - ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, - ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, - ActivationLayerInfo::ActivationFunction::LEAKY_RELU, - ActivationLayerInfo::ActivationFunction::SOFT_RELU, - ActivationLayerInfo::ActivationFunction::ELU, - ActivationLayerInfo::ActivationFunction::SQRT, - ActivationLayerInfo::ActivationFunction::SQUARE, - ActivationLayerInfo::ActivationFunction::TANH, - ActivationLayerInfo::ActivationFunction::IDENTITY, + { + ActivationLayerInfo::ActivationFunction::ABS, + ActivationLayerInfo::ActivationFunction::LINEAR, + ActivationLayerInfo::ActivationFunction::LOGISTIC, + ActivationLayerInfo::ActivationFunction::RELU, + ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, + ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, + ActivationLayerInfo::ActivationFunction::LEAKY_RELU, + ActivationLayerInfo::ActivationFunction::SOFT_RELU, + ActivationLayerInfo::ActivationFunction::ELU, + ActivationLayerInfo::ActivationFunction::SQRT, + ActivationLayerInfo::ActivationFunction::SQUARE, + ActivationLayerInfo::ActivationFunction::TANH, + ActivationLayerInfo::ActivationFunction::IDENTITY, #ifdef __aarch64__ - ActivationLayerInfo::ActivationFunction::GELU, + ActivationLayerInfo::ActivationFunction::GELU, #endif /* __aarch64__ */ - }) + }) { } }; -class ActivationFunctionsQuantized final : public framework::dataset::ContainerDataset> +class ActivationFunctionsQuantized final + : public framework::dataset::ContainerDataset> { public: ActivationFunctionsQuantized() : ContainerDataset("ActivationFunctionQuantized", - { - ActivationLayerInfo::ActivationFunction::RELU, - ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, - ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, - ActivationLayerInfo::ActivationFunction::LOGISTIC, - ActivationLayerInfo::ActivationFunction::TANH, - }) + { + ActivationLayerInfo::ActivationFunction::RELU, + ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, + ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, + ActivationLayerInfo::ActivationFunction::LOGISTIC, + ActivationLayerInfo::ActivationFunction::TANH, + }) { } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_ACTIVATIONFUNCTIONS_DATASET_H */ +#endif // ACL_TESTS_DATASETS_ACTIVATIONFUNCTIONSDATASET_H diff --git a/tests/datasets/BatchNormalizationLayerDataset.h b/tests/datasets/BatchNormalizationLayerDataset.h index 02e050c8f67..d542e13e3c7 100644 --- a/tests/datasets/BatchNormalizationLayerDataset.h +++ b/tests/datasets/BatchNormalizationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_BATCHNORMALIZATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_BATCHNORMALIZATION_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_BATCHNORMALIZATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_BATCHNORMALIZATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -45,9 +45,7 @@ class BatchNormalizationLayerDataset iterator(std::vector::const_iterator tensor_it, std::vector::const_iterator param_it, std::vector::const_iterator epsilon_it) - : _tensor_it{ std::move(tensor_it) }, - _param_it{ std::move(param_it) }, - _epsilon_it{ std::move(epsilon_it) } + : _tensor_it{std::move(tensor_it)}, _param_it{std::move(param_it)}, _epsilon_it{std::move(epsilon_it)} { } @@ -113,4 +111,4 @@ class BatchNormalizationLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_BATCHNORMALIZATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_BATCHNORMALIZATIONLAYERDATASET_H diff --git a/tests/datasets/BatchToSpaceDataset.h b/tests/datasets/BatchToSpaceDataset.h index 2670af50dfd..a7dd18c1875 100644 --- a/tests/datasets/BatchToSpaceDataset.h +++ b/tests/datasets/BatchToSpaceDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019, 2023 Arm Limited. + * Copyright (c) 2018-2019, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_BATCH_TO_SPACE_LAYER_DATASET -#define ARM_COMPUTE_TEST_BATCH_TO_SPACE_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_BATCHTOSPACEDATASET_H +#define ACL_TESTS_DATASETS_BATCHTOSPACEDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -46,10 +46,10 @@ class BatchToSpaceLayerDataset std::vector>::const_iterator block_shape_it, std::vector::const_iterator crop_info_it, std::vector::const_iterator dst_it) - : _src_it{ std::move(src_it) }, - _block_shape_it{ std::move(block_shape_it) }, - _crop_info_it{ std::move(crop_info_it) }, - _dst_it{ std::move(dst_it) } + : _src_it{std::move(src_it)}, + _block_shape_it{std::move(block_shape_it)}, + _crop_info_it{std::move(crop_info_it)}, + _dst_it{std::move(dst_it)} { } @@ -92,10 +92,14 @@ class BatchToSpaceLayerDataset int size() const { - return std::min(std::min(std::min(_src_shapes.size(), _block_shapes.size()), _crop_infos.size()), _dst_shapes.size()); + return std::min(std::min(std::min(_src_shapes.size(), _block_shapes.size()), _crop_infos.size()), + _dst_shapes.size()); } - void add_config(const TensorShape &src, const std::vector &block_shape, const CropInfo &crop_info, const TensorShape &dst) + void add_config(const TensorShape &src, + const std::vector &block_shape, + const CropInfo &crop_info, + const TensorShape &dst) { _src_shapes.emplace_back(std::move(src)); _block_shapes.emplace_back(std::move(block_shape)); @@ -124,15 +128,15 @@ class SmallBatchToSpaceLayerDataset final : public BatchToSpaceLayerDataset SmallBatchToSpaceLayerDataset() { // Block size = 1 (effectively no batch to space) - add_config(TensorShape(1U, 1U, 1U, 4U), { 1U, 1U }, CropInfo(), TensorShape(1U, 1U, 1U, 4U)); - add_config(TensorShape(8U, 2U, 4U, 3U), { 1U, 1U }, CropInfo(), TensorShape(8U, 2U, 4U, 3U)); + add_config(TensorShape(1U, 1U, 1U, 4U), {1U, 1U}, CropInfo(), TensorShape(1U, 1U, 1U, 4U)); + add_config(TensorShape(8U, 2U, 4U, 3U), {1U, 1U}, CropInfo(), TensorShape(8U, 2U, 4U, 3U)); // Same block size in both x and y - add_config(TensorShape(3U, 2U, 1U, 4U), { 2U, 2U }, CropInfo(), TensorShape(6U, 4U, 1U, 1U)); - add_config(TensorShape(1U, 3U, 2U, 9U), { 3U, 3U }, CropInfo(), TensorShape(3U, 9U, 2U, 1U)); + add_config(TensorShape(3U, 2U, 1U, 4U), {2U, 2U}, CropInfo(), TensorShape(6U, 4U, 1U, 1U)); + add_config(TensorShape(1U, 3U, 2U, 9U), {3U, 3U}, CropInfo(), TensorShape(3U, 9U, 2U, 1U)); // Different block size in x and y - add_config(TensorShape(5U, 7U, 7U, 4U), { 2U, 1U }, CropInfo(), TensorShape(10U, 7U, 7U, 2U)); - add_config(TensorShape(3U, 3U, 1U, 8U), { 1U, 2U }, CropInfo(), TensorShape(3U, 6U, 1U, 4U)); - add_config(TensorShape(5U, 2U, 2U, 6U), { 3U, 2U }, CropInfo(), TensorShape(15U, 4U, 2U, 1U)); + add_config(TensorShape(5U, 7U, 7U, 4U), {2U, 1U}, CropInfo(), TensorShape(10U, 7U, 7U, 2U)); + add_config(TensorShape(3U, 3U, 1U, 8U), {1U, 2U}, CropInfo(), TensorShape(3U, 6U, 1U, 4U)); + add_config(TensorShape(5U, 2U, 2U, 6U), {3U, 2U}, CropInfo(), TensorShape(15U, 4U, 2U, 1U)); } }; @@ -144,11 +148,11 @@ class SmallBatchToSpaceLayerWithCroppingDataset final : public BatchToSpaceLayer SmallBatchToSpaceLayerWithCroppingDataset() { // Crop in both dims - add_config(TensorShape(5U, 3U, 2U, 8U), { 2U, 2U }, CropInfo(1U, 1U, 2U, 1U), TensorShape(8U, 3U, 2U, 2U)); + add_config(TensorShape(5U, 3U, 2U, 8U), {2U, 2U}, CropInfo(1U, 1U, 2U, 1U), TensorShape(8U, 3U, 2U, 2U)); // Left crop in x dim - add_config(TensorShape(1U, 1U, 1U, 20U), { 4U, 5U }, CropInfo(2U, 1U, 0U, 2U), TensorShape(1U, 3U, 1U, 1U)); + add_config(TensorShape(1U, 1U, 1U, 20U), {4U, 5U}, CropInfo(2U, 1U, 0U, 2U), TensorShape(1U, 3U, 1U, 1U)); // Left crop in y dim - add_config(TensorShape(3U, 1U, 1U, 8U), { 2U, 4U }, CropInfo(0U, 0U, 2U, 1U), TensorShape(6U, 1U, 1U, 1U)); + add_config(TensorShape(3U, 1U, 1U, 8U), {2U, 4U}, CropInfo(0U, 0U, 2U, 1U), TensorShape(6U, 1U, 1U, 1U)); } }; class LargeBatchToSpaceLayerDataset final : public BatchToSpaceLayerDataset @@ -157,14 +161,14 @@ class LargeBatchToSpaceLayerDataset final : public BatchToSpaceLayerDataset LargeBatchToSpaceLayerDataset() { // Same block size in both x and y - add_config(TensorShape(64U, 32U, 2U, 4U), { 2U, 2U }, CropInfo(), TensorShape(128U, 64U, 2U, 1U)); - add_config(TensorShape(128U, 16U, 2U, 18U), { 3U, 3U }, CropInfo(), TensorShape(384U, 48U, 2U, 2U)); + add_config(TensorShape(64U, 32U, 2U, 4U), {2U, 2U}, CropInfo(), TensorShape(128U, 64U, 2U, 1U)); + add_config(TensorShape(128U, 16U, 2U, 18U), {3U, 3U}, CropInfo(), TensorShape(384U, 48U, 2U, 2U)); // Different block size in x and y - add_config(TensorShape(16U, 8U, 2U, 8U), { 4U, 1U }, CropInfo(), TensorShape(64U, 8U, 2U, 2U)); - add_config(TensorShape(8U, 16U, 2U, 8U), { 2U, 4U }, CropInfo(), TensorShape(16U, 64U, 2U, 1U)); + add_config(TensorShape(16U, 8U, 2U, 8U), {4U, 1U}, CropInfo(), TensorShape(64U, 8U, 2U, 2U)); + add_config(TensorShape(8U, 16U, 2U, 8U), {2U, 4U}, CropInfo(), TensorShape(16U, 64U, 2U, 1U)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_BATCH_TO_SPACE_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_BATCHTOSPACEDATASET_H diff --git a/tests/datasets/BorderModeDataset.h b/tests/datasets/BorderModeDataset.h index bb90ad2214a..f9e0b9fc099 100644 --- a/tests/datasets/BorderModeDataset.h +++ b/tests/datasets/BorderModeDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_BORDER_MODE_DATASET_H -#define ARM_COMPUTE_TEST_BORDER_MODE_DATASET_H +#ifndef ACL_TESTS_DATASETS_BORDERMODEDATASET_H +#define ACL_TESTS_DATASETS_BORDERMODEDATASET_H #include "arm_compute/core/Types.h" + #include "tests/framework/datasets/ContainerDataset.h" namespace arm_compute @@ -36,17 +37,11 @@ namespace datasets class BorderModes final : public framework::dataset::ContainerDataset> { public: - BorderModes() - : ContainerDataset("BorderMode", - { - BorderMode::UNDEFINED, - BorderMode::CONSTANT, - BorderMode::REPLICATE - }) + BorderModes() : ContainerDataset("BorderMode", {BorderMode::UNDEFINED, BorderMode::CONSTANT, BorderMode::REPLICATE}) { } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_BORDER_MODE_DATASET_H */ +#endif // ACL_TESTS_DATASETS_BORDERMODEDATASET_H diff --git a/tests/datasets/ChannelShuffleLayerDataset.h b/tests/datasets/ChannelShuffleLayerDataset.h index a851480fa17..8ada17db5a9 100644 --- a/tests/datasets/ChannelShuffleLayerDataset.h +++ b/tests/datasets/ChannelShuffleLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2021 Arm Limited. + * Copyright (c) 2018, 2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_CHANNEL_SHUFFLE_LAYER_DATASET -#define ARM_COMPUTE_TEST_CHANNEL_SHUFFLE_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_CHANNELSHUFFLELAYERDATASET_H +#define ACL_TESTS_DATASETS_CHANNELSHUFFLELAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -42,10 +42,8 @@ class ChannelShuffleLayerDataset struct iterator { - iterator(std::vector::const_iterator tensor_it, - std::vector::const_iterator num_groups_it) - : _tensor_it{ std::move(tensor_it) }, - _num_groups_it{ std::move(num_groups_it) } + iterator(std::vector::const_iterator tensor_it, std::vector::const_iterator num_groups_it) + : _tensor_it{std::move(tensor_it)}, _num_groups_it{std::move(num_groups_it)} { } @@ -126,4 +124,4 @@ class LargeRandomChannelShuffleLayerDataset final : public ChannelShuffleLayerDa } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_CHANNEL_SHUFFLE_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_CHANNELSHUFFLELAYERDATASET_H diff --git a/tests/datasets/Col2ImLayerDataset.h b/tests/datasets/Col2ImLayerDataset.h index 50e64e910c7..ad3dfb87f01 100644 --- a/tests/datasets/Col2ImLayerDataset.h +++ b/tests/datasets/Col2ImLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_COL2IM_DATASET -#define ARM_COMPUTE_TEST_COL2IM_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_COL2IMLAYERDATASET_H +#define ACL_TESTS_DATASETS_COL2IMLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -46,10 +46,10 @@ class Col2ImLayerDataset std::vector::const_iterator convolved_width_it, std::vector::const_iterator convolved_height_it, std::vector::const_iterator num_groups_it) - : _src_it{ std::move(src_it) }, - _convolved_width_it{ std::move(convolved_width_it) }, - _convolved_height_it{ std::move(convolved_height_it) }, - _num_groups_it{ std::move(num_groups_it) } + : _src_it{std::move(src_it)}, + _convolved_width_it{std::move(convolved_width_it)}, + _convolved_height_it{std::move(convolved_height_it)}, + _num_groups_it{std::move(num_groups_it)} { } @@ -87,12 +87,14 @@ class Col2ImLayerDataset iterator begin() const { - return iterator(_src_shapes.begin(), _convolved_widths.begin(), _convolved_heights.begin(), _num_groups.begin()); + return iterator(_src_shapes.begin(), _convolved_widths.begin(), _convolved_heights.begin(), + _num_groups.begin()); } int size() const { - return std::min(_src_shapes.size(), std::min(_convolved_widths.size(), std::min(_convolved_heights.size(), _num_groups.size()))); + return std::min(_src_shapes.size(), + std::min(_convolved_widths.size(), std::min(_convolved_heights.size(), _num_groups.size()))); } void add_config(TensorShape src, unsigned int convolved_width, unsigned int convolved_height, unsigned int info) @@ -152,4 +154,4 @@ class LargeGroupedCol2ImLayerDataset final : public Col2ImLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_COL2IM_DATASET */ +#endif // ACL_TESTS_DATASETS_COL2IMLAYERDATASET_H diff --git a/tests/datasets/ComparisonOperationsDataset.h b/tests/datasets/ComparisonOperationsDataset.h index d015ee0a8b9..d5989676d1b 100644 --- a/tests/datasets/ComparisonOperationsDataset.h +++ b/tests/datasets/ComparisonOperationsDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 Arm Limited. + * Copyright (c) 2018-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_COMPARISON_OPERATIONS_DATASET_H -#define ARM_COMPUTE_TEST_COMPARISON_OPERATIONS_DATASET_H +#ifndef ACL_TESTS_DATASETS_COMPARISONOPERATIONSDATASET_H +#define ACL_TESTS_DATASETS_COMPARISONOPERATIONSDATASET_H #include "arm_compute/core/Types.h" -#include "tests/framework/datasets/ContainerDataset.h" +#include "tests/framework/datasets/ContainerDataset.h" #include "utils/TypePrinter.h" namespace arm_compute @@ -40,18 +40,13 @@ class ComparisonOperations final : public framework::dataset::ContainerDataset> { public: - ConvertPolicies() - : ContainerDataset("ConvertPolicy", - { - ConvertPolicy::WRAP, - ConvertPolicy::SATURATE - }) + ConvertPolicies() : ContainerDataset("ConvertPolicy", {ConvertPolicy::WRAP, ConvertPolicy::SATURATE}) { } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_CONVERT_POLICY_DATASETS_H */ +#endif // ACL_TESTS_DATASETS_CONVERTPOLICYDATASET_H diff --git a/tests/datasets/ConvolutionLayerDataset.h b/tests/datasets/ConvolutionLayerDataset.h index 075f7f0fad5..aa8239797a2 100644 --- a/tests/datasets/ConvolutionLayerDataset.h +++ b/tests/datasets/ConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_CONVOLUTION_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_CONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_CONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -48,12 +48,12 @@ class ConvolutionLayerDataset std::vector::const_iterator dst_it, std::vector::const_iterator infos_it, std::vector::const_iterator dilation_it) - : _src_it{ std::move(src_it) }, - _weights_it{ std::move(weights_it) }, - _biases_it{ std::move(biases_it) }, - _dst_it{ std::move(dst_it) }, - _infos_it{ std::move(infos_it) }, - _dilation_it{ std::move(dilation_it) } + : _src_it{std::move(src_it)}, + _weights_it{std::move(weights_it)}, + _biases_it{std::move(biases_it)}, + _dst_it{std::move(dst_it)}, + _infos_it{std::move(infos_it)}, + _dilation_it{std::move(dilation_it)} { } @@ -97,15 +97,24 @@ class ConvolutionLayerDataset iterator begin() const { - return iterator(_src_shapes.begin(), _weight_shapes.begin(), _bias_shapes.begin(), _dst_shapes.begin(), _infos.begin(), _dilations.begin()); + return iterator(_src_shapes.begin(), _weight_shapes.begin(), _bias_shapes.begin(), _dst_shapes.begin(), + _infos.begin(), _dilations.begin()); } int size() const { - return std::min(_src_shapes.size(), std::min(_weight_shapes.size(), std::min(_bias_shapes.size(), std::min(_dst_shapes.size(), std::min(_infos.size(), _dilations.size()))))); + return std::min(_src_shapes.size(), + std::min(_weight_shapes.size(), + std::min(_bias_shapes.size(), + std::min(_dst_shapes.size(), std::min(_infos.size(), _dilations.size()))))); } - void add_config(TensorShape src, TensorShape weights, TensorShape biases, TensorShape dst, PadStrideInfo info, Size2D dilation = Size2D(1U, 1U)) + void add_config(TensorShape src, + TensorShape weights, + TensorShape biases, + TensorShape dst, + PadStrideInfo info, + Size2D dilation = Size2D(1U, 1U)) { _src_shapes.emplace_back(std::move(src)); _weight_shapes.emplace_back(std::move(weights)); @@ -130,4 +139,4 @@ class ConvolutionLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_CONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/CropResizeDataset.h b/tests/datasets/CropResizeDataset.h index 14da8bd4ff4..7135b48aae6 100644 --- a/tests/datasets/CropResizeDataset.h +++ b/tests/datasets/CropResizeDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Arm Limited. + * Copyright (c) 2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_CROP_RESIZE_DATASET -#define ARM_COMPUTE_TEST_CROP_RESIZE_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_CROPRESIZEDATASET_H +#define ACL_TESTS_DATASETS_CROPRESIZEDATASET_H #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -46,11 +46,11 @@ class CropResizeDataset std::vector::const_iterator crop_size_values_it, std::vector::const_iterator method_values_it, std::vector::const_iterator extrapolation_values_it) - : _src_shapes_it{ std::move(src_shapes_it) }, - _boxes_shapes_it{ std::move(boxes_shapes_it) }, - _crop_size_values_it{ std::move(crop_size_values_it) }, - _method_values_it{ std::move(method_values_it) }, - _extrapolation_values_it{ std::move(extrapolation_values_it) } + : _src_shapes_it{std::move(src_shapes_it)}, + _boxes_shapes_it{std::move(boxes_shapes_it)}, + _crop_size_values_it{std::move(crop_size_values_it)}, + _method_values_it{std::move(method_values_it)}, + _extrapolation_values_it{std::move(extrapolation_values_it)} { } @@ -67,7 +67,8 @@ class CropResizeDataset CropResizeDataset::type operator*() const { - return std::make_tuple(*_src_shapes_it, *_boxes_shapes_it, *_crop_size_values_it, *_method_values_it, *_extrapolation_values_it); + return std::make_tuple(*_src_shapes_it, *_boxes_shapes_it, *_crop_size_values_it, *_method_values_it, + *_extrapolation_values_it); } iterator &operator++() @@ -90,15 +91,23 @@ class CropResizeDataset iterator begin() const { - return iterator(_src_shapes.begin(), _boxes_shapes.begin(), _crop_size_values.begin(), _method_values.begin(), _extrapolation_values.begin()); + return iterator(_src_shapes.begin(), _boxes_shapes.begin(), _crop_size_values.begin(), _method_values.begin(), + _extrapolation_values.begin()); } int size() const { - return std::min(_src_shapes.size(), std::min(_boxes_shapes.size(), std::min(_crop_size_values.size(), std::min(_method_values.size(), _extrapolation_values.size())))); + return std::min( + _src_shapes.size(), + std::min(_boxes_shapes.size(), std::min(_crop_size_values.size(), + std::min(_method_values.size(), _extrapolation_values.size())))); } - void add_config(TensorShape src_shape, TensorShape boxes_shape, Coordinates2D crop_size, InterpolationPolicy method, float extrapolation_value) + void add_config(TensorShape src_shape, + TensorShape boxes_shape, + Coordinates2D crop_size, + InterpolationPolicy method, + float extrapolation_value) { _src_shapes.emplace_back(std::move(src_shape)); _boxes_shapes.emplace_back(std::move(boxes_shape)); @@ -124,18 +133,24 @@ class SmallCropResizeDataset final : public CropResizeDataset public: SmallCropResizeDataset() { - add_config(TensorShape(1U, 5U, 5U), TensorShape(4, 5), Coordinates2D{ 2, 2 }, InterpolationPolicy::BILINEAR, 100); - add_config(TensorShape(3U, 5U, 5U), TensorShape(4, 5), Coordinates2D{ 2, 2 }, InterpolationPolicy::BILINEAR, 100); - add_config(TensorShape(1U, 5U, 5U), TensorShape(4, 5), Coordinates2D{ 10, 10 }, InterpolationPolicy::BILINEAR, 100); - add_config(TensorShape(15U, 30U, 30U, 10U), TensorShape(4, 20), Coordinates2D{ 10, 10 }, InterpolationPolicy::BILINEAR, 100); + add_config(TensorShape(1U, 5U, 5U), TensorShape(4, 5), Coordinates2D{2, 2}, InterpolationPolicy::BILINEAR, 100); + add_config(TensorShape(3U, 5U, 5U), TensorShape(4, 5), Coordinates2D{2, 2}, InterpolationPolicy::BILINEAR, 100); + add_config(TensorShape(1U, 5U, 5U), TensorShape(4, 5), Coordinates2D{10, 10}, InterpolationPolicy::BILINEAR, + 100); + add_config(TensorShape(15U, 30U, 30U, 10U), TensorShape(4, 20), Coordinates2D{10, 10}, + InterpolationPolicy::BILINEAR, 100); - add_config(TensorShape(1U, 5U, 5U), TensorShape(4, 5), Coordinates2D{ 2, 2 }, InterpolationPolicy::NEAREST_NEIGHBOR, 100); - add_config(TensorShape(3U, 5U, 5U), TensorShape(4, 5), Coordinates2D{ 2, 2 }, InterpolationPolicy::NEAREST_NEIGHBOR, 100); - add_config(TensorShape(1U, 5U, 5U), TensorShape(4, 5), Coordinates2D{ 10, 10 }, InterpolationPolicy::NEAREST_NEIGHBOR, 100); - add_config(TensorShape(15U, 30U, 30U, 10U), TensorShape(4, 20), Coordinates2D{ 10, 10 }, InterpolationPolicy::NEAREST_NEIGHBOR, 100); + add_config(TensorShape(1U, 5U, 5U), TensorShape(4, 5), Coordinates2D{2, 2}, + InterpolationPolicy::NEAREST_NEIGHBOR, 100); + add_config(TensorShape(3U, 5U, 5U), TensorShape(4, 5), Coordinates2D{2, 2}, + InterpolationPolicy::NEAREST_NEIGHBOR, 100); + add_config(TensorShape(1U, 5U, 5U), TensorShape(4, 5), Coordinates2D{10, 10}, + InterpolationPolicy::NEAREST_NEIGHBOR, 100); + add_config(TensorShape(15U, 30U, 30U, 10U), TensorShape(4, 20), Coordinates2D{10, 10}, + InterpolationPolicy::NEAREST_NEIGHBOR, 100); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_CROP_RESIZE_DATASET */ \ No newline at end of file +#endif // ACL_TESTS_DATASETS_CROPRESIZEDATASET_H diff --git a/tests/datasets/DatatypeDataset.h b/tests/datasets/DatatypeDataset.h index b1928b5e1d5..3556faf7ef8 100644 --- a/tests/datasets/DatatypeDataset.h +++ b/tests/datasets/DatatypeDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2020, 2024 Arm Limited. + * Copyright (c) 2019-2020, 2024-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -25,6 +25,7 @@ #define ACL_TESTS_DATASETS_DATATYPEDATASET_H #include "arm_compute/core/CoreTypes.h" + #include "tests/framework/datasets/ContainerDataset.h" #include @@ -39,29 +40,30 @@ class AllDataTypes final : public framework::dataset::ContainerDataset> { public: - QuantizedPerChannelTypes() - : ContainerDataset("QuantizedPerChannelTypes", - { - DataType::QSYMM8_PER_CHANNEL - }) + QuantizedPerChannelTypes() : ContainerDataset("QuantizedPerChannelTypes", {DataType::QSYMM8_PER_CHANNEL}) { } }; diff --git a/tests/datasets/DepthToSpaceDataset.h b/tests/datasets/DepthToSpaceDataset.h index 27cb6ade8a9..49b81cac0ec 100644 --- a/tests/datasets/DepthToSpaceDataset.h +++ b/tests/datasets/DepthToSpaceDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Arm Limited. + * Copyright (c) 2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DEPTH_TO_SPACE_LAYER_DATASET -#define ARM_COMPUTE_TEST_DEPTH_TO_SPACE_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_DEPTHTOSPACEDATASET_H +#define ACL_TESTS_DATASETS_DEPTHTOSPACEDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -45,9 +45,7 @@ class DepthToSpaceLayerDataset iterator(std::vector::const_iterator src_it, std::vector::const_iterator block_shape_it, std::vector::const_iterator dst_it) - : _src_it{ std::move(src_it) }, - _block_shape_it{ std::move(block_shape_it) }, - _dst_it{ std::move(dst_it) } + : _src_it{std::move(src_it)}, _block_shape_it{std::move(block_shape_it)}, _dst_it{std::move(dst_it)} { } @@ -136,4 +134,4 @@ class LargeDepthToSpaceLayerDataset final : public DepthToSpaceLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DEPTH_TO_SPACE_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_DEPTHTOSPACEDATASET_H diff --git a/tests/datasets/DepthwiseConvolutionLayerDataset.h b/tests/datasets/DepthwiseConvolutionLayerDataset.h index d3cf4ab13e3..44cdf8c7670 100644 --- a/tests/datasets/DepthwiseConvolutionLayerDataset.h +++ b/tests/datasets/DepthwiseConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021, 2023-2024 Arm Limited. + * Copyright (c) 2017-2021, 2023-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,11 +24,11 @@ #ifndef ACL_TESTS_DATASETS_DEPTHWISECONVOLUTIONLAYERDATASET_H #define ACL_TESTS_DATASETS_DEPTHWISECONVOLUTIONLAYERDATASET_H -#include "utils/TypePrinter.h" - #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -46,10 +46,10 @@ class DepthwiseConvolutionLayerDataset std::vector::const_iterator weights_it, std::vector::const_iterator infos_it, std::vector::const_iterator dilation_it) - : _src_it{ std::move(src_it) }, - _weights_it{ std::move(weights_it) }, - _infos_it{ std::move(infos_it) }, - _dilation_it{ std::move(dilation_it) } + : _src_it{std::move(src_it)}, + _weights_it{std::move(weights_it)}, + _infos_it{std::move(infos_it)}, + _dilation_it{std::move(dilation_it)} { } @@ -92,7 +92,8 @@ class DepthwiseConvolutionLayerDataset int size() const { - return std::min(_src_shapes.size(), std::min(_weight_shapes.size(), std::min(_infos.size(), _dilations.size()))); + return std::min(_src_shapes.size(), + std::min(_weight_shapes.size(), std::min(_infos.size(), _dilations.size()))); } void add_config(TensorShape src, Size2D weights, PadStrideInfo info, Size2D dilation = Size2D(1U, 1U)) @@ -124,10 +125,13 @@ class SmallDepthwiseConvolutionLayerDataset final : public DepthwiseConvolutionL add_config(TensorShape(3U, 3U, 2U), Size2D(2U, 2U), PadStrideInfo(1, 1, 0, 0)); add_config(TensorShape(33U, 27U, 7U), Size2D(7U, 3U), PadStrideInfo(3, 2, 1, 0)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR)); // Ceil rounding - add_config(TensorShape(7U, 8U, 5U, 9U), Size2D(8U, 6U), PadStrideInfo(2, 3, 1, 1, 1, 3, DimensionRoundingType::CEIL)); + add_config(TensorShape(7U, 8U, 5U, 9U), Size2D(8U, 6U), + PadStrideInfo(2, 3, 1, 1, 1, 3, DimensionRoundingType::CEIL)); } }; @@ -148,12 +152,17 @@ class LargeDepthwiseConvolutionLayerDataset final : public DepthwiseConvolutionL add_config(TensorShape(333U, 79U, 77U), Size2D(3U, 4U), PadStrideInfo(2, 3, 0, 1)); add_config(TensorShape(67U, 211U, 22U), Size2D(3U, 4U), PadStrideInfo(2, 1, 1, 1)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); // Padding greater than kernel size. - add_config(TensorShape(128, 56, 56), Size2D(4, 4), PadStrideInfo(2, 2, 0, 10, 0, 10, DimensionRoundingType::FLOOR)); + add_config(TensorShape(128, 56, 56), Size2D(4, 4), + PadStrideInfo(2, 2, 0, 10, 0, 10, DimensionRoundingType::FLOOR)); } }; @@ -165,8 +174,10 @@ class LargeCpuDepthwiseConv2dDataset final : public DepthwiseConvolutionLayerDat { add_config(TensorShape(33U, 27U, 11U), Size2D(3U, 4U), PadStrideInfo(1, 2, 0, 1)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR)); // Unlike LargeDepthwiseConvolutionLayerDataset, this does not have padding greater than kernel size. } }; @@ -182,10 +193,13 @@ class LargeDepthwiseConvolutionLayerDatasetFp16Subset final : public DepthwiseCo add_config(TensorShape(177U, 111U, 22U), Size2D(3U, 4U), PadStrideInfo(1, 2, 1, 1)); add_config(TensorShape(67U, 211U, 22U), Size2D(3U, 4U), PadStrideInfo(2, 1, 1, 1)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR)); // Padding greater than kernel size. - add_config(TensorShape(128, 56, 56), Size2D(4, 4), PadStrideInfo(2, 2, 0, 10, 0, 10, DimensionRoundingType::FLOOR)); + add_config(TensorShape(128, 56, 56), Size2D(4, 4), + PadStrideInfo(2, 2, 0, 10, 0, 10, DimensionRoundingType::FLOOR)); } }; @@ -209,7 +223,8 @@ class SmallDepthwiseConvolutionLayerDataset3x3 final : public DepthwiseConvoluti add_config(TensorShape(7U, 8U, 3U, 2U), Size2D(3U, 3U), PadStrideInfo(1, 1, 0, 0)); add_config(TensorShape(32U, 31U, 9U, 4U), Size2D(3U, 3U), PadStrideInfo(1, 1, 0, 0)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 11U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 11U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); } }; @@ -220,7 +235,8 @@ class SmallDepthwiseConvolutionLayerDataset3x3NCHW final : public DepthwiseConvo { add_config(TensorShape(33U, 27U, 11U), Size2D(3U, 3U), PadStrideInfo(3, 2, 1, 1)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 11U), Size2D(3U, 3U), PadStrideInfo(2, 2, 3, 1, 2, 1, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 11U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 3, 1, 2, 1, DimensionRoundingType::FLOOR)); } }; @@ -275,12 +291,15 @@ class SmallOptimizedDepthwiseConvolutionLayerDataset3x3 final : public Depthwise { // Stride 1 add_config(TensorShape(7U, 7U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL)); - add_config(TensorShape(7U, 7U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL), Size2D(2U, 2U)); + add_config(TensorShape(7U, 7U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL), + Size2D(2U, 2U)); add_config(TensorShape(7U, 7U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)); - add_config(TensorShape(7U, 7U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 2, 2, DimensionRoundingType::CEIL), Size2D(2U, 2U)); + add_config(TensorShape(7U, 7U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 2, 2, DimensionRoundingType::CEIL), + Size2D(2U, 2U)); // Stride 2 add_config(TensorShape(9U, 9U, 32U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)); - add_config(TensorShape(9U, 9U, 32U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL), Size2D(2U, 2U)); + add_config(TensorShape(9U, 9U, 32U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL), + Size2D(2U, 2U)); add_config(TensorShape(9U, 9U, 32U), Size2D(3U, 3U), PadStrideInfo(2, 2, 1, 1, DimensionRoundingType::CEIL)); } }; @@ -291,18 +310,23 @@ class LargeOptimizedDepthwiseConvolutionLayerDataset3x3 final : public Depthwise LargeOptimizedDepthwiseConvolutionLayerDataset3x3() { // Stride 1 - add_config(TensorShape(233U, 173U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL)); + add_config(TensorShape(233U, 173U, 16U), Size2D(3U, 3U), + PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL)); add_config(TensorShape(133U, 7U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)); add_config(TensorShape(7U, 7U, 21U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)); add_config(TensorShape(28U, 28U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL)); add_config(TensorShape(28U, 28U, 16U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)); // Stride 2 add_config(TensorShape(133U, 97U, 32U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)); - add_config(TensorShape(153U, 77U, 32U), Size2D(3U, 3U), PadStrideInfo(2, 2, 1, 1, 1, 1, DimensionRoundingType::CEIL)); + add_config(TensorShape(153U, 77U, 32U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 1, 1, 1, 1, DimensionRoundingType::CEIL)); add_config(TensorShape(8U, 8U, 32U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(8U, 8U, 32U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::CEIL)); - add_config(TensorShape(8U, 8U, 33U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::CEIL)); - add_config(TensorShape(64U, 64U, 128U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::CEIL)); + add_config(TensorShape(8U, 8U, 32U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::CEIL)); + add_config(TensorShape(8U, 8U, 33U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::CEIL)); + add_config(TensorShape(64U, 64U, 128U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::CEIL)); } }; @@ -314,14 +338,19 @@ class SmallOptimizedDepthwiseConvolutionLayerDataset5x5 final : public Depthwise { // Stride 1 add_config(TensorShape(7U, 7U, 16U), Size2D(5U, 5U), PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL)); - add_config(TensorShape(11U, 11U, 16U), Size2D(5U, 5U), PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL), Size2D(2U, 2U)); + add_config(TensorShape(11U, 11U, 16U), Size2D(5U, 5U), PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL), + Size2D(2U, 2U)); add_config(TensorShape(7U, 7U, 16U), Size2D(5U, 5U), PadStrideInfo(1, 1, 2, 2, DimensionRoundingType::CEIL)); - add_config(TensorShape(7U, 7U, 16U), Size2D(5U, 5U), PadStrideInfo(1, 1, 4, 4, DimensionRoundingType::CEIL), Size2D(2U, 2U)); + add_config(TensorShape(7U, 7U, 16U), Size2D(5U, 5U), PadStrideInfo(1, 1, 4, 4, DimensionRoundingType::CEIL), + Size2D(2U, 2U)); // Stride 2 add_config(TensorShape(9U, 9U, 32U), Size2D(5U, 5U), PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)); - add_config(TensorShape(9U, 9U, 32U), Size2D(5U, 5U), PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL), Size2D(2U, 2U)); - add_config(TensorShape(9U, 9U, 32U), Size2D(5U, 5U), PadStrideInfo(2, 2, 2, 2, 2, 2, DimensionRoundingType::CEIL)); - add_config(TensorShape(9U, 9U, 32U), Size2D(5U, 5U), PadStrideInfo(2, 2, 4, 4, 4, 4, DimensionRoundingType::CEIL), Size2D(2U, 2U)); + add_config(TensorShape(9U, 9U, 32U), Size2D(5U, 5U), PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL), + Size2D(2U, 2U)); + add_config(TensorShape(9U, 9U, 32U), Size2D(5U, 5U), + PadStrideInfo(2, 2, 2, 2, 2, 2, DimensionRoundingType::CEIL)); + add_config(TensorShape(9U, 9U, 32U), Size2D(5U, 5U), + PadStrideInfo(2, 2, 4, 4, 4, 4, DimensionRoundingType::CEIL), Size2D(2U, 2U)); } }; diff --git a/tests/datasets/DilatedConvolutionLayerDataset.h b/tests/datasets/DilatedConvolutionLayerDataset.h index fd3683c8b31..e1d4f77c492 100644 --- a/tests/datasets/DilatedConvolutionLayerDataset.h +++ b/tests/datasets/DilatedConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DILATED_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_DILATED_CONVOLUTION_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_DILATEDCONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_DILATEDCONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" namespace arm_compute { @@ -42,10 +42,13 @@ class TinyDilatedConvolutionLayerDataset final : public ConvolutionLayerDataset TinyDilatedConvolutionLayerDataset() { // Batch size 1 - add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), TensorShape(10U, 23U, 21U), PadStrideInfo(2, 1, 0, 0), Size2D(2U, 2U)); - add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), TensorShape(11U, 10U, 16U), PadStrideInfo(3, 2, 1, 0), Size2D(1U, 2U)); + add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), + TensorShape(10U, 23U, 21U), PadStrideInfo(2, 1, 0, 0), Size2D(2U, 2U)); + add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), + TensorShape(11U, 10U, 16U), PadStrideInfo(3, 2, 1, 0), Size2D(1U, 2U)); // Batch size 4 - add_config(TensorShape(17U, 31U, 2U, 4U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), TensorShape(11U, 13U, 19U, 4U), PadStrideInfo(1, 2, 1, 1), Size2D(2U, 2U)); + add_config(TensorShape(17U, 31U, 2U, 4U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), + TensorShape(11U, 13U, 19U, 4U), PadStrideInfo(1, 2, 1, 1), Size2D(2U, 2U)); } }; @@ -54,11 +57,16 @@ class SmallDilatedConvolutionLayerDataset final : public ConvolutionLayerDataset public: SmallDilatedConvolutionLayerDataset() { - add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), TensorShape(10U, 23U, 21U), PadStrideInfo(2, 1, 0, 0), Size2D(2U, 2U)); - add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), TensorShape(11U, 10U, 16U), PadStrideInfo(3, 2, 1, 0), Size2D(1U, 2U)); - add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), TensorShape(11U, 15U, 19U), PadStrideInfo(1, 2, 1, 1), Size2D(2U, 1U)); - add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 1U, 5U, 21U), TensorShape(21U), TensorShape(9U, 27U, 21U), PadStrideInfo(2, 1, 0, 0), Size2D(3U, 1U)); - add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 3U, 2U, 19U), TensorShape(19U), TensorShape(11U, 15U, 19U), PadStrideInfo(1, 2, 1, 1), Size2D(2U, 2U)); + add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), + TensorShape(10U, 23U, 21U), PadStrideInfo(2, 1, 0, 0), Size2D(2U, 2U)); + add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), + TensorShape(11U, 10U, 16U), PadStrideInfo(3, 2, 1, 0), Size2D(1U, 2U)); + add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), + TensorShape(11U, 15U, 19U), PadStrideInfo(1, 2, 1, 1), Size2D(2U, 1U)); + add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 1U, 5U, 21U), TensorShape(21U), TensorShape(9U, 27U, 21U), + PadStrideInfo(2, 1, 0, 0), Size2D(3U, 1U)); + add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 3U, 2U, 19U), TensorShape(19U), + TensorShape(11U, 15U, 19U), PadStrideInfo(1, 2, 1, 1), Size2D(2U, 2U)); } }; @@ -68,14 +76,19 @@ class LargeDilatedConvolutionLayerDataset final : public ConvolutionLayerDataset LargeDilatedConvolutionLayerDataset() { // Batch size 1 - add_config(TensorShape(27U, 27U, 96U), TensorShape(5U, 5U, 96U, 256U), TensorShape(256U), TensorShape(15U, 15U, 256U), PadStrideInfo(1, 1, 2, 2), Size2D(4U, 4U)); - add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 384U), TensorShape(384U), TensorShape(11U, 9U, 384U), PadStrideInfo(1, 1, 1, 1), Size2D(2U, 3U)); - add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 384U, 384U), TensorShape(384U), TensorShape(9U, 11U, 384U), PadStrideInfo(1, 1, 1, 1), Size2D(3U, 2U)); - add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 384U, 256U), TensorShape(256U), TensorShape(7U, 7U, 256U), PadStrideInfo(1, 1, 1, 1), Size2D(4U, 4U)); - add_config(TensorShape(224U, 224U, 3U), TensorShape(7U, 7U, 3U, 64U), TensorShape(64U), TensorShape(109U, 112U, 64U), PadStrideInfo(2, 2, 3, 3), Size2D(2U, 1U)); + add_config(TensorShape(27U, 27U, 96U), TensorShape(5U, 5U, 96U, 256U), TensorShape(256U), + TensorShape(15U, 15U, 256U), PadStrideInfo(1, 1, 2, 2), Size2D(4U, 4U)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 384U), TensorShape(384U), + TensorShape(11U, 9U, 384U), PadStrideInfo(1, 1, 1, 1), Size2D(2U, 3U)); + add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 384U, 384U), TensorShape(384U), + TensorShape(9U, 11U, 384U), PadStrideInfo(1, 1, 1, 1), Size2D(3U, 2U)); + add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 384U, 256U), TensorShape(256U), + TensorShape(7U, 7U, 256U), PadStrideInfo(1, 1, 1, 1), Size2D(4U, 4U)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(7U, 7U, 3U, 64U), TensorShape(64U), + TensorShape(109U, 112U, 64U), PadStrideInfo(2, 2, 3, 3), Size2D(2U, 1U)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DILATED_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_DILATEDCONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/DilatedDepthwiseConvolutionLayerDataset.h b/tests/datasets/DilatedDepthwiseConvolutionLayerDataset.h index a58650a5e47..728db448582 100644 --- a/tests/datasets/DilatedDepthwiseConvolutionLayerDataset.h +++ b/tests/datasets/DilatedDepthwiseConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2021, 2023 Arm Limited. + * Copyright (c) 2019-2021, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,11 +24,11 @@ #ifndef ACL_TESTS_DATASETS_DILATEDDEPTHWISECONVOLUTIONLAYERDATASET_H #define ACL_TESTS_DATASETS_DILATEDDEPTHWISECONVOLUTIONLAYERDATASET_H -#include "utils/TypePrinter.h" - #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "tests/datasets/DepthwiseConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" namespace arm_compute { @@ -48,18 +48,23 @@ class SmallDepthwiseDilatedConvolutionLayerDataset final : public DepthwiseConvo add_config(TensorShape(7U, 7U, 1U), Size2D(3U, 2U), PadStrideInfo(1, 1, 0, 0), Size2D(2U, 1U)); add_config(TensorShape(7U, 7U, 1U), Size2D(3U, 2U), PadStrideInfo(2, 1, 0, 0), Size2D(2U, 2U)); add_config(TensorShape(7U, 7U, 1U), Size2D(3U, 2U), PadStrideInfo(2, 2, 0, 0), Size2D(1U, 2U)); - add_config(TensorShape(7U, 8U, 5U, 9U), Size2D(8U, 6U), PadStrideInfo(2, 3, 1, 1, 1, 3, DimensionRoundingType::CEIL), Size2D(1U, 2U)); + add_config(TensorShape(7U, 8U, 5U, 9U), Size2D(8U, 6U), + PadStrideInfo(2, 3, 1, 1, 1, 3, DimensionRoundingType::CEIL), Size2D(1U, 2U)); add_config(TensorShape(7U, 8U, 1U), Size2D(2U, 3U), PadStrideInfo(1, 2, 0, 0), Size2D(2U, 2U)); add_config(TensorShape(23U, 27U, 5U), Size2D(3U, 5U), PadStrideInfo(2, 1, 0, 0), Size2D(2U, 1U)); add_config(TensorShape(33U, 27U, 7U), Size2D(7U, 3U), PadStrideInfo(3, 2, 1, 0), Size2D(1U, 2U)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); // Dilation and padding 2 - add_config(TensorShape(33U, 33U, 3U), Size2D(3U, 3U), PadStrideInfo(1, 1, 2, 2, 2, 2, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); + add_config(TensorShape(33U, 33U, 3U), Size2D(3U, 3U), + PadStrideInfo(1, 1, 2, 2, 2, 2, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); // Dilation and padding 4 - add_config(TensorShape(33U, 33U, 3U), Size2D(3U, 3U), PadStrideInfo(1, 1, 4, 4, 4, 4, DimensionRoundingType::FLOOR), Size2D(4U, 4U)); + add_config(TensorShape(33U, 33U, 3U), Size2D(3U, 3U), + PadStrideInfo(1, 1, 4, 4, 4, 4, DimensionRoundingType::FLOOR), Size2D(4U, 4U)); } }; @@ -86,7 +91,8 @@ class SmallDepthwiseDilatedConvolutionLayerDataset3x3 final : public DepthwiseCo add_config(TensorShape(21U, 31U, 9U, 4U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 0), Size2D(2U, 2U)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 11U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); + add_config(TensorShape(33U, 27U, 11U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); } }; @@ -108,10 +114,14 @@ class LargeDepthwiseDilatedConvolutionLayerDataset final : public DepthwiseConvo add_config(TensorShape(233U, 177U, 77U), Size2D(3U, 3U), PadStrideInfo(2, 3, 0, 1), Size2D(2U, 2U)); add_config(TensorShape(177U, 211U, 22U), Size2D(3U, 3U), PadStrideInfo(2, 1, 1, 1), Size2D(2U, 5U)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR), Size2D(3U, 2U)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR), Size2D(4U, 4U)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR), Size2D(3U, 3U)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR), Size2D(3U, 2U)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR), Size2D(4U, 4U)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR), Size2D(3U, 3U)); } }; @@ -128,8 +138,10 @@ class LargeDepthwiseDilatedConvolutionLayerDatasetFp16Subset final : public Dept add_config(TensorShape(133U, 177U, 55U), Size2D(3U, 3U), PadStrideInfo(1, 2, 0, 0), Size2D(5U, 2U)); add_config(TensorShape(177U, 211U, 22U), Size2D(3U, 3U), PadStrideInfo(2, 1, 1, 1), Size2D(2U, 5U)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR), Size2D(4U, 4U)); - add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR), Size2D(4U, 4U)); + add_config(TensorShape(33U, 27U, 7U), Size2D(5U, 7U), + PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR), Size2D(2U, 2U)); } }; diff --git a/tests/datasets/DirectConvolutionLayerDataset.h b/tests/datasets/DirectConvolutionLayerDataset.h index 0dc5f3095a9..dba0586751d 100644 --- a/tests/datasets/DirectConvolutionLayerDataset.h +++ b/tests/datasets/DirectConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DIRECT_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_DIRECT_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_DIRECTCONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_DIRECTCONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,14 +42,19 @@ class DirectConvolutionLayerDataset final : public ConvolutionLayerDataset public: DirectConvolutionLayerDataset() { - add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 3U), TensorShape(3U), TensorShape(13U, 13U, 3U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 384U, 4U), TensorShape(4U), TensorShape(13U, 13U, 4U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 3U), TensorShape(3U), TensorShape(7U, 7U, 3U), PadStrideInfo(2, 2, 1, 1)); - add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 3U), TensorShape(3U), TensorShape(12U, 12U, 3U), PadStrideInfo(1, 1, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); - add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 384U, 5U), TensorShape(5U), TensorShape(12U, 12U, 5U), PadStrideInfo(1, 1, 1, 0, 1, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 3U), TensorShape(3U), + TensorShape(13U, 13U, 3U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 384U, 4U), TensorShape(4U), + TensorShape(13U, 13U, 4U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 3U), TensorShape(3U), TensorShape(7U, 7U, 3U), + PadStrideInfo(2, 2, 1, 1)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 3U), TensorShape(3U), + TensorShape(12U, 12U, 3U), PadStrideInfo(1, 1, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); + add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 384U, 5U), TensorShape(5U), + TensorShape(12U, 12U, 5U), PadStrideInfo(1, 1, 1, 0, 1, 0, DimensionRoundingType::FLOOR)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DIRECT_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_DIRECTCONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/DynamicFusionDataset.h b/tests/datasets/DynamicFusionDataset.h index 5a1453b9abe..478a4f43ed0 100644 --- a/tests/datasets/DynamicFusionDataset.h +++ b/tests/datasets/DynamicFusionDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Arm Limited. + * Copyright (c) 2022, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef TESTS_DATASETS_DYNAMICFUSIONDATASET -#define TESTS_DATASETS_DYNAMICFUSIONDATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_DYNAMICFUSIONDATASET_H +#define ACL_TESTS_DATASETS_DYNAMICFUSIONDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -45,9 +45,7 @@ class DynamicFusionThreeInputs iterator(std::vector::const_iterator shape0_it, std::vector::const_iterator shape1_it, std::vector::const_iterator shape2_it) - : _shape0_it{ std::move(shape0_it) }, - _shape1_it{ std::move(shape1_it) }, - _shape2_it{ std::move(shape2_it) } + : _shape0_it{std::move(shape0_it)}, _shape1_it{std::move(shape1_it)}, _shape2_it{std::move(shape2_it)} { } @@ -113,14 +111,16 @@ class DynamicFusionElementwiseBinaryTwoOpsSmallShapes final : public DynamicFusi public: DynamicFusionElementwiseBinaryTwoOpsSmallShapes() { - add_config(TensorShape{ 9U, 9U, 5U }, TensorShape{ 9U, 9U, 5U }, TensorShape{ 9U, 9U, 5U }); - add_config(TensorShape{ 9U, 9U, 5U }, TensorShape{ 1U, 1U, 1U } /* Broadcast in X, Y, Z*/, TensorShape{ 9U, 9U, 5U }); - add_config(TensorShape{ 27U, 13U, 2U }, TensorShape{ 27U, 1U, 1U } /* Broadcast in Y and Z*/, TensorShape{ 27U, 13U, 2U }); - add_config(TensorShape{ 27U, 13U, 2U }, TensorShape{ 27U, 13U, 2U }, TensorShape{ 27U, 1U, 1U } /* Broadcast in Y and Z*/); + add_config(TensorShape{9U, 9U, 5U}, TensorShape{9U, 9U, 5U}, TensorShape{9U, 9U, 5U}); + add_config(TensorShape{9U, 9U, 5U}, TensorShape{1U, 1U, 1U} /* Broadcast in X, Y, Z*/, TensorShape{9U, 9U, 5U}); + add_config(TensorShape{27U, 13U, 2U}, TensorShape{27U, 1U, 1U} /* Broadcast in Y and Z*/, + TensorShape{27U, 13U, 2U}); + add_config(TensorShape{27U, 13U, 2U}, TensorShape{27U, 13U, 2U}, + TensorShape{27U, 1U, 1U} /* Broadcast in Y and Z*/); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* TESTS_DATASETS_DYNAMICFUSIONDATASET */ +#endif // ACL_TESTS_DATASETS_DYNAMICFUSIONDATASET_H diff --git a/tests/datasets/FullyConnectedLayerDataset.h b/tests/datasets/FullyConnectedLayerDataset.h index c8d7287cd03..21cc6dad4ad 100644 --- a/tests/datasets/FullyConnectedLayerDataset.h +++ b/tests/datasets/FullyConnectedLayerDataset.h @@ -24,11 +24,11 @@ #ifndef ACL_TESTS_DATASETS_FULLYCONNECTEDLAYERDATASET_H #define ACL_TESTS_DATASETS_FULLYCONNECTEDLAYERDATASET_H -#include "utils/TypePrinter.h" - #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -46,10 +46,10 @@ class FullyConnectedLayerDataset std::vector::const_iterator weights_it, std::vector::const_iterator biases_it, std::vector::const_iterator dst_it) - : _src_it{ std::move(src_it) }, - _weights_it{ std::move(weights_it) }, - _biases_it{ std::move(biases_it) }, - _dst_it{ std::move(dst_it) } + : _src_it{std::move(src_it)}, + _weights_it{std::move(weights_it)}, + _biases_it{std::move(biases_it)}, + _dst_it{std::move(dst_it)} { } @@ -92,7 +92,8 @@ class FullyConnectedLayerDataset int size() const { - return std::min(_src_shapes.size(), std::min(_weight_shapes.size(), std::min(_bias_shapes.size(), _dst_shapes.size()))); + return std::min(_src_shapes.size(), + std::min(_weight_shapes.size(), std::min(_bias_shapes.size(), _dst_shapes.size()))); } void add_config(TensorShape src, TensorShape weights, TensorShape biases, TensorShape dst) @@ -163,7 +164,8 @@ class SmallFullyConnectedLayerDataset final : public FullyConnectedLayerDataset // FC -> FC (batched) add_config(TensorShape(201U, 3U), TensorShape(201U, 529U), TensorShape(529U), TensorShape(529U, 3U)); - add_config(TensorShape(9U, 5U, 7U, 3U, 2U), TensorShape(315U, 271U), TensorShape(271U), TensorShape(271U, 3U, 2U)); + add_config(TensorShape(9U, 5U, 7U, 3U, 2U), TensorShape(315U, 271U), TensorShape(271U), + TensorShape(271U, 3U, 2U)); } }; @@ -189,11 +191,13 @@ class LargeFullyConnectedLayerDataset final : public FullyConnectedLayerDataset LargeFullyConnectedLayerDataset() { add_config(TensorShape(9U, 5U, 257U), TensorShape(11565U, 2123U), TensorShape(2123U), TensorShape(2123U)); - add_config(TensorShape(9U, 5U, 257U, 2U), TensorShape(11565U, 2123U), TensorShape(2123U), TensorShape(2123U, 2U)); + add_config(TensorShape(9U, 5U, 257U, 2U), TensorShape(11565U, 2123U), TensorShape(2123U), + TensorShape(2123U, 2U)); add_config(TensorShape(3127U), TensorShape(3127U, 989U), TensorShape(989U), TensorShape(989U)); add_config(TensorShape(3127U, 2U), TensorShape(3127U, 989U), TensorShape(989U), TensorShape(989U, 2U)); - add_config(TensorShape(9U, 5U, 257U, 2U, 3U), TensorShape(11565U, 2123U), TensorShape(2123U), TensorShape(2123U, 2U, 3U)); + add_config(TensorShape(9U, 5U, 257U, 2U, 3U), TensorShape(11565U, 2123U), TensorShape(2123U), + TensorShape(2123U, 2U, 3U)); } }; diff --git a/tests/datasets/GEMMLowpDataset.h b/tests/datasets/GEMMLowpDataset.h index 608dd82b3bb..f371e9d7751 100644 --- a/tests/datasets/GEMMLowpDataset.h +++ b/tests/datasets/GEMMLowpDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GEMMLOWP_DATASET -#define ARM_COMPUTE_TEST_GEMMLOWP_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_GEMMLOWPDATASET_H +#define ACL_TESTS_DATASETS_GEMMLOWPDATASET_H #include "arm_compute/core/TensorShape.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -46,11 +46,11 @@ class GEMMLowpDataset std::vector::const_iterator c_it, std::vector::const_iterator a_offset_it, std::vector::const_iterator b_offset_it) - : _a_it{ std::move(a_it) }, - _b_it{ std::move(b_it) }, - _c_it{ std::move(c_it) }, - _a_offset_it{ std::move(a_offset_it) }, - _b_offset_it{ std::move(b_offset_it) } + : _a_it{std::move(a_it)}, + _b_it{std::move(b_it)}, + _c_it{std::move(c_it)}, + _a_offset_it{std::move(a_offset_it)}, + _b_offset_it{std::move(b_offset_it)} { } @@ -96,7 +96,9 @@ class GEMMLowpDataset int size() const { - return std::min(_a_shapes.size(), std::min(_b_shapes.size(), std::min(_c_shapes.size(), std::min(_a_offset.size(), _b_offset.size())))); + return std::min( + _a_shapes.size(), + std::min(_b_shapes.size(), std::min(_c_shapes.size(), std::min(_a_offset.size(), _b_offset.size())))); } void add_config(TensorShape a, TensorShape b, TensorShape c, int32_t a_offset, int32_t b_offset) @@ -122,4 +124,4 @@ class GEMMLowpDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GEMMLOWP_DATASET */ +#endif // ACL_TESTS_DATASETS_GEMMLOWPDATASET_H diff --git a/tests/datasets/GEMMLowpFusedOffsetOutputDataset.h b/tests/datasets/GEMMLowpFusedOffsetOutputDataset.h index b0ad4879ba8..5b2e31a1498 100644 --- a/tests/datasets/GEMMLowpFusedOffsetOutputDataset.h +++ b/tests/datasets/GEMMLowpFusedOffsetOutputDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2024 Arm Limited. + * Copyright (c) 2019-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,11 +24,11 @@ #ifndef ACL_TESTS_DATASETS_GEMMLOWPFUSEDOFFSETOUTPUTDATASET_H #define ACL_TESTS_DATASETS_GEMMLOWPFUSEDOFFSETOUTPUTDATASET_H -#include "utils/TypePrinter.h" - #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Utils.h" +#include "utils/TypePrinter.h" + using namespace arm_compute; namespace arm_compute @@ -48,10 +48,10 @@ class GEMMLowpFusedOffsetOutputDataset std::vector::const_iterator b_it, std::vector::const_iterator c_it, std::vector::const_iterator output_stage_it) - : _a_it{ std::move(a_it) }, - _b_it{ std::move(b_it) }, - _c_it{ std::move(c_it) }, - _output_stage_it{ std::move(output_stage_it) } + : _a_it{std::move(a_it)}, + _b_it{std::move(b_it)}, + _c_it{std::move(c_it)}, + _output_stage_it{std::move(output_stage_it)} { } @@ -122,13 +122,20 @@ class SmallGEMMLowpFusedOffsetOutputUint8Dataset final : public GEMMLowpFusedOff public: SmallGEMMLowpFusedOffsetOutputUint8Dataset() { - add_config(TensorShape(21U, 13U), TensorShape(1U, 21U), TensorShape(1U, 13U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(52U, 13U), TensorShape(33U, 52U), TensorShape(33U, 13U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(31U, 27U), TensorShape(23U, 31U), TensorShape(23U, 27U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(32U, 72U), TensorShape(16U, 32U), TensorShape(16U, 72U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(21U, 1U), TensorShape(43U, 21U), TensorShape(43U, 1U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(31U, 3U), TensorShape(72U, 31U), TensorShape(72U, 3U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(32U, 72U), TensorShape(17U, 32U), TensorShape(17U, 72U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(21U, 13U), TensorShape(1U, 21U), TensorShape(1U, 13U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(52U, 13U), TensorShape(33U, 52U), TensorShape(33U, 13U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(31U, 27U), TensorShape(23U, 31U), TensorShape(23U, 27U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(32U, 72U), TensorShape(16U, 32U), TensorShape(16U, 72U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(21U, 1U), TensorShape(43U, 21U), TensorShape(43U, 1U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(31U, 3U), TensorShape(72U, 31U), TensorShape(72U, 3U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(32U, 72U), TensorShape(17U, 32U), TensorShape(17U, 72U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); } }; @@ -137,13 +144,20 @@ class SmallGEMMLowpFusedBatchedMatMulDataset final : public GEMMLowpFusedOffsetO public: SmallGEMMLowpFusedBatchedMatMulDataset() { - add_config(TensorShape(4U, 3U), TensorShape(2U, 4U), TensorShape(2U, 3U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(12U, 15U), TensorShape(7U, 12U), TensorShape(7U, 15U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(59U, 17U), TensorShape(36U, 59U), TensorShape(36U, 17U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(2U, 4U, 3U), TensorShape(5U, 2U, 3U), TensorShape(5U, 4U, 3U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(15U, 7U, 3U), TensorShape(29U, 15U, 3U), TensorShape(29U, 7U, 3U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(56U, 17U, 32U), TensorShape(5U, 56U, 32U), TensorShape(5U, 17U, 32U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(13U, 256U, 32U), TensorShape(19U, 13U, 32U), TensorShape(19U, 256U, 32U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(4U, 3U), TensorShape(2U, 4U), TensorShape(2U, 3U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(12U, 15U), TensorShape(7U, 12U), TensorShape(7U, 15U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(59U, 17U), TensorShape(36U, 59U), TensorShape(36U, 17U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(2U, 4U, 3U), TensorShape(5U, 2U, 3U), TensorShape(5U, 4U, 3U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(15U, 7U, 3U), TensorShape(29U, 15U, 3U), TensorShape(29U, 7U, 3U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(56U, 17U, 32U), TensorShape(5U, 56U, 32U), TensorShape(5U, 17U, 32U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(13U, 256U, 32U), TensorShape(19U, 13U, 32U), TensorShape(19U, 256U, 32U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); } }; @@ -152,12 +166,18 @@ class SmallGEMMLowpFusedOffsetOutputOutput3DUint8Dataset final : public GEMMLowp public: SmallGEMMLowpFusedOffsetOutputOutput3DUint8Dataset() { - add_config(TensorShape(21U, 1421U, 33U), TensorShape(34U, 21U), TensorShape(34U, 7U, 203U, 33U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(31U, 102U, 55U), TensorShape(23U, 31U), TensorShape(23U, 1U, 102U, 55U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(38U, 1200U, 77U), TensorShape(21U, 38U), TensorShape(21U, 4U, 300U, 77U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(32U, 103U, 99U), TensorShape(17U, 32U), TensorShape(17U, 1U, 103U, 99U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(16U, 1600U, 111U), TensorShape(8U, 16U), TensorShape(8U, 8U, 200U, 111U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(16U, 1600U, 113U), TensorShape(8U, 16U), TensorShape(8U, 8U, 200U, 113U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(21U, 1421U, 33U), TensorShape(34U, 21U), TensorShape(34U, 7U, 203U, 33U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(31U, 102U, 55U), TensorShape(23U, 31U), TensorShape(23U, 1U, 102U, 55U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(38U, 1200U, 77U), TensorShape(21U, 38U), TensorShape(21U, 4U, 300U, 77U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(32U, 103U, 99U), TensorShape(17U, 32U), TensorShape(17U, 1U, 103U, 99U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(16U, 1600U, 111U), TensorShape(8U, 16U), TensorShape(8U, 8U, 200U, 111U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(16U, 1600U, 113U), TensorShape(8U, 16U), TensorShape(8U, 8U, 200U, 113U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); } }; @@ -166,12 +186,18 @@ class SmallGEMMLowpFusedOffsetOutputInputOutput3DUint8Dataset final : public GEM public: SmallGEMMLowpFusedOffsetOutputInputOutput3DUint8Dataset() { - add_config(TensorShape(21U, 7U, 203U, 33U), TensorShape(34U, 21U), TensorShape(34U, 7U, 203U, 33U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(31U, 1U, 102U, 55U), TensorShape(23U, 31U), TensorShape(23U, 1U, 102U, 55U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(38U, 4U, 300U, 77U), TensorShape(21U, 38U), TensorShape(21U, 4U, 300U, 77U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(32U, 1U, 103U, 99U), TensorShape(17U, 32U), TensorShape(17U, 1U, 103U, 99U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(16U, 8U, 200U, 111U), TensorShape(8U, 16U), TensorShape(8U, 8U, 200U, 111U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(16U, 8U, 200U, 113U), TensorShape(8U, 16U), TensorShape(8U, 8U, 200U, 113U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(21U, 7U, 203U, 33U), TensorShape(34U, 21U), TensorShape(34U, 7U, 203U, 33U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(31U, 1U, 102U, 55U), TensorShape(23U, 31U), TensorShape(23U, 1U, 102U, 55U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(38U, 4U, 300U, 77U), TensorShape(21U, 38U), TensorShape(21U, 4U, 300U, 77U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(32U, 1U, 103U, 99U), TensorShape(17U, 32U), TensorShape(17U, 1U, 103U, 99U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(16U, 8U, 200U, 111U), TensorShape(8U, 16U), TensorShape(8U, 8U, 200U, 111U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(16U, 8U, 200U, 113U), TensorShape(8U, 16U), TensorShape(8U, 8U, 200U, 113U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); } }; @@ -180,14 +206,22 @@ class SmallGEMMLowpFusedOffsetOutputInt8Dataset final : public GEMMLowpFusedOffs public: SmallGEMMLowpFusedOffsetOutputInt8Dataset() { - add_config(TensorShape(21U, 1U), TensorShape(1U, 21U), TensorShape(1U, 1U), GEMMLowpOutputStageType::QUANTIZE_DOWN); - add_config(TensorShape(31U, 3U), TensorShape(72U, 31U), TensorShape(72U, 3U), GEMMLowpOutputStageType::QUANTIZE_DOWN); - add_config(TensorShape(52U, 26U), TensorShape(33U, 52U), TensorShape(33U, 26U), GEMMLowpOutputStageType::QUANTIZE_DOWN); - add_config(TensorShape(38U, 43U), TensorShape(21U, 38U), TensorShape(21U, 43U), GEMMLowpOutputStageType::QUANTIZE_DOWN); - add_config(TensorShape(21U, 13U), TensorShape(33U, 21U), TensorShape(33U, 13U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(52U, 26U), TensorShape(33U, 52U), TensorShape(33U, 26U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(38U, 43U), TensorShape(21U, 38U), TensorShape(21U, 43U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(32U, 72U), TensorShape(17U, 32U), TensorShape(17U, 72U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(21U, 1U), TensorShape(1U, 21U), TensorShape(1U, 1U), + GEMMLowpOutputStageType::QUANTIZE_DOWN); + add_config(TensorShape(31U, 3U), TensorShape(72U, 31U), TensorShape(72U, 3U), + GEMMLowpOutputStageType::QUANTIZE_DOWN); + add_config(TensorShape(52U, 26U), TensorShape(33U, 52U), TensorShape(33U, 26U), + GEMMLowpOutputStageType::QUANTIZE_DOWN); + add_config(TensorShape(38U, 43U), TensorShape(21U, 38U), TensorShape(21U, 43U), + GEMMLowpOutputStageType::QUANTIZE_DOWN); + add_config(TensorShape(21U, 13U), TensorShape(33U, 21U), TensorShape(33U, 13U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(52U, 26U), TensorShape(33U, 52U), TensorShape(33U, 26U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(38U, 43U), TensorShape(21U, 38U), TensorShape(21U, 43U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(32U, 72U), TensorShape(17U, 32U), TensorShape(17U, 72U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); } }; @@ -196,12 +230,16 @@ class LargeGEMMLowpFusedOffsetOutputUint8Dataset final : public GEMMLowpFusedOff public: LargeGEMMLowpFusedOffsetOutputUint8Dataset() { - add_config(TensorShape(923U, 429U), TensorShape(871U, 923U), TensorShape(871U, 429U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(873U, 513U), TensorShape(784U, 873U), TensorShape(784U, 513U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(1021U, 973U), TensorShape(783U, 1021U), TensorShape(783U, 973U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(941U, 1011U), TensorShape(623U, 941U), TensorShape(623U, 1011U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(681U, 1023U), TensorShape(213U, 681U), TensorShape(213U, 1023U),GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - + add_config(TensorShape(923U, 429U), TensorShape(871U, 923U), TensorShape(871U, 429U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(873U, 513U), TensorShape(784U, 873U), TensorShape(784U, 513U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(1021U, 973U), TensorShape(783U, 1021U), TensorShape(783U, 973U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(941U, 1011U), TensorShape(623U, 941U), TensorShape(623U, 1011U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(681U, 1023U), TensorShape(213U, 681U), TensorShape(213U, 1023U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); } }; @@ -210,14 +248,22 @@ class LargeGEMMLowpFusedOffsetOutputInt8Dataset final : public GEMMLowpFusedOffs public: LargeGEMMLowpFusedOffsetOutputInt8Dataset() { - add_config(TensorShape(923U, 1U, 15U), TensorShape(871U, 923U, 15U), TensorShape(871U, 1U, 15U), GEMMLowpOutputStageType::QUANTIZE_DOWN); - add_config(TensorShape(873U, 7U), TensorShape(784U, 873U), TensorShape(784U, 7U), GEMMLowpOutputStageType::QUANTIZE_DOWN); - add_config(TensorShape(697U, 872U), TensorShape(563U, 697U), TensorShape(563U, 872U), GEMMLowpOutputStageType::QUANTIZE_DOWN); - add_config(TensorShape(681U, 1023U), TensorShape(213U, 681U), TensorShape(213U, 1023U), GEMMLowpOutputStageType::QUANTIZE_DOWN); - add_config(TensorShape(923U, 1U), TensorShape(871U, 923U), TensorShape(871U, 1U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(873U, 7U), TensorShape(784U, 873U), TensorShape(784U, 7U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(697U, 872U), TensorShape(563U, 697U), TensorShape(563U, 872U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); - add_config(TensorShape(1021U, 973U), TensorShape(783U, 1021U), TensorShape(783U, 973U), GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(923U, 1U, 15U), TensorShape(871U, 923U, 15U), TensorShape(871U, 1U, 15U), + GEMMLowpOutputStageType::QUANTIZE_DOWN); + add_config(TensorShape(873U, 7U), TensorShape(784U, 873U), TensorShape(784U, 7U), + GEMMLowpOutputStageType::QUANTIZE_DOWN); + add_config(TensorShape(697U, 872U), TensorShape(563U, 697U), TensorShape(563U, 872U), + GEMMLowpOutputStageType::QUANTIZE_DOWN); + add_config(TensorShape(681U, 1023U), TensorShape(213U, 681U), TensorShape(213U, 1023U), + GEMMLowpOutputStageType::QUANTIZE_DOWN); + add_config(TensorShape(923U, 1U), TensorShape(871U, 923U), TensorShape(871U, 1U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(873U, 7U), TensorShape(784U, 873U), TensorShape(784U, 7U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(697U, 872U), TensorShape(563U, 697U), TensorShape(563U, 872U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); + add_config(TensorShape(1021U, 973U), TensorShape(783U, 1021U), TensorShape(783U, 973U), + GEMMLowpOutputStageType::QUANTIZE_DOWN_FIXEDPOINT); } }; } // namespace datasets diff --git a/tests/datasets/GatherDataset.h b/tests/datasets/GatherDataset.h index 74ea3b4a066..7df21ab0419 100644 --- a/tests/datasets/GatherDataset.h +++ b/tests/datasets/GatherDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019, 2022-2023 Arm Limited. + * Copyright (c) 2018-2019, 2022-2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -22,13 +22,13 @@ * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GATHER_DATASET -#define ARM_COMPUTE_TEST_GATHER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_GATHERDATASET_H +#define ACL_TESTS_DATASETS_GATHERDATASET_H #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -45,9 +45,9 @@ class GatherDataset iterator(std::vector::const_iterator input_shapes_it, std::vector::const_iterator starts_values_it, std::vector::const_iterator axis_it) - : _input_shapes_it{ std::move(input_shapes_it) }, - _indices_shapes_it{ std::move(starts_values_it) }, - _axis_it{ std::move(axis_it) } + : _input_shapes_it{std::move(input_shapes_it)}, + _indices_shapes_it{std::move(starts_values_it)}, + _axis_it{std::move(axis_it)} { } @@ -140,7 +140,7 @@ class CLSmallGatherMultiDimIndicesDataset final : public GatherDataset add_config(TensorShape(9U), TensorShape(3U, 2U, 4U), 0); add_config(TensorShape(5U, 3U, 4U), TensorShape(5U, 6U), 0); - add_config(TensorShape(7U, 4U, 5U), TensorShape(2U, 3U),0); + add_config(TensorShape(7U, 4U, 5U), TensorShape(2U, 3U), 0); add_config(TensorShape(2U, 6U), TensorShape(4U, 9U), 1); add_config(TensorShape(15U, 15U), TensorShape(3U, 2U, 2U), 1); @@ -151,7 +151,7 @@ class CLSmallGatherMultiDimIndicesDataset final : public GatherDataset add_config(TensorShape(9U), TensorShape(3U, 2U, 4U), 1); add_config(TensorShape(5U, 3U, 4U), TensorShape(5U, 6U), 1); - add_config(TensorShape(7U, 4U, 5U), TensorShape(2U, 3U),1); + add_config(TensorShape(7U, 4U, 5U), TensorShape(2U, 3U), 1); add_config(TensorShape(2U, 6U), TensorShape(4U, 9U), 2); add_config(TensorShape(15U, 15U), TensorShape(2U, 11U), 2); @@ -160,7 +160,7 @@ class CLSmallGatherMultiDimIndicesDataset final : public GatherDataset add_config(TensorShape(3U, 5U), TensorShape(2U, 3U), 2); add_config(TensorShape(5U, 3U, 4U), TensorShape(5U, 6U), 2); - add_config(TensorShape(7U, 4U, 5U), TensorShape(2U, 3U),2); + add_config(TensorShape(7U, 4U, 5U), TensorShape(2U, 3U), 2); } }; @@ -224,4 +224,4 @@ class LargeGatherDataset final : public GatherDataset } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GATHER_DATASET */ +#endif // ACL_TESTS_DATASETS_GATHERDATASET_H diff --git a/tests/datasets/GradientDimensionDataset.h b/tests/datasets/GradientDimensionDataset.h index 3bbf00a0b51..0bb7aba148b 100644 --- a/tests/datasets/GradientDimensionDataset.h +++ b/tests/datasets/GradientDimensionDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GRADIENT_DIMENSION_DATASET_H -#define ARM_COMPUTE_TEST_GRADIENT_DIMENSION_DATASET_H +#ifndef ACL_TESTS_DATASETS_GRADIENTDIMENSIONDATASET_H +#define ACL_TESTS_DATASETS_GRADIENTDIMENSIONDATASET_H -#include "tests/Types.h" #include "tests/framework/datasets/ContainerDataset.h" +#include "tests/Types.h" #include @@ -40,15 +40,11 @@ class GradientDimensions final : public framework::dataset::ContainerDataset; + using type = std::tuple; struct iterator { @@ -52,16 +61,16 @@ class LSTMLayerDataset std::vector::const_iterator infos_it, std::vector::const_iterator cell_threshold_it, std::vector::const_iterator projection_threshold_it) - : _src_it{ std::move(src_it) }, - _input_weights_it{ std::move(input_weights_it) }, - _recurrent_weights_it{ std::move(recurrent_weights_it) }, - _cells_bias_it{ std::move(cells_bias_it) }, - _output_cell_it{ std::move(output_cell_it) }, - _dst_it{ std::move(dst_it) }, - _scratch_it{ std::move(scratch_it) }, - _infos_it{ std::move(infos_it) }, - _cell_threshold_it{ std::move(cell_threshold_it) }, - _projection_threshold_it{ std::move(projection_threshold_it) } + : _src_it{std::move(src_it)}, + _input_weights_it{std::move(input_weights_it)}, + _recurrent_weights_it{std::move(recurrent_weights_it)}, + _cells_bias_it{std::move(cells_bias_it)}, + _output_cell_it{std::move(output_cell_it)}, + _dst_it{std::move(dst_it)}, + _scratch_it{std::move(scratch_it)}, + _infos_it{std::move(infos_it)}, + _cell_threshold_it{std::move(cell_threshold_it)}, + _projection_threshold_it{std::move(projection_threshold_it)} { } @@ -79,7 +88,9 @@ class LSTMLayerDataset LSTMLayerDataset::type operator*() const { - return std::make_tuple(*_src_it, *_input_weights_it, *_recurrent_weights_it, *_cells_bias_it, *_output_cell_it, *_dst_it, *_scratch_it, *_infos_it, *_cell_threshold_it, *_projection_threshold_it); + return std::make_tuple(*_src_it, *_input_weights_it, *_recurrent_weights_it, *_cells_bias_it, + *_output_cell_it, *_dst_it, *_scratch_it, *_infos_it, *_cell_threshold_it, + *_projection_threshold_it); } iterator &operator++() @@ -113,18 +124,37 @@ class LSTMLayerDataset iterator begin() const { - return iterator(_src_shapes.begin(), _input_weights_shapes.begin(), _recurrent_weights_shapes.begin(), _cell_bias_shapes.begin(), _output_cell_shapes.begin(), _dst_shapes.begin(), - _scratch_shapes.begin(), _infos.begin(), _cell_threshold.begin(), _projection_threshold.begin()); + return iterator(_src_shapes.begin(), _input_weights_shapes.begin(), _recurrent_weights_shapes.begin(), + _cell_bias_shapes.begin(), _output_cell_shapes.begin(), _dst_shapes.begin(), + _scratch_shapes.begin(), _infos.begin(), _cell_threshold.begin(), + _projection_threshold.begin()); } int size() const { - return std::min(_src_shapes.size(), std::min(_input_weights_shapes.size(), std::min(_recurrent_weights_shapes.size(), std::min(_cell_bias_shapes.size(), std::min(_output_cell_shapes.size(), - std::min(_dst_shapes.size(), std::min(_scratch_shapes.size(), std::min(_cell_threshold.size(), std::min(_projection_threshold.size(), _infos.size()))))))))); + return std::min( + _src_shapes.size(), + std::min(_input_weights_shapes.size(), + std::min(_recurrent_weights_shapes.size(), + std::min(_cell_bias_shapes.size(), + std::min(_output_cell_shapes.size(), + std::min(_dst_shapes.size(), + std::min(_scratch_shapes.size(), + std::min(_cell_threshold.size(), + std::min(_projection_threshold.size(), + _infos.size()))))))))); } - void add_config(TensorShape src, TensorShape input_weights, TensorShape recurrent_weights, TensorShape cell_bias_weights, TensorShape output_cell_state, TensorShape dst, TensorShape scratch, - ActivationLayerInfo info, float cell_threshold, float projection_threshold) + void add_config(TensorShape src, + TensorShape input_weights, + TensorShape recurrent_weights, + TensorShape cell_bias_weights, + TensorShape output_cell_state, + TensorShape dst, + TensorShape scratch, + ActivationLayerInfo info, + float cell_threshold, + float projection_threshold) { _src_shapes.emplace_back(std::move(src)); _input_weights_shapes.emplace_back(std::move(input_weights)); @@ -160,11 +190,14 @@ class SmallLSTMLayerDataset final : public LSTMLayerDataset public: SmallLSTMLayerDataset() { - add_config(TensorShape(8U), TensorShape(8U, 16U), TensorShape(16U, 16U), TensorShape(16U), TensorShape(16U), TensorShape(16U), TensorShape(64U), + add_config(TensorShape(8U), TensorShape(8U, 16U), TensorShape(16U, 16U), TensorShape(16U), TensorShape(16U), + TensorShape(16U), TensorShape(64U), ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU), 0.05f, 0.93f); - add_config(TensorShape(8U, 2U), TensorShape(8U, 16U), TensorShape(16U, 16U), TensorShape(16U), TensorShape(16U, 2U), TensorShape(16U, 2U), TensorShape(64U, 2U), + add_config(TensorShape(8U, 2U), TensorShape(8U, 16U), TensorShape(16U, 16U), TensorShape(16U), + TensorShape(16U, 2U), TensorShape(16U, 2U), TensorShape(64U, 2U), ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU), 0.05f, 0.93f); - add_config(TensorShape(8U, 2U), TensorShape(8U, 16U), TensorShape(16U, 16U), TensorShape(16U), TensorShape(16U, 2U), TensorShape(16U, 2U), TensorShape(48U, 2U), + add_config(TensorShape(8U, 2U), TensorShape(8U, 16U), TensorShape(16U, 16U), TensorShape(16U), + TensorShape(16U, 2U), TensorShape(16U, 2U), TensorShape(48U, 2U), ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU), 0.05f, 0.93f); } }; @@ -172,4 +205,4 @@ class SmallLSTMLayerDataset final : public LSTMLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_LSTM_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_LSTMLAYERDATASET_H diff --git a/tests/datasets/LargeConvolutionLayerDataset.h b/tests/datasets/LargeConvolutionLayerDataset.h index c299f2460ba..fbe0d9311a3 100644 --- a/tests/datasets/LargeConvolutionLayerDataset.h +++ b/tests/datasets/LargeConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020, 2023-2024 Arm Limited. + * Copyright (c) 2017-2020, 2023-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,13 +24,12 @@ #ifndef ACL_TESTS_DATASETS_LARGECONVOLUTIONLAYERDATASET_H #define ACL_TESTS_DATASETS_LARGECONVOLUTIONLAYERDATASET_H -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" - #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -44,15 +43,22 @@ class LargeWinogradConvolutionLayer3x3Dataset final : public ConvolutionLayerDat { // Kernel size 3 // Batch size 1 - add_config(TensorShape(224U, 222U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), TensorShape(224U, 222U, 32U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(112U, 113U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), TensorShape(112U, 113U, 64U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 3U, 64U, 129U), TensorShape(129U), TensorShape(112U, 112U, 129U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(53U, 56U, 125U), TensorShape(3U, 3U, 125U, 128U), TensorShape(128U), TensorShape(51U, 54U, 128U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 3U, 128U, 128U), TensorShape(128U), TensorShape(54U, 54U, 128U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(28U, 28U, 257U), TensorShape(3U, 3U, 257U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(224U, 222U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), + TensorShape(224U, 222U, 32U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(112U, 113U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), + TensorShape(112U, 113U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 3U, 64U, 129U), TensorShape(129U), + TensorShape(112U, 112U, 129U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(53U, 56U, 125U), TensorShape(3U, 3U, 125U, 128U), TensorShape(128U), + TensorShape(51U, 54U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 3U, 128U, 128U), TensorShape(128U), + TensorShape(54U, 54U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 257U), TensorShape(3U, 3U, 257U, 128U), TensorShape(128U), + TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1)); // Batch > 1 - add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(3U, 3U, 127U, 64U), TensorShape(64U), TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(3U, 3U, 127U, 64U), TensorShape(64U), + TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 1, 1)); } }; @@ -63,12 +69,16 @@ class LargeWinogradConvolutionLayer3x3DatasetFp16Subset final : public Convoluti { // Kernel size 3 // Batch size 1 - add_config(TensorShape(224U, 222U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), TensorShape(224U, 222U, 32U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 3U, 64U, 129U), TensorShape(129U), TensorShape(112U, 112U, 129U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 3U, 128U, 128U), TensorShape(128U), TensorShape(54U, 54U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(224U, 222U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), + TensorShape(224U, 222U, 32U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 3U, 64U, 129U), TensorShape(129U), + TensorShape(112U, 112U, 129U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 3U, 128U, 128U), TensorShape(128U), + TensorShape(54U, 54U, 128U), PadStrideInfo(1, 1, 0, 0)); // Batch > 1 - add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(3U, 3U, 127U, 64U), TensorShape(64U), TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(3U, 3U, 127U, 64U), TensorShape(64U), + TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 1, 1)); } }; @@ -79,15 +89,22 @@ class LargeWinogradConvolutionLayer3x1Dataset final : public ConvolutionLayerDat { // Kernel size 3 // Batch size 1 - add_config(TensorShape(224U, 222U, 32U), TensorShape(3U, 1U, 32U, 32U), TensorShape(32U), TensorShape(224U, 222U, 32U), PadStrideInfo(1, 1, 1, 0)); - add_config(TensorShape(112U, 113U, 32U), TensorShape(3U, 1U, 32U, 64U), TensorShape(64U), TensorShape(112U, 113U, 64U), PadStrideInfo(1, 1, 1, 0)); - add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 1U, 64U, 129U), TensorShape(129U), TensorShape(112U, 112U, 129U), PadStrideInfo(1, 1, 1, 0)); - add_config(TensorShape(53U, 56U, 125U), TensorShape(3U, 1U, 125U, 128U), TensorShape(128U), TensorShape(51U, 56U, 128U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 1U, 128U, 128U), TensorShape(128U), TensorShape(56U, 56U, 128U), PadStrideInfo(1, 1, 1, 0)); - add_config(TensorShape(28U, 28U, 257U), TensorShape(3U, 1U, 257U, 128U), TensorShape(128U), TensorShape(26U, 28U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(224U, 222U, 32U), TensorShape(3U, 1U, 32U, 32U), TensorShape(32U), + TensorShape(224U, 222U, 32U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(112U, 113U, 32U), TensorShape(3U, 1U, 32U, 64U), TensorShape(64U), + TensorShape(112U, 113U, 64U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 1U, 64U, 129U), TensorShape(129U), + TensorShape(112U, 112U, 129U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(53U, 56U, 125U), TensorShape(3U, 1U, 125U, 128U), TensorShape(128U), + TensorShape(51U, 56U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 1U, 128U, 128U), TensorShape(128U), + TensorShape(56U, 56U, 128U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(28U, 28U, 257U), TensorShape(3U, 1U, 257U, 128U), TensorShape(128U), + TensorShape(26U, 28U, 128U), PadStrideInfo(1, 1, 0, 0)); // Batch > 1 - add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(3U, 1U, 127U, 64U), TensorShape(64U), TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(3U, 1U, 127U, 64U), TensorShape(64U), + TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 1, 0)); } }; @@ -98,12 +115,16 @@ class LargeWinogradConvolutionLayer3x1DatasetFp16Subset final : public Convoluti { // Kernel size 3 // Batch size 1 - add_config(TensorShape(112U, 113U, 32U), TensorShape(3U, 1U, 32U, 64U), TensorShape(64U), TensorShape(112U, 113U, 64U), PadStrideInfo(1, 1, 1, 0)); - add_config(TensorShape(53U, 56U, 125U), TensorShape(3U, 1U, 125U, 128U), TensorShape(128U), TensorShape(51U, 56U, 128U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(28U, 28U, 257U), TensorShape(3U, 1U, 257U, 128U), TensorShape(128U), TensorShape(26U, 28U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(112U, 113U, 32U), TensorShape(3U, 1U, 32U, 64U), TensorShape(64U), + TensorShape(112U, 113U, 64U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(53U, 56U, 125U), TensorShape(3U, 1U, 125U, 128U), TensorShape(128U), + TensorShape(51U, 56U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 257U), TensorShape(3U, 1U, 257U, 128U), TensorShape(128U), + TensorShape(26U, 28U, 128U), PadStrideInfo(1, 1, 0, 0)); // Batch > 1 - add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(3U, 1U, 127U, 64U), TensorShape(64U), TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(3U, 1U, 127U, 64U), TensorShape(64U), + TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 1, 0)); } }; @@ -114,15 +135,22 @@ class LargeWinogradConvolutionLayer1x3Dataset final : public ConvolutionLayerDat { // Kernel size 3 // Batch size 1 - add_config(TensorShape(224U, 222U, 32U), TensorShape(1U, 3U, 32U, 32U), TensorShape(32U), TensorShape(224U, 222U, 32U), PadStrideInfo(1, 1, 0, 1)); - add_config(TensorShape(112U, 113U, 32U), TensorShape(1U, 3U, 32U, 64U), TensorShape(64U), TensorShape(112U, 113U, 64U), PadStrideInfo(1, 1, 0, 1)); - add_config(TensorShape(112U, 112U, 64U), TensorShape(1U, 3U, 64U, 129U), TensorShape(129U), TensorShape(112U, 110U, 129U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(53U, 56U, 125U), TensorShape(1U, 3U, 125U, 128U), TensorShape(128U), TensorShape(53U, 56U, 128U), PadStrideInfo(1, 1, 0, 1)); - add_config(TensorShape(56U, 56U, 128U), TensorShape(1U, 3U, 128U, 128U), TensorShape(128U), TensorShape(56U, 54U, 128U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(28U, 28U, 257U), TensorShape(1U, 3U, 257U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(224U, 222U, 32U), TensorShape(1U, 3U, 32U, 32U), TensorShape(32U), + TensorShape(224U, 222U, 32U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(112U, 113U, 32U), TensorShape(1U, 3U, 32U, 64U), TensorShape(64U), + TensorShape(112U, 113U, 64U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(112U, 112U, 64U), TensorShape(1U, 3U, 64U, 129U), TensorShape(129U), + TensorShape(112U, 110U, 129U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(53U, 56U, 125U), TensorShape(1U, 3U, 125U, 128U), TensorShape(128U), + TensorShape(53U, 56U, 128U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(56U, 56U, 128U), TensorShape(1U, 3U, 128U, 128U), TensorShape(128U), + TensorShape(56U, 54U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 257U), TensorShape(1U, 3U, 257U, 128U), TensorShape(128U), + TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 1)); // Batch > 1 - add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(1U, 3U, 127U, 64U), TensorShape(64U), TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(1U, 3U, 127U, 64U), TensorShape(64U), + TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 0, 1)); } }; @@ -133,12 +161,16 @@ class LargeWinogradConvolutionLayer1x3DatasetFp16Subset final : public Convoluti { // Kernel size 3 // Batch size 1 - add_config(TensorShape(112U, 112U, 64U), TensorShape(1U, 3U, 64U, 129U), TensorShape(129U), TensorShape(112U, 110U, 129U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(53U, 56U, 125U), TensorShape(1U, 3U, 125U, 128U), TensorShape(128U), TensorShape(53U, 56U, 128U), PadStrideInfo(1, 1, 0, 1)); - add_config(TensorShape(28U, 28U, 257U), TensorShape(1U, 3U, 257U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(112U, 112U, 64U), TensorShape(1U, 3U, 64U, 129U), TensorShape(129U), + TensorShape(112U, 110U, 129U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(53U, 56U, 125U), TensorShape(1U, 3U, 125U, 128U), TensorShape(128U), + TensorShape(53U, 56U, 128U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(28U, 28U, 257U), TensorShape(1U, 3U, 257U, 128U), TensorShape(128U), + TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 1)); // Batch > 1 - add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(1U, 3U, 127U, 64U), TensorShape(64U), TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(111U, 112U, 127U, 4U), TensorShape(1U, 3U, 127U, 64U), TensorShape(64U), + TensorShape(111U, 112U, 64U, 4U), PadStrideInfo(1, 1, 0, 1)); } }; @@ -149,12 +181,16 @@ class LargeWinogradConvolutionLayer5x5Dataset final : public ConvolutionLayerDat { // Kernel size 5 // Batch size 1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(5U, 5U, 3U, 32U), TensorShape(32U), TensorShape(220U, 220U, 32U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(181U, 152U, 42U), TensorShape(5U, 5U, 42U, 100U), TensorShape(100U), TensorShape(177U, 148U, 100U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(200U, 201U, 24U), TensorShape(5U, 5U, 24U, 61), TensorShape(61U), TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(5U, 5U, 3U, 32U), TensorShape(32U), + TensorShape(220U, 220U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(181U, 152U, 42U), TensorShape(5U, 5U, 42U, 100U), TensorShape(100U), + TensorShape(177U, 148U, 100U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(200U, 201U, 24U), TensorShape(5U, 5U, 24U, 61), TensorShape(61U), + TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 2, 2)); // Batch > 1 - add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(5U, 5U, 16U, 7U), TensorShape(7U), TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(5U, 5U, 16U, 7U), TensorShape(7U), + TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 2, 2)); } }; @@ -165,11 +201,14 @@ class LargeWinogradConvolutionLayer5x5DatasetFp16Subset final : public Convoluti { // Kernel size 5 // Batch size 1 - add_config(TensorShape(181U, 152U, 42U), TensorShape(5U, 5U, 42U, 100U), TensorShape(100U), TensorShape(177U, 148U, 100U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(200U, 201U, 24U), TensorShape(5U, 5U, 24U, 61), TensorShape(61U), TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(181U, 152U, 42U), TensorShape(5U, 5U, 42U, 100U), TensorShape(100U), + TensorShape(177U, 148U, 100U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(200U, 201U, 24U), TensorShape(5U, 5U, 24U, 61), TensorShape(61U), + TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 2, 2)); // Batch > 1 - add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(5U, 5U, 16U, 7U), TensorShape(7U), TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(5U, 5U, 16U, 7U), TensorShape(7U), + TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 2, 2)); } }; @@ -179,12 +218,16 @@ class LargeWinogradConvolutionLayer5x1Dataset final : public ConvolutionLayerDat LargeWinogradConvolutionLayer5x1Dataset() { // Batch size 1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(5U, 1U, 3U, 32U), TensorShape(32U), TensorShape(224U, 224U, 32U), PadStrideInfo(1, 1, 2, 0)); - add_config(TensorShape(181U, 152U, 42U), TensorShape(5U, 1U, 42U, 100U), TensorShape(100U), TensorShape(177U, 152U, 100U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(200U, 201U, 24U), TensorShape(5U, 1U, 24U, 61), TensorShape(61U), TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 2, 0)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(5U, 1U, 3U, 32U), TensorShape(32U), + TensorShape(224U, 224U, 32U), PadStrideInfo(1, 1, 2, 0)); + add_config(TensorShape(181U, 152U, 42U), TensorShape(5U, 1U, 42U, 100U), TensorShape(100U), + TensorShape(177U, 152U, 100U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(200U, 201U, 24U), TensorShape(5U, 1U, 24U, 61), TensorShape(61U), + TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 2, 0)); // Batch > 1 - add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(5U, 1U, 16U, 7U), TensorShape(7U), TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 2, 0)); + add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(5U, 1U, 16U, 7U), TensorShape(7U), + TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 2, 0)); } }; @@ -194,11 +237,14 @@ class LargeWinogradConvolutionLayer5x1DatasetFp16Subset final : public Convoluti LargeWinogradConvolutionLayer5x1DatasetFp16Subset() { // Batch size 1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(5U, 1U, 3U, 32U), TensorShape(32U), TensorShape(224U, 224U, 32U), PadStrideInfo(1, 1, 2, 0)); - add_config(TensorShape(200U, 201U, 24U), TensorShape(5U, 1U, 24U, 61), TensorShape(61U), TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 2, 0)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(5U, 1U, 3U, 32U), TensorShape(32U), + TensorShape(224U, 224U, 32U), PadStrideInfo(1, 1, 2, 0)); + add_config(TensorShape(200U, 201U, 24U), TensorShape(5U, 1U, 24U, 61), TensorShape(61U), + TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 2, 0)); // Batch > 1 - add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(5U, 1U, 16U, 7U), TensorShape(7U), TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 2, 0)); + add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(5U, 1U, 16U, 7U), TensorShape(7U), + TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 2, 0)); } }; @@ -208,12 +254,16 @@ class LargeWinogradConvolutionLayer7x1Dataset final : public ConvolutionLayerDat LargeWinogradConvolutionLayer7x1Dataset() { // Batch size 1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(7U, 1U, 3U, 32U), TensorShape(32U), TensorShape(218U, 224U, 32U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(181U, 152U, 42U), TensorShape(7U, 1U, 42U, 100U), TensorShape(100U), TensorShape(175U, 152U, 100U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(200U, 201U, 24U), TensorShape(7U, 1U, 24U, 61), TensorShape(61U), TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 3, 0)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(7U, 1U, 3U, 32U), TensorShape(32U), + TensorShape(218U, 224U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(181U, 152U, 42U), TensorShape(7U, 1U, 42U, 100U), TensorShape(100U), + TensorShape(175U, 152U, 100U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(200U, 201U, 24U), TensorShape(7U, 1U, 24U, 61), TensorShape(61U), + TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 3, 0)); // Batch > 1 - add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(7U, 1U, 16U, 7U), TensorShape(7U), TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 3, 0)); + add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(7U, 1U, 16U, 7U), TensorShape(7U), + TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 3, 0)); } }; @@ -223,12 +273,16 @@ class LargeWinogradConvolutionLayer1x7Dataset final : public ConvolutionLayerDat LargeWinogradConvolutionLayer1x7Dataset() { // Batch size 1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(1U, 7U, 3U, 32U), TensorShape(32U), TensorShape(224U, 218U, 32U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(181U, 152U, 42U), TensorShape(1U, 7U, 42U, 100U), TensorShape(100U), TensorShape(181U, 146U, 100U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(200U, 201U, 24U), TensorShape(1U, 7U, 24U, 61), TensorShape(61U), TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(1U, 7U, 3U, 32U), TensorShape(32U), + TensorShape(224U, 218U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(181U, 152U, 42U), TensorShape(1U, 7U, 42U, 100U), TensorShape(100U), + TensorShape(181U, 146U, 100U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(200U, 201U, 24U), TensorShape(1U, 7U, 24U, 61), TensorShape(61U), + TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 0, 3)); // Batch > 1 - add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(1U, 7U, 16U, 7U), TensorShape(7U), TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(1U, 7U, 16U, 7U), TensorShape(7U), + TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 0, 3)); } }; @@ -238,11 +292,14 @@ class LargeWinogradConvolutionLayer1x7DatasetFp16Subset final : public Convoluti LargeWinogradConvolutionLayer1x7DatasetFp16Subset() { // Batch size 1 - add_config(TensorShape(181U, 152U, 42U), TensorShape(1U, 7U, 42U, 100U), TensorShape(100U), TensorShape(181U, 146U, 100U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(200U, 201U, 24U), TensorShape(1U, 7U, 24U, 61), TensorShape(61U), TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(181U, 152U, 42U), TensorShape(1U, 7U, 42U, 100U), TensorShape(100U), + TensorShape(181U, 146U, 100U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(200U, 201U, 24U), TensorShape(1U, 7U, 24U, 61), TensorShape(61U), + TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 0, 3)); // Batch > 1 - add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(1U, 7U, 16U, 7U), TensorShape(7U), TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(1U, 7U, 16U, 7U), TensorShape(7U), + TensorShape(123U, 134U, 7U, 3U), PadStrideInfo(1, 1, 0, 3)); } }; @@ -252,12 +309,16 @@ class LargeWinogradConvolutionLayer1x5Dataset final : public ConvolutionLayerDat LargeWinogradConvolutionLayer1x5Dataset() { // Batch size 1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(1U, 5U, 3U, 32U), TensorShape(32U), TensorShape(224U, 224U, 32U), PadStrideInfo(1, 1, 0, 2)); - add_config(TensorShape(181U, 152U, 42U), TensorShape(1U, 5U, 42U, 100U), TensorShape(100U), TensorShape(181U, 148U, 100U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(200U, 201U, 24U), TensorShape(1U, 5U, 24U, 61), TensorShape(61U), TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 0, 2)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(1U, 5U, 3U, 32U), TensorShape(32U), + TensorShape(224U, 224U, 32U), PadStrideInfo(1, 1, 0, 2)); + add_config(TensorShape(181U, 152U, 42U), TensorShape(1U, 5U, 42U, 100U), TensorShape(100U), + TensorShape(181U, 148U, 100U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(200U, 201U, 24U), TensorShape(1U, 5U, 24U, 61), TensorShape(61U), + TensorShape(200U, 201U, 61), PadStrideInfo(1, 1, 0, 2)); // Batch size > 1 - add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(1U, 5U, 16U, 7U), TensorShape(7U), TensorShape(123U, 130U, 7U, 3U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(1U, 5U, 16U, 7U), TensorShape(7U), + TensorShape(123U, 130U, 7U, 3U), PadStrideInfo(1, 1, 0, 0)); } }; @@ -267,11 +328,14 @@ class LargeWinogradConvolutionLayer1x5DatasetFp16Subset final : public Convoluti LargeWinogradConvolutionLayer1x5DatasetFp16Subset() { // Batch size 1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(1U, 5U, 3U, 32U), TensorShape(32U), TensorShape(224U, 224U, 32U), PadStrideInfo(1, 1, 0, 2)); - add_config(TensorShape(181U, 152U, 42U), TensorShape(1U, 5U, 42U, 100U), TensorShape(100U), TensorShape(181U, 148U, 100U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(1U, 5U, 3U, 32U), TensorShape(32U), + TensorShape(224U, 224U, 32U), PadStrideInfo(1, 1, 0, 2)); + add_config(TensorShape(181U, 152U, 42U), TensorShape(1U, 5U, 42U, 100U), TensorShape(100U), + TensorShape(181U, 148U, 100U), PadStrideInfo(1, 1, 0, 0)); // Batch size > 1 - add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(1U, 5U, 16U, 7U), TensorShape(7U), TensorShape(123U, 130U, 7U, 3U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(123U, 134U, 16U, 3U), TensorShape(1U, 5U, 16U, 7U), TensorShape(7U), + TensorShape(123U, 130U, 7U, 3U), PadStrideInfo(1, 1, 0, 0)); } }; @@ -282,15 +346,23 @@ class LargeConvolutionLayerDataset final : public ConvolutionLayerDataset LargeConvolutionLayerDataset() { // Batch size 1 - add_config(TensorShape(227U, 227U, 3U), TensorShape(11U, 11U, 3U, 96U), TensorShape(96U), TensorShape(55U, 55U, 96U), PadStrideInfo(4, 4, 0, 0)); - add_config(TensorShape(27U, 27U, 96U), TensorShape(5U, 5U, 96U, 256U), TensorShape(256U), TensorShape(27U, 27U, 256U), PadStrideInfo(1, 1, 2, 2)); - add_config(TensorShape(13U, 13U, 256U), TensorShape(1U, 1U, 256U, 384U), TensorShape(384U), TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(224U, 224U, 3U), TensorShape(7U, 7U, 3U, 64U), TensorShape(64U), TensorShape(112U, 112U, 64U), PadStrideInfo(2, 2, 3, 3)); + add_config(TensorShape(227U, 227U, 3U), TensorShape(11U, 11U, 3U, 96U), TensorShape(96U), + TensorShape(55U, 55U, 96U), PadStrideInfo(4, 4, 0, 0)); + add_config(TensorShape(27U, 27U, 96U), TensorShape(5U, 5U, 96U, 256U), TensorShape(256U), + TensorShape(27U, 27U, 256U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(1U, 1U, 256U, 384U), TensorShape(384U), + TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(7U, 7U, 3U, 64U), TensorShape(64U), + TensorShape(112U, 112U, 64U), PadStrideInfo(2, 2, 3, 3)); // Batch size 4 - add_config(TensorShape(227U, 227U, 3U, 4U), TensorShape(11U, 11U, 3U, 96U), TensorShape(96U), TensorShape(55U, 55U, 96U, 4U), PadStrideInfo(4, 4, 0, 0)); - add_config(TensorShape(27U, 27U, 96U, 4U), TensorShape(5U, 5U, 96U, 256U), TensorShape(256U), TensorShape(27U, 27U, 256U, 4U), PadStrideInfo(1, 1, 2, 2)); - add_config(TensorShape(13U, 13U, 256U, 4U), TensorShape(1U, 1U, 256U, 384U), TensorShape(384U), TensorShape(13U, 13U, 384U, 4U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(224U, 224U, 3U, 4U), TensorShape(7U, 7U, 3U, 64U), TensorShape(64U), TensorShape(112U, 112U, 64U, 4U), PadStrideInfo(2, 2, 3, 3)); + add_config(TensorShape(227U, 227U, 3U, 4U), TensorShape(11U, 11U, 3U, 96U), TensorShape(96U), + TensorShape(55U, 55U, 96U, 4U), PadStrideInfo(4, 4, 0, 0)); + add_config(TensorShape(27U, 27U, 96U, 4U), TensorShape(5U, 5U, 96U, 256U), TensorShape(256U), + TensorShape(27U, 27U, 256U, 4U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(13U, 13U, 256U, 4U), TensorShape(1U, 1U, 256U, 384U), TensorShape(384U), + TensorShape(13U, 13U, 384U, 4U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(224U, 224U, 3U, 4U), TensorShape(7U, 7U, 3U, 64U), TensorShape(64U), + TensorShape(112U, 112U, 64U, 4U), PadStrideInfo(2, 2, 3, 3)); } }; @@ -300,7 +372,8 @@ class VeryLargeConvolutionLayerDataset final : public ConvolutionLayerDataset VeryLargeConvolutionLayerDataset() { // Tensor size > 1e7 bytes && weight dimensions > 7 - add_config(TensorShape(336U, 336U, 32U), TensorShape(9U, 9U, 32U, 64U), TensorShape(64U), TensorShape(168U, 168U, 64U), PadStrideInfo(2, 2, 4, 4)); + add_config(TensorShape(336U, 336U, 32U), TensorShape(9U, 9U, 32U, 64U), TensorShape(64U), + TensorShape(168U, 168U, 64U), PadStrideInfo(2, 2, 4, 4)); } }; @@ -310,15 +383,23 @@ class LargeGroupedConvolutionLayerDataset final : public ConvolutionLayerDataset LargeGroupedConvolutionLayerDataset() { // Batch size 1 - add_config(TensorShape(227U, 227U, 4U), TensorShape(11U, 11U, 2U, 96U), TensorShape(96U), TensorShape(55U, 55U, 96U), PadStrideInfo(4, 4, 0, 0)); - add_config(TensorShape(27U, 27U, 96U), TensorShape(5U, 5U, 24U, 256U), TensorShape(256U), TensorShape(27U, 27U, 256U), PadStrideInfo(1, 1, 2, 2)); - add_config(TensorShape(13U, 13U, 256U), TensorShape(1U, 1U, 128U, 384U), TensorShape(384U), TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 128U, 384U), TensorShape(384U), TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(227U, 227U, 4U), TensorShape(11U, 11U, 2U, 96U), TensorShape(96U), + TensorShape(55U, 55U, 96U), PadStrideInfo(4, 4, 0, 0)); + add_config(TensorShape(27U, 27U, 96U), TensorShape(5U, 5U, 24U, 256U), TensorShape(256U), + TensorShape(27U, 27U, 256U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(1U, 1U, 128U, 384U), TensorShape(384U), + TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(13U, 13U, 384U), TensorShape(3U, 3U, 128U, 384U), TensorShape(384U), + TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 1, 1)); // Batch size 4 - add_config(TensorShape(227U, 227U, 4U, 4U), TensorShape(11U, 11U, 2U, 96U), TensorShape(96U), TensorShape(55U, 55U, 96U, 4U), PadStrideInfo(4, 4, 0, 0)); - add_config(TensorShape(27U, 27U, 96U, 4U), TensorShape(5U, 5U, 24U, 256U), TensorShape(256U), TensorShape(27U, 27U, 256U, 4U), PadStrideInfo(1, 1, 2, 2)); - add_config(TensorShape(13U, 13U, 256U, 4U), TensorShape(3U, 3U, 128U, 384U), TensorShape(384U), TensorShape(13U, 13U, 384U, 4U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(13U, 13U, 384U, 4U), TensorShape(3U, 3U, 128U, 384U), TensorShape(384U), TensorShape(13U, 13U, 384U, 4U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(227U, 227U, 4U, 4U), TensorShape(11U, 11U, 2U, 96U), TensorShape(96U), + TensorShape(55U, 55U, 96U, 4U), PadStrideInfo(4, 4, 0, 0)); + add_config(TensorShape(27U, 27U, 96U, 4U), TensorShape(5U, 5U, 24U, 256U), TensorShape(256U), + TensorShape(27U, 27U, 256U, 4U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(13U, 13U, 256U, 4U), TensorShape(3U, 3U, 128U, 384U), TensorShape(384U), + TensorShape(13U, 13U, 384U, 4U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 384U, 4U), TensorShape(3U, 3U, 128U, 384U), TensorShape(384U), + TensorShape(13U, 13U, 384U, 4U), PadStrideInfo(1, 1, 1, 1)); } }; } // namespace datasets diff --git a/tests/datasets/LargeGEMMDataset.h b/tests/datasets/LargeGEMMDataset.h index 21d03d6943b..ebc3a60b19e 100644 --- a/tests/datasets/LargeGEMMDataset.h +++ b/tests/datasets/LargeGEMMDataset.h @@ -52,13 +52,20 @@ class LargeGEMMOutput3DDataset final : public GEMMDataset public: LargeGEMMOutput3DDataset() { - add_config(TensorShape(364U, 3025U), TensorShape(96U, 364U), TensorShape(96U), TensorShape(96U, 605U, 5U), 1.0f, 0.0f); - add_config(TensorShape(681U, 1025U), TensorShape(213U, 681U), TensorShape(213U), TensorShape(213U, 205U, 5U), 1.0f, 0.0f); - add_config(TensorShape(923U, 429U), TensorShape(871U, 923U), TensorShape(871U), TensorShape(871U, 143U, 3U), 1.0f, 0.0f); - add_config(TensorShape(1201U, 729U), TensorShape(128U, 1201U), TensorShape(128U), TensorShape(128U, 243U, 3U), 1.0f, 0.0f); - add_config(TensorShape(1729U, 170U), TensorShape(128U, 1729U), TensorShape(128U), TensorShape(128U, 17U, 10U), 1.0f, 0.0f); - add_config(TensorShape(1729U, 170U), TensorShape(192U, 1729U), TensorShape(192U), TensorShape(192U, 85U, 2U), 1.0f, 0.0f); - add_config(TensorShape(2305U, 169U), TensorShape(384U, 2305U), TensorShape(384U), TensorShape(384U, 13U, 13U), 1.0f, 0.0f); + add_config(TensorShape(364U, 3025U), TensorShape(96U, 364U), TensorShape(96U), TensorShape(96U, 605U, 5U), 1.0f, + 0.0f); + add_config(TensorShape(681U, 1025U), TensorShape(213U, 681U), TensorShape(213U), TensorShape(213U, 205U, 5U), + 1.0f, 0.0f); + add_config(TensorShape(923U, 429U), TensorShape(871U, 923U), TensorShape(871U), TensorShape(871U, 143U, 3U), + 1.0f, 0.0f); + add_config(TensorShape(1201U, 729U), TensorShape(128U, 1201U), TensorShape(128U), TensorShape(128U, 243U, 3U), + 1.0f, 0.0f); + add_config(TensorShape(1729U, 170U), TensorShape(128U, 1729U), TensorShape(128U), TensorShape(128U, 17U, 10U), + 1.0f, 0.0f); + add_config(TensorShape(1729U, 170U), TensorShape(192U, 1729U), TensorShape(192U), TensorShape(192U, 85U, 2U), + 1.0f, 0.0f); + add_config(TensorShape(2305U, 169U), TensorShape(384U, 2305U), TensorShape(384U), TensorShape(384U, 13U, 13U), + 1.0f, 0.0f); } }; @@ -67,13 +74,20 @@ class LargeGEMMInputOutput3DDataset final : public GEMMDataset public: LargeGEMMInputOutput3DDataset() { - add_config(TensorShape(364U, 605U, 5U), TensorShape(96U, 364U), TensorShape(96U), TensorShape(96U, 605U, 5U), 0.2f, 1.2f); - add_config(TensorShape(681U, 205U, 5U), TensorShape(213U, 681U), TensorShape(213U), TensorShape(213U, 205U, 5U), 1.0f, 0.0f); - add_config(TensorShape(923U, 143U, 3U), TensorShape(871U, 923U), TensorShape(871U), TensorShape(871U, 143U, 3U), 1.0f, 0.0f); - add_config(TensorShape(1201U, 243U, 3U), TensorShape(128U, 1201U), TensorShape(128U), TensorShape(128U, 243U, 3U), 1.0f, 0.0f); - add_config(TensorShape(1729U, 17U, 10U, 3U), TensorShape(128U, 1729U), TensorShape(128U), TensorShape(128U, 17U, 10U, 3U), 1.0f, 0.3f); - add_config(TensorShape(1729U, 85U, 2U, 2U), TensorShape(192U, 1729U), TensorShape(192U), TensorShape(192U, 85U, 2U, 2U), 1.0f, 0.0f); - add_config(TensorShape(2305U, 13U, 13U), TensorShape(384U, 2305U), TensorShape(384U), TensorShape(384U, 13U, 13U), 0.4f, 0.7f); + add_config(TensorShape(364U, 605U, 5U), TensorShape(96U, 364U), TensorShape(96U), TensorShape(96U, 605U, 5U), + 0.2f, 1.2f); + add_config(TensorShape(681U, 205U, 5U), TensorShape(213U, 681U), TensorShape(213U), TensorShape(213U, 205U, 5U), + 1.0f, 0.0f); + add_config(TensorShape(923U, 143U, 3U), TensorShape(871U, 923U), TensorShape(871U), TensorShape(871U, 143U, 3U), + 1.0f, 0.0f); + add_config(TensorShape(1201U, 243U, 3U), TensorShape(128U, 1201U), TensorShape(128U), + TensorShape(128U, 243U, 3U), 1.0f, 0.0f); + add_config(TensorShape(1729U, 17U, 10U, 3U), TensorShape(128U, 1729U), TensorShape(128U), + TensorShape(128U, 17U, 10U, 3U), 1.0f, 0.3f); + add_config(TensorShape(1729U, 85U, 2U, 2U), TensorShape(192U, 1729U), TensorShape(192U), + TensorShape(192U, 85U, 2U, 2U), 1.0f, 0.0f); + add_config(TensorShape(2305U, 13U, 13U), TensorShape(384U, 2305U), TensorShape(384U), + TensorShape(384U, 13U, 13U), 0.4f, 0.7f); } }; @@ -94,7 +108,8 @@ class LargeGEMMVectorBiasDataset final : public GEMMDataset LargeGEMMVectorBiasDataset() { add_config(1, 783, 1021, 1.0f, 1.0f); - add_config(TensorShape(923U, 429U), TensorShape(871U, 923U), TensorShape(871U, 1U), TensorShape(871U, 429U), 1.0f, 1.0f); + add_config(TensorShape(923U, 429U), TensorShape(871U, 923U), TensorShape(871U, 1U), TensorShape(871U, 429U), + 1.0f, 1.0f); } }; diff --git a/tests/datasets/LargeGEMMLowpDataset.h b/tests/datasets/LargeGEMMLowpDataset.h index 6c201c5b658..84c631b5d3d 100644 --- a/tests/datasets/LargeGEMMLowpDataset.h +++ b/tests/datasets/LargeGEMMLowpDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_LARGE_GEMMLOWP_DATASET -#define ARM_COMPUTE_TEST_LARGE_GEMMLOWP_DATASET - -#include "tests/datasets/GEMMLowpDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_LARGEGEMMLOWPDATASET_H +#define ACL_TESTS_DATASETS_LARGEGEMMLOWPDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/GEMMLowpDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -75,4 +74,4 @@ class LargeGEMMLowpInputOutput3DDataset final : public GEMMLowpDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_LARGE_GEMMLOWP_DATASET */ +#endif // ACL_TESTS_DATASETS_LARGEGEMMLOWPDATASET_H diff --git a/tests/datasets/LargeMatMulDataset.h b/tests/datasets/LargeMatMulDataset.h index 8f6c000d372..b3149ef2dfe 100644 --- a/tests/datasets/LargeMatMulDataset.h +++ b/tests/datasets/LargeMatMulDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Arm Limited. + * Copyright (c) 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ACL_TESTS_DATASETS_LARGEMATMULDATASET -#define ACL_TESTS_DATASETS_LARGEMATMULDATASET +#ifndef ACL_TESTS_DATASETS_LARGEMATMULDATASET_H +#define ACL_TESTS_DATASETS_LARGEMATMULDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "tests/datasets/MatMulDataset.h" namespace arm_compute @@ -50,7 +51,8 @@ class HighDimensionalMatMulDataset final : public MatMulDataset public: HighDimensionalMatMulDataset() { - add_config(TensorShape(5U, 5U, 2U, 2U, 2U, 2U), TensorShape(5U, 5U, 2U, 2U, 2U, 2U), TensorShape(5U, 5U, 2U, 2U, 2U, 2U)); // 6D tensor + add_config(TensorShape(5U, 5U, 2U, 2U, 2U, 2U), TensorShape(5U, 5U, 2U, 2U, 2U, 2U), + TensorShape(5U, 5U, 2U, 2U, 2U, 2U)); // 6D tensor } }; @@ -61,8 +63,10 @@ class LargeMatMulDatasetRhsExportToCLImageRhsNT final : public MatMulDataset LargeMatMulDatasetRhsExportToCLImageRhsNT() { add_config(TensorShape(21U, 13U, 3U, 2U), TensorShape(32U, 21U, 3U, 2U), TensorShape(32U, 13U, 3U, 2U)); - add_config(TensorShape(38U, 12U, 1U, 5U, 2U), TensorShape(20U, 38U, 1U, 5U, 2U), TensorShape(20U, 12U, 1U, 5U, 2U)); - add_config(TensorShape(45U, 38U, 3U, 2U, 3U), TensorShape(20U, 45U, 3U, 2U, 3U), TensorShape(20U, 38U, 3U, 2U, 3U)); + add_config(TensorShape(38U, 12U, 1U, 5U, 2U), TensorShape(20U, 38U, 1U, 5U, 2U), + TensorShape(20U, 12U, 1U, 5U, 2U)); + add_config(TensorShape(45U, 38U, 3U, 2U, 3U), TensorShape(20U, 45U, 3U, 2U, 3U), + TensorShape(20U, 38U, 3U, 2U, 3U)); } }; class LargeMatMulDatasetRhsExportToCLImageRhsT final : public MatMulDataset @@ -72,11 +76,13 @@ class LargeMatMulDatasetRhsExportToCLImageRhsT final : public MatMulDataset LargeMatMulDatasetRhsExportToCLImageRhsT() { add_config(TensorShape(28U, 13U, 3U, 2U), TensorShape(32U, 28U, 3U, 2U), TensorShape(32U, 13U, 3U, 2U)); - add_config(TensorShape(40U, 12U, 1U, 5U, 2U), TensorShape(20U, 40U, 1U, 5U, 2U), TensorShape(20U, 12U, 1U, 5U, 2U)); - add_config(TensorShape(44U, 38U, 3U, 2U, 3U), TensorShape(20U, 44U, 3U, 2U, 3U), TensorShape(20U, 38U, 3U, 2U, 3U)); + add_config(TensorShape(40U, 12U, 1U, 5U, 2U), TensorShape(20U, 40U, 1U, 5U, 2U), + TensorShape(20U, 12U, 1U, 5U, 2U)); + add_config(TensorShape(44U, 38U, 3U, 2U, 3U), TensorShape(20U, 44U, 3U, 2U, 3U), + TensorShape(20U, 38U, 3U, 2U, 3U)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ACL_TESTS_DATASETS_LARGEMATMULDATASET */ +#endif // ACL_TESTS_DATASETS_LARGEMATMULDATASET_H diff --git a/tests/datasets/LargeMatMulMMULDataset.h b/tests/datasets/LargeMatMulMMULDataset.h index 23e0b3e5c86..7991bea0475 100644 --- a/tests/datasets/LargeMatMulMMULDataset.h +++ b/tests/datasets/LargeMatMulMMULDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Arm Limited. + * Copyright (c) 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -22,11 +22,12 @@ * SOFTWARE. */ -#ifndef ACL_TESTS_DATASETS_LARGEMATMULMMULDATASET -#define ACL_TESTS_DATASETS_LARGEMATMULMMULDATASET +#ifndef ACL_TESTS_DATASETS_LARGEMATMULMMULDATASET_H +#define ACL_TESTS_DATASETS_LARGEMATMULMMULDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "tests/datasets/MatMulDataset.h" namespace arm_compute @@ -53,7 +54,8 @@ class HighDimensionalMatMulMMULDataset final : public MatMulDataset public: HighDimensionalMatMulMMULDataset() { - add_config(TensorShape(4U, 5U, 2U, 2U, 2U, 2U), TensorShape(5U, 4U, 2U, 2U, 2U, 2U), TensorShape(5U, 5U, 2U, 2U, 2U, 2U)); // 6D tensor + add_config(TensorShape(4U, 5U, 2U, 2U, 2U, 2U), TensorShape(5U, 4U, 2U, 2U, 2U, 2U), + TensorShape(5U, 5U, 2U, 2U, 2U, 2U)); // 6D tensor } }; @@ -61,4 +63,4 @@ class HighDimensionalMatMulMMULDataset final : public MatMulDataset } // namespace test } // namespace arm_compute -#endif /* ACL_TESTS_DATASETS_LARGEMATMULMMULDATASET */ +#endif // ACL_TESTS_DATASETS_LARGEMATMULMMULDATASET_H diff --git a/tests/datasets/MatMulDataset.h b/tests/datasets/MatMulDataset.h index 9c1c5fb05df..34cbf3ff6e5 100644 --- a/tests/datasets/MatMulDataset.h +++ b/tests/datasets/MatMulDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Arm Limited. + * Copyright (c) 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ACL_TESTS_DATASETS_MATMULDATASET -#define ACL_TESTS_DATASETS_MATMULDATASET +#ifndef ACL_TESTS_DATASETS_MATMULDATASET_H +#define ACL_TESTS_DATASETS_MATMULDATASET_H #include "arm_compute/core/TensorShape.h" + #include "utils/TypePrinter.h" namespace arm_compute @@ -43,9 +44,7 @@ class MatMulDataset iterator(std::vector::const_iterator a_it, std::vector::const_iterator b_it, std::vector::const_iterator dst_it) - : _a_it{ std::move(a_it) }, - _b_it{ std::move(b_it) }, - _dst_it{ std::move(dst_it) } + : _a_it{std::move(a_it)}, _b_it{std::move(b_it)}, _dst_it{std::move(dst_it)} { } @@ -107,4 +106,4 @@ class MatMulDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ACL_TESTS_DATASETS_MATMULDATASET */ +#endif // ACL_TESTS_DATASETS_MATMULDATASET_H diff --git a/tests/datasets/MatMulLowpMMULDataset.h b/tests/datasets/MatMulLowpMMULDataset.h index 1b22e1061f7..a61b417fd1f 100644 --- a/tests/datasets/MatMulLowpMMULDataset.h +++ b/tests/datasets/MatMulLowpMMULDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Arm Limited. + * Copyright (c) 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -27,6 +27,7 @@ #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "tests/datasets/MatMulDataset.h" namespace arm_compute @@ -86,7 +87,8 @@ class HighDimensionalMatMulLowpMMULDataset final : public MatMulDataset public: HighDimensionalMatMulLowpMMULDataset() { - add_config(TensorShape(16U, 5U, 2U, 2U, 2U, 2U), TensorShape(5U, 16U, 2U, 2U, 2U, 2U), TensorShape(5U, 5U, 2U, 2U, 2U, 2U)); // 6D tensor + add_config(TensorShape(16U, 5U, 2U, 2U, 2U, 2U), TensorShape(5U, 16U, 2U, 2U, 2U, 2U), + TensorShape(5U, 5U, 2U, 2U, 2U, 2U)); // 6D tensor } }; diff --git a/tests/datasets/MatrixPatternDataset.h b/tests/datasets/MatrixPatternDataset.h index e4220513b7d..8e8b9c7c7a5 100644 --- a/tests/datasets/MatrixPatternDataset.h +++ b/tests/datasets/MatrixPatternDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,19 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_MATRIX_PATTERN_DATASET_H -#define ARM_COMPUTE_TEST_MATRIX_PATTERN_DATASET_H +#ifndef ACL_TESTS_DATASETS_MATRIXPATTERNDATASET_H +#define ACL_TESTS_DATASETS_MATRIXPATTERNDATASET_H +#include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" -#include "tests/framework/datasets/ContainerDataset.h" +#include "tests/framework/datasets/ContainerDataset.h" #include "utils/TypePrinter.h" -#include "arm_compute/core/TensorShape.h" -#include "arm_compute/core/Types.h" - -#include "arm_compute/core/TensorShape.h" -#include "arm_compute/core/Types.h" #include namespace arm_compute @@ -46,16 +42,11 @@ class MatrixPatterns final : public framework::dataset::ContainerDataset @@ -39,16 +40,13 @@ class NonLinearFilterFunctions final : public framework::dataset::ContainerDatas { public: NonLinearFilterFunctions() - : ContainerDataset("NonLinearFilterFunction", - { - NonLinearFilterFunction::MEDIAN, - NonLinearFilterFunction::MIN, - NonLinearFilterFunction::MAX - }) + : ContainerDataset( + "NonLinearFilterFunction", + {NonLinearFilterFunction::MEDIAN, NonLinearFilterFunction::MIN, NonLinearFilterFunction::MAX}) { } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_NON_LINEAR_FILTER_FUNCTION_DATASET_H */ +#endif // ACL_TESTS_DATASETS_NONLINEARFILTERFUNCTIONDATASET_H diff --git a/tests/datasets/NormalizationTypesDataset.h b/tests/datasets/NormalizationTypesDataset.h index 5e777c57e37..8adcfb0dc6f 100644 --- a/tests/datasets/NormalizationTypesDataset.h +++ b/tests/datasets/NormalizationTypesDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_NORMALIZATION_TYPES_DATASET_H -#define ARM_COMPUTE_TEST_NORMALIZATION_TYPES_DATASET_H +#ifndef ACL_TESTS_DATASETS_NORMALIZATIONTYPESDATASET_H +#define ACL_TESTS_DATASETS_NORMALIZATIONTYPESDATASET_H #include "arm_compute/core/Types.h" + #include "tests/framework/datasets/ContainerDataset.h" #include @@ -38,15 +39,11 @@ namespace datasets class NormalizationTypes final : public framework::dataset::ContainerDataset> { public: - NormalizationTypes() - : ContainerDataset("NormType", - { - NormType::IN_MAP_1D, NormType::IN_MAP_2D, NormType::CROSS_MAP - }) + NormalizationTypes() : ContainerDataset("NormType", {NormType::IN_MAP_1D, NormType::IN_MAP_2D, NormType::CROSS_MAP}) { } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_NORMALIZATION_TYPES_DATASET_H */ +#endif // ACL_TESTS_DATASETS_NORMALIZATIONTYPESDATASET_H diff --git a/tests/datasets/NormalizePlanarYUVLayerDataset.h b/tests/datasets/NormalizePlanarYUVLayerDataset.h index 1d7b3209f05..ea6c81b7a84 100644 --- a/tests/datasets/NormalizePlanarYUVLayerDataset.h +++ b/tests/datasets/NormalizePlanarYUVLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_NORMALIZE_PLANAR_YUV_LAYER_DATASET -#define ARM_COMPUTE_TEST_NORMALIZE_PLANAR_YUV_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_NORMALIZEPLANARYUVLAYERDATASET_H +#define ACL_TESTS_DATASETS_NORMALIZEPLANARYUVLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -42,10 +42,8 @@ class NormalizePlanarYUVLayerDataset struct iterator { - iterator(std::vector::const_iterator tensor_it, - std::vector::const_iterator param_it) - : _tensor_it{ std::move(tensor_it) }, - _param_it{ std::move(param_it) } + iterator(std::vector::const_iterator tensor_it, std::vector::const_iterator param_it) + : _tensor_it{std::move(tensor_it)}, _param_it{std::move(param_it)} { } @@ -104,4 +102,4 @@ class NormalizePlanarYUVLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_NORMALIZE_PLANAR_YUV_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_NORMALIZEPLANARYUVLAYERDATASET_H diff --git a/tests/datasets/OpticalFlowDataset.h b/tests/datasets/OpticalFlowDataset.h deleted file mode 100644 index 2ef75af7bb0..00000000000 --- a/tests/datasets/OpticalFlowDataset.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) 2018 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_TEST_OPTICAL_FLOW_DATASET -#define ARM_COMPUTE_TEST_OPTICAL_FLOW_DATASET - -#include "tests/TypePrinter.h" -#include "tests/validation/Helpers.h" -#include "utils/TypePrinter.h" - -namespace arm_compute -{ -namespace test -{ -namespace datasets -{ -class OpticalFlowDataset -{ -public: - using type = std::tuple; - - struct iterator - { - iterator(std::vector::const_iterator old_image_it, - std::vector::const_iterator new_image_it, - std::vector::const_iterator params_it, - std::vector::const_iterator num_levels_it, - std::vector::const_iterator num_keypoints_it) - : _old_image_it{ std::move(old_image_it) }, - _new_image_it{ std::move(new_image_it) }, - _params_it{ std::move(params_it) }, - _num_levels_it{ std::move(num_levels_it) }, - _num_keypoints_it{ std::move(num_keypoints_it) } - { - } - - std::string description() const - { - std::stringstream description; - description << "NumLevels=" << *_num_levels_it << ":"; - description << "NumKeypoints=" << *_num_keypoints_it << ":"; - description << "Termination=" << _params_it->termination << ":"; - description << "Epsilon=" << _params_it->epsilon << ":"; - description << "NumIterations=" << _params_it->num_iterations << ":"; - description << "WindowDimension=" << _params_it->window_dimension << ":"; - description << "InitialEstimate=" << std::boolalpha << _params_it->use_initial_estimate; - - return description.str(); - } - - OpticalFlowDataset::type operator*() const - { - return std::make_tuple(*_old_image_it, *_new_image_it, *_params_it, *_num_levels_it, *_num_keypoints_it); - } - - iterator &operator++() - { - ++_old_image_it; - ++_new_image_it; - ++_params_it; - ++_num_levels_it; - ++_num_keypoints_it; - - return *this; - } - - private: - std::vector::const_iterator _old_image_it; - std::vector::const_iterator _new_image_it; - std::vector::const_iterator _params_it; - std::vector::const_iterator _num_levels_it; - std::vector::const_iterator _num_keypoints_it; - }; - - iterator begin() const - { - return iterator(_old_image.begin(), - _new_image.begin(), - _params.begin(), - _num_levels.begin(), - _num_keypoints.begin()); - } - - int size() const - { - return std::min(_old_image.size(), std::min(_new_image.size(), std::min(_params.size(), std::min(_num_levels.size(), _num_keypoints.size())))); - } - - void add_config(std::string old_image, std::string new_image, OpticalFlowParameters params, size_t num_levels, size_t num_keypoints) - { - _old_image.emplace_back(std::move(old_image)); - _new_image.emplace_back(std::move(new_image)); - _params.emplace_back(params); - _num_levels.emplace_back(num_levels); - _num_keypoints.emplace_back(num_keypoints); - } - -protected: - OpticalFlowDataset() = default; - OpticalFlowDataset(OpticalFlowDataset &&) = default; - -private: - std::vector _old_image{}; - std::vector _new_image{}; - std::vector _params{}; - std::vector _num_levels{}; - std::vector _num_keypoints{}; -}; - -// *INDENT-OFF* -// clang-format off -class SmallOpticalFlowDataset final : public OpticalFlowDataset -{ -public: - SmallOpticalFlowDataset() - { - // old_image new_image (termination, epsilon, num_iterations, window_dimension, initial_estimate) levels keypoints - add_config("opticalflow_old.pgm", "opticalflow_new.pgm", OpticalFlowParameters(Termination::TERM_CRITERIA_BOTH, 0.01f, 3, 5, true), 3, 1000); - add_config("opticalflow_old.pgm", "opticalflow_new.pgm", OpticalFlowParameters(Termination::TERM_CRITERIA_EPSILON, 0.01f, 3, 5, true), 3, 1000); - add_config("opticalflow_old.pgm", "opticalflow_new.pgm", OpticalFlowParameters(Termination::TERM_CRITERIA_ITERATIONS, 0.01f, 3, 5, true), 3, 1000); - } -}; - -class LargeOpticalFlowDataset final : public OpticalFlowDataset -{ -public: - LargeOpticalFlowDataset() - { - // old_image new_image (termination, epsilon, num_iterations, window_dimension, initial_estimate) levels keypoints - add_config("opticalflow_old.pgm", "opticalflow_new.pgm", OpticalFlowParameters(Termination::TERM_CRITERIA_BOTH, 0.01f, 3, 5, true), 3, 10000); - add_config("opticalflow_old.pgm", "opticalflow_new.pgm", OpticalFlowParameters(Termination::TERM_CRITERIA_EPSILON, 0.01f, 3, 5, true), 3, 10000); - add_config("opticalflow_old.pgm", "opticalflow_new.pgm", OpticalFlowParameters(Termination::TERM_CRITERIA_ITERATIONS, 0.01f, 3, 5, true), 3, 10000); - - // old_image new_image (termination, epsilon, num_iterations, window_dimension, initial_estimate) levels keypoints - add_config("opticalflow_old.pgm", "opticalflow_new.pgm", OpticalFlowParameters(Termination::TERM_CRITERIA_BOTH, 0.01f, 3, 5, false), 3, 10000); - add_config("opticalflow_old.pgm", "opticalflow_new.pgm", OpticalFlowParameters(Termination::TERM_CRITERIA_EPSILON, 0.01f, 3, 5, false), 3, 10000); - add_config("opticalflow_old.pgm", "opticalflow_new.pgm", OpticalFlowParameters(Termination::TERM_CRITERIA_ITERATIONS, 0.01f, 3, 5, false), 3, 10000); - } -}; -// clang-format on -// *INDENT-ON* - -} // namespace datasets -} // namespace test -} // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_OPTICAL_FLOW_DATASET */ diff --git a/tests/datasets/Pooling3dLayerDataset.h b/tests/datasets/Pooling3dLayerDataset.h index cfe970e8be1..e21297486cb 100644 --- a/tests/datasets/Pooling3dLayerDataset.h +++ b/tests/datasets/Pooling3dLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Arm Limited. + * Copyright (c) 2022, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,16 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ + +#ifndef ACL_TESTS_DATASETS_POOLING3DLAYERDATASET_H +#define ACL_TESTS_DATASETS_POOLING3DLAYERDATASET_H + #ifndef ARM_COMPUTE_TEST_POOLING_3D_LAYER_DATASET #define ARM_COMPUTE_TEST_POOLING_3D_LAYER_DATASET #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "utils/TypePrinter.h" namespace arm_compute @@ -43,8 +48,7 @@ class Pooling3dLayerDataset { iterator(std::vector::const_iterator src_it, std::vector::const_iterator infos_it) - : _src_it{ std::move(src_it) }, - _infos_it{ std::move(infos_it) } + : _src_it{std::move(src_it)}, _infos_it{std::move(infos_it)} { } @@ -106,16 +110,28 @@ class Pooling3dLayerDatasetSpecial final : public Pooling3dLayerDataset Pooling3dLayerDatasetSpecial() { // Special cases - add_config(TensorShape(2U, 3U, 4U, 2U, 4U), Pooling3dLayerInfo(PoolingType::AVG, /*pool size*/ Size3D(2, 2, 1), /*pool strides*/ Size3D(3, 3, 1), /*pool padding*/ Padding3D(0, 0, 0), true)); - add_config(TensorShape(20U, 22U, 10U, 2U), Pooling3dLayerInfo(PoolingType::AVG, Size3D(100, 100, 100), Size3D(5, 5, 5), Padding3D(50, 50, 50), true)); - add_config(TensorShape(10U, 20U, 32U, 3U, 2U), Pooling3dLayerInfo(PoolingType::MAX, /*pool size*/ 3, /*pool strides*/ Size3D(2, 2, 2), Padding3D(1, 1, 1, 1, 1, 1), false, false, - DimensionRoundingType::FLOOR)); - add_config(TensorShape(14U, 10U, 10U, 3U, 5U), Pooling3dLayerInfo(PoolingType::AVG, Size3D(3, 3, 3), /*pool strides*/ Size3D(3, 3, 3), Padding3D(2, 1, 2), true, false, DimensionRoundingType::CEIL)); - add_config(TensorShape(14U, 10U, 10U, 2U, 4U), Pooling3dLayerInfo(PoolingType::AVG, Size3D(3, 3, 3), /*pool strides*/ Size3D(3, 3, 3), Padding3D(2, 1, 2), false, false, DimensionRoundingType::CEIL)); - add_config(TensorShape(15U, 13U, 13U, 3U, 5U), Pooling3dLayerInfo(PoolingType::AVG, Size3D(4, 4, 4), /*pool strides*/ Size3D(2, 2, 2), Padding3D(2, 2, 2), true, false, DimensionRoundingType::CEIL)); + add_config(TensorShape(2U, 3U, 4U, 2U, 4U), + Pooling3dLayerInfo(PoolingType::AVG, /*pool size*/ Size3D(2, 2, 1), /*pool strides*/ Size3D(3, 3, 1), + /*pool padding*/ Padding3D(0, 0, 0), true)); + add_config(TensorShape(20U, 22U, 10U, 2U), Pooling3dLayerInfo(PoolingType::AVG, Size3D(100, 100, 100), + Size3D(5, 5, 5), Padding3D(50, 50, 50), true)); + add_config(TensorShape(10U, 20U, 32U, 3U, 2U), + Pooling3dLayerInfo(PoolingType::MAX, /*pool size*/ 3, /*pool strides*/ Size3D(2, 2, 2), + Padding3D(1, 1, 1, 1, 1, 1), false, false, DimensionRoundingType::FLOOR)); + add_config(TensorShape(14U, 10U, 10U, 3U, 5U), + Pooling3dLayerInfo(PoolingType::AVG, Size3D(3, 3, 3), /*pool strides*/ Size3D(3, 3, 3), + Padding3D(2, 1, 2), true, false, DimensionRoundingType::CEIL)); + add_config(TensorShape(14U, 10U, 10U, 2U, 4U), + Pooling3dLayerInfo(PoolingType::AVG, Size3D(3, 3, 3), /*pool strides*/ Size3D(3, 3, 3), + Padding3D(2, 1, 2), false, false, DimensionRoundingType::CEIL)); + add_config(TensorShape(15U, 13U, 13U, 3U, 5U), + Pooling3dLayerInfo(PoolingType::AVG, Size3D(4, 4, 4), /*pool strides*/ Size3D(2, 2, 2), + Padding3D(2, 2, 2), true, false, DimensionRoundingType::CEIL)); } }; } // namespace datasets } // namespace test } // namespace arm_compute #endif /* ARM_COMPUTE_TEST_POOLING_3D_LAYER_DATASET */ + +#endif // ACL_TESTS_DATASETS_POOLING3DLAYERDATASET_H diff --git a/tests/datasets/PoolingLayerDataset.h b/tests/datasets/PoolingLayerDataset.h index 1557240fd24..5496886137c 100644 --- a/tests/datasets/PoolingLayerDataset.h +++ b/tests/datasets/PoolingLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_POOLING_LAYER_DATASET -#define ARM_COMPUTE_TEST_POOLING_LAYER_DATASET +#ifndef ACL_TESTS_DATASETS_POOLINGLAYERDATASET_H +#define ACL_TESTS_DATASETS_POOLINGLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "utils/TypePrinter.h" namespace arm_compute @@ -43,8 +44,7 @@ class PoolingLayerDataset { iterator(std::vector::const_iterator src_it, std::vector::const_iterator infos_it) - : _src_it{ std::move(src_it) }, - _infos_it{ std::move(infos_it) } + : _src_it{std::move(src_it)}, _infos_it{std::move(infos_it)} { } @@ -106,14 +106,20 @@ class PoolingLayerDatasetSpecial final : public PoolingLayerDataset PoolingLayerDatasetSpecial() { // Special cases - add_config(TensorShape(2U, 3U, 4U, 1U), PoolingLayerInfo(PoolingType::AVG, Size2D(2, 2), DataLayout::NCHW, PadStrideInfo(3, 3, 0, 0), true)); - add_config(TensorShape(60U, 52U, 3U, 2U), PoolingLayerInfo(PoolingType::AVG, Size2D(100, 100), DataLayout::NCHW, PadStrideInfo(5, 5, 50, 50), true)); + add_config(TensorShape(2U, 3U, 4U, 1U), + PoolingLayerInfo(PoolingType::AVG, Size2D(2, 2), DataLayout::NCHW, PadStrideInfo(3, 3, 0, 0), true)); + add_config(TensorShape(60U, 52U, 3U, 2U), PoolingLayerInfo(PoolingType::AVG, Size2D(100, 100), DataLayout::NCHW, + PadStrideInfo(5, 5, 50, 50), true)); // Asymmetric padding - add_config(TensorShape(112U, 112U, 32U), PoolingLayerInfo(PoolingType::MAX, 3, DataLayout::NCHW, PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR))); - add_config(TensorShape(14U, 14U, 832U), PoolingLayerInfo(PoolingType::MAX, 2, DataLayout::NCHW, PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(112U, 112U, 32U), + PoolingLayerInfo(PoolingType::MAX, 3, DataLayout::NCHW, + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR))); + add_config(TensorShape(14U, 14U, 832U), + PoolingLayerInfo(PoolingType::MAX, 2, DataLayout::NCHW, + PadStrideInfo(1, 1, 0, 0, DimensionRoundingType::CEIL))); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_POOLING_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_POOLINGLAYERDATASET_H diff --git a/tests/datasets/PoolingTypesDataset.h b/tests/datasets/PoolingTypesDataset.h index 3a47a358d07..4600fc1dcd3 100644 --- a/tests/datasets/PoolingTypesDataset.h +++ b/tests/datasets/PoolingTypesDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_POOLING_TYPES_DATASET_H -#define ARM_COMPUTE_TEST_POOLING_TYPES_DATASET_H +#ifndef ACL_TESTS_DATASETS_POOLINGTYPESDATASET_H +#define ACL_TESTS_DATASETS_POOLINGTYPESDATASET_H #include "arm_compute/core/Types.h" + #include "tests/framework/datasets/ContainerDataset.h" #include @@ -39,11 +40,7 @@ namespace datasets class PoolingTypes final : public framework::dataset::ContainerDataset> { public: - PoolingTypes() - : ContainerDataset("PoolType", - { - PoolingType::MAX, PoolingType::AVG, PoolingType::L2 - }) + PoolingTypes() : ContainerDataset("PoolType", {PoolingType::MAX, PoolingType::AVG, PoolingType::L2}) { } }; @@ -51,4 +48,4 @@ class PoolingTypes final : public framework::dataset::ContainerDataset::const_iterator src_it, std::vector::const_iterator infos_it) - : _src_it{ std::move(src_it) }, - _infos_it{ std::move(infos_it) } + : _src_it{std::move(src_it)}, _infos_it{std::move(infos_it)} { } @@ -105,12 +104,13 @@ class SmallPriorBoxLayerDataset final : public PriorBoxLayerDataset public: SmallPriorBoxLayerDataset() { - std::vector min_val = { 30.f }; - std::vector var = { 0.1, 0.1, 0.2, 0.2 }; - std::vector max_val = { 60.f }; - std::vector aspect_ratio = { 2.f }; - std::array steps = { { 8.f, 8.f } }; - add_config(TensorShape(4U, 4U), PriorBoxLayerInfo(min_val, var, 0.5f, true, false, max_val, aspect_ratio, Coordinates2D{ 8, 8 }, steps)); + std::vector min_val = {30.f}; + std::vector var = {0.1, 0.1, 0.2, 0.2}; + std::vector max_val = {60.f}; + std::vector aspect_ratio = {2.f}; + std::array steps = {{8.f, 8.f}}; + add_config(TensorShape(4U, 4U), PriorBoxLayerInfo(min_val, var, 0.5f, true, false, max_val, aspect_ratio, + Coordinates2D{8, 8}, steps)); } }; @@ -119,15 +119,16 @@ class LargePriorBoxLayerDataset final : public PriorBoxLayerDataset public: LargePriorBoxLayerDataset() { - std::vector min_val = { 30.f }; - std::vector var = { 0.1, 0.1, 0.2, 0.2 }; - std::vector max_val = { 60.f }; - std::vector aspect_ratio = { 2.f }; - std::array steps = { { 8.f, 8.f } }; - add_config(TensorShape(150U, 245U, 4U, 12U), PriorBoxLayerInfo(min_val, var, 0.5f, true, false, max_val, aspect_ratio, Coordinates2D{ 8, 8 }, steps)); + std::vector min_val = {30.f}; + std::vector var = {0.1, 0.1, 0.2, 0.2}; + std::vector max_val = {60.f}; + std::vector aspect_ratio = {2.f}; + std::array steps = {{8.f, 8.f}}; + add_config(TensorShape(150U, 245U, 4U, 12U), PriorBoxLayerInfo(min_val, var, 0.5f, true, false, max_val, + aspect_ratio, Coordinates2D{8, 8}, steps)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_PRIORBOX_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_PRIORBOXLAYERDATASET_H diff --git a/tests/datasets/RNNLayerDataset.h b/tests/datasets/RNNLayerDataset.h index 5c252f973ff..1d9f0202b84 100644 --- a/tests/datasets/RNNLayerDataset.h +++ b/tests/datasets/RNNLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_RNN_LAYER_DATASET -#define ARM_COMPUTE_TEST_RNN_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_RNNLAYERDATASET_H +#define ACL_TESTS_DATASETS_RNNLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -48,12 +48,12 @@ class RNNLayerDataset std::vector::const_iterator biases_it, std::vector::const_iterator dst_it, std::vector::const_iterator infos_it) - : _src_it{ std::move(src_it) }, - _weights_it{ std::move(weights_it) }, - _recurrent_weights_it{ std::move(recurrent_weights_it) }, - _biases_it{ std::move(biases_it) }, - _dst_it{ std::move(dst_it) }, - _infos_it{ std::move(infos_it) } + : _src_it{std::move(src_it)}, + _weights_it{std::move(weights_it)}, + _recurrent_weights_it{std::move(recurrent_weights_it)}, + _biases_it{std::move(biases_it)}, + _dst_it{std::move(dst_it)}, + _infos_it{std::move(infos_it)} { } @@ -95,15 +95,24 @@ class RNNLayerDataset iterator begin() const { - return iterator(_src_shapes.begin(), _weight_shapes.begin(), _recurrent_weight_shapes.begin(), _bias_shapes.begin(), _dst_shapes.begin(), _infos.begin()); + return iterator(_src_shapes.begin(), _weight_shapes.begin(), _recurrent_weight_shapes.begin(), + _bias_shapes.begin(), _dst_shapes.begin(), _infos.begin()); } int size() const { - return std::min(_src_shapes.size(), std::min(_weight_shapes.size(), std::min(_recurrent_weight_shapes.size(), std::min(_bias_shapes.size(), std::min(_dst_shapes.size(), _infos.size()))))); + return std::min(_src_shapes.size(), + std::min(_weight_shapes.size(), + std::min(_recurrent_weight_shapes.size(), + std::min(_bias_shapes.size(), std::min(_dst_shapes.size(), _infos.size()))))); } - void add_config(TensorShape src, TensorShape weights, TensorShape recurrent_weights, TensorShape biases, TensorShape dst, ActivationLayerInfo info) + void add_config(TensorShape src, + TensorShape weights, + TensorShape recurrent_weights, + TensorShape biases, + TensorShape dst, + ActivationLayerInfo info) { _src_shapes.emplace_back(std::move(src)); _weight_shapes.emplace_back(std::move(weights)); @@ -131,11 +140,12 @@ class SmallRNNLayerDataset final : public RNNLayerDataset public: SmallRNNLayerDataset() { - add_config(TensorShape(128U, 16U), TensorShape(128U, 32U), TensorShape(32U, 32U), TensorShape(32U), TensorShape(32U, 16U), ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)); + add_config(TensorShape(128U, 16U), TensorShape(128U, 32U), TensorShape(32U, 32U), TensorShape(32U), + TensorShape(32U, 16U), ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_RNN_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_RNNLAYERDATASET_H diff --git a/tests/datasets/ROIDataset.h b/tests/datasets/ROIDataset.h index 2db8973008d..1255c9ab937 100644 --- a/tests/datasets/ROIDataset.h +++ b/tests/datasets/ROIDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 Arm Limited. + * Copyright (c) 2018-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_ROI_ALIGN_LAYER_DATASET -#define ARM_COMPUTE_TEST_ROI_ALIGN_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_ROIDATASET_H +#define ACL_TESTS_DATASETS_ROIDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -45,9 +45,9 @@ class ROIDataset iterator(std::vector::const_iterator tensor_shape_it, std::vector::const_iterator infos_it, std::vector::const_iterator rois_shape_it) - : _tensor_shape_it{ std::move(tensor_shape_it) }, - _infos_it{ std::move(infos_it) }, - _rois_shape_it{ std::move(rois_shape_it) } + : _tensor_shape_it{std::move(tensor_shape_it)}, + _infos_it{std::move(infos_it)}, + _rois_shape_it{std::move(rois_shape_it)} { } @@ -140,4 +140,4 @@ class SmallROIDataset final : public ROIDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_ROI_ALIGN_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_ROIDATASET_H diff --git a/tests/datasets/RandomBatchNormalizationLayerDataset.h b/tests/datasets/RandomBatchNormalizationLayerDataset.h index 4ccb2eaaba1..68376cffb87 100644 --- a/tests/datasets/RandomBatchNormalizationLayerDataset.h +++ b/tests/datasets/RandomBatchNormalizationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_RANDOM_BATCH_NORMALIZATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_RANDOM_BATCH_NORMALIZATION_LAYER_DATASET - -#include "tests/datasets/BatchNormalizationLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_RANDOMBATCHNORMALIZATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_RANDOMBATCHNORMALIZATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/BatchNormalizationLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -59,4 +58,4 @@ class LargeRandomBatchNormalizationLayerDataset final : public BatchNormalizatio } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_RANDOM_BATCH_NORMALIZATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_RANDOMBATCHNORMALIZATIONLAYERDATASET_H diff --git a/tests/datasets/RandomNormalizePlanarYUVLayerDataset.h b/tests/datasets/RandomNormalizePlanarYUVLayerDataset.h index d42c6826d94..6730568e1a0 100644 --- a/tests/datasets/RandomNormalizePlanarYUVLayerDataset.h +++ b/tests/datasets/RandomNormalizePlanarYUVLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_RANDOM_NORMALIZE_PLANAR_YUV_LAYER_DATASET -#define ARM_COMPUTE_TEST_RANDOM_NORMALIZE_PLANAR_YUV_LAYER_DATASET - -#include "tests/datasets/NormalizePlanarYUVLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_RANDOMNORMALIZEPLANARYUVLAYERDATASET_H +#define ACL_TESTS_DATASETS_RANDOMNORMALIZEPLANARYUVLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/NormalizePlanarYUVLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -53,4 +52,4 @@ class RandomNormalizePlanarYUVLayerDataset final : public NormalizePlanarYUVLaye } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_RANDOM_NORMALIZE_PLANAR_YUV_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_RANDOMNORMALIZEPLANARYUVLAYERDATASET_H diff --git a/tests/datasets/ReorderLayerDataset.h b/tests/datasets/ReorderLayerDataset.h index 7ef9012102e..cf6a45f7322 100644 --- a/tests/datasets/ReorderLayerDataset.h +++ b/tests/datasets/ReorderLayerDataset.h @@ -26,6 +26,7 @@ #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "utils/TypePrinter.h" namespace arm_compute @@ -45,9 +46,7 @@ class ReorderLayerDataset iterator(std::vector::const_iterator in_it, std::vector::const_iterator out_it, std::vector::const_iterator _wf_in_it) - : _in_it{ std::move(in_it) }, - _out_it{ std::move(out_it) }, - _wf_in_it{ std::move(_wf_in_it) } + : _in_it{std::move(in_it)}, _out_it{std::move(out_it)}, _wf_in_it{std::move(_wf_in_it)} { } @@ -101,7 +100,7 @@ class ReorderLayerDataset ReorderLayerDataset() = default; ReorderLayerDataset(ReorderLayerDataset &&) = default; - private: +private: std::vector _in_shapes{}; std::vector _out_shapes{}; std::vector _in_wfs{}; @@ -111,7 +110,7 @@ class ReorderLayerDataset class ReorderLayerDatasetInterleave4 final : public ReorderLayerDataset { - public: +public: ReorderLayerDatasetInterleave4() { add_config(TensorShape(10U, 9U), TensorShape(10U, 12U), WeightFormat::OHWI); @@ -129,7 +128,7 @@ class ReorderLayerDatasetInterleave4 final : public ReorderLayerDataset class ReorderLayerDatasetInterleave8 final : public ReorderLayerDataset { - public: +public: ReorderLayerDatasetInterleave8() { add_config(TensorShape(10U, 9U), TensorShape(10U, 16U), WeightFormat::OHWI); @@ -147,7 +146,7 @@ class ReorderLayerDatasetInterleave8 final : public ReorderLayerDataset class ReorderLayerDatasetInterleave4Block4 final : public ReorderLayerDataset { - public: +public: ReorderLayerDatasetInterleave4Block4() { add_config(TensorShape(12U, 9U), TensorShape(12U, 12U), WeightFormat::OHWI); @@ -159,7 +158,7 @@ class ReorderLayerDatasetInterleave4Block4 final : public ReorderLayerDataset class ReorderLayerDatasetInterleave8Block4 final : public ReorderLayerDataset { - public: +public: ReorderLayerDatasetInterleave8Block4() { add_config(TensorShape(16U, 9U), TensorShape(16U, 16U), WeightFormat::OHWI); diff --git a/tests/datasets/ReorgLayerDataset.h b/tests/datasets/ReorgLayerDataset.h index 34d27017885..ea47454a3c3 100644 --- a/tests/datasets/ReorgLayerDataset.h +++ b/tests/datasets/ReorgLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_REORGLAYER_DATASET -#define ARM_COMPUTE_TEST_REORGLAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_REORGLAYERDATASET_H +#define ACL_TESTS_DATASETS_REORGLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -42,10 +42,8 @@ class ReorgLayerDataset struct iterator { - iterator(std::vector::const_iterator src_it, - std::vector::const_iterator stride_it) - : _src_it{ std::move(src_it) }, - _stride_it{ std::move(stride_it) } + iterator(std::vector::const_iterator src_it, std::vector::const_iterator stride_it) + : _src_it{std::move(src_it)}, _stride_it{std::move(stride_it)} { } @@ -130,4 +128,4 @@ class LargeReorgLayerDataset final : public ReorgLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_REORGLAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_REORGLAYERDATASET_H diff --git a/tests/datasets/ReshapeLayerDataset.h b/tests/datasets/ReshapeLayerDataset.h index 015f9157aad..e8222f3fba8 100644 --- a/tests/datasets/ReshapeLayerDataset.h +++ b/tests/datasets/ReshapeLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018, 2023 Arm Limited. + * Copyright (c) 2017-2018, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,10 +24,10 @@ #ifndef ACL_TESTS_DATASETS_RESHAPELAYERDATASET_H #define ACL_TESTS_DATASETS_RESHAPELAYERDATASET_H -#include "utils/TypePrinter.h" - #include "arm_compute/core/TensorShape.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,7 +43,7 @@ class ReshapeLayerDataset struct iterator { iterator(std::vector::const_iterator in_it, std::vector::const_iterator out_it) - : _in_it{ std::move(in_it) }, _out_it{ std::move(out_it) } + : _in_it{std::move(in_it)}, _out_it{std::move(out_it)} { } diff --git a/tests/datasets/SamplingPolicyDataset.h b/tests/datasets/SamplingPolicyDataset.h index e36eb51aac8..ed8c6520a09 100644 --- a/tests/datasets/SamplingPolicyDataset.h +++ b/tests/datasets/SamplingPolicyDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SAMPLING_POLICY_DATASET_H -#define ARM_COMPUTE_TEST_SAMPLING_POLICY_DATASET_H +#ifndef ACL_TESTS_DATASETS_SAMPLINGPOLICYDATASET_H +#define ACL_TESTS_DATASETS_SAMPLINGPOLICYDATASET_H #include "arm_compute/core/Types.h" @@ -35,16 +35,11 @@ namespace datasets class SamplingPolicies final : public framework::dataset::ContainerDataset> { public: - SamplingPolicies() - : ContainerDataset("SamplingPolicy", - { - SamplingPolicy::CENTER, - SamplingPolicy::TOP_LEFT - }) + SamplingPolicies() : ContainerDataset("SamplingPolicy", {SamplingPolicy::CENTER, SamplingPolicy::TOP_LEFT}) { } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SAMPLING_POLICY_DATASET_H */ +#endif // ACL_TESTS_DATASETS_SAMPLINGPOLICYDATASET_H diff --git a/tests/datasets/ScaleLayerDataset.h b/tests/datasets/ScaleLayerDataset.h index 810ea5cef96..90df39fb9f8 100644 --- a/tests/datasets/ScaleLayerDataset.h +++ b/tests/datasets/ScaleLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SCALE_LAYER_DATASET -#define ARM_COMPUTE_TEST_SCALE_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SCALELAYERDATASET_H +#define ACL_TESTS_DATASETS_SCALELAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -48,12 +48,12 @@ class ScaleLayerDataset std::vector::const_iterator sampling_policy_it, std::vector::const_iterator scale_x_it, std::vector::const_iterator scale_y_it) - : _src_it{ std::move(src_it) }, - _policy_it{ std::move(policy_it) }, - _border_mode_it{ std::move(border_mode_it) }, - _sampling_policy_it{ std::move(sampling_policy_it) }, - _scale_x_it{ std::move(scale_x_it) }, - _scale_y_it{ std::move(scale_y_it) } + : _src_it{std::move(src_it)}, + _policy_it{std::move(policy_it)}, + _border_mode_it{std::move(border_mode_it)}, + _sampling_policy_it{std::move(sampling_policy_it)}, + _scale_x_it{std::move(scale_x_it)}, + _scale_y_it{std::move(scale_y_it)} { } @@ -71,7 +71,8 @@ class ScaleLayerDataset ScaleLayerDataset::type operator*() const { - return std::make_tuple(*_src_it, *_policy_it, *_border_mode_it, *_sampling_policy_it, *_scale_x_it, *_scale_y_it); + return std::make_tuple(*_src_it, *_policy_it, *_border_mode_it, *_sampling_policy_it, *_scale_x_it, + *_scale_y_it); } iterator &operator++() @@ -97,15 +98,24 @@ class ScaleLayerDataset iterator begin() const { - return iterator(_src_shapes.begin(), _policy.begin(), _border_mode.begin(), _sampling_policy.begin(), _scale_x.begin(), _scale_y.begin()); + return iterator(_src_shapes.begin(), _policy.begin(), _border_mode.begin(), _sampling_policy.begin(), + _scale_x.begin(), _scale_y.begin()); } int size() const { - return std::min(_src_shapes.size(), std::min(_policy.size(), std::min(_border_mode.size(), std::min(_sampling_policy.size(), std::min(_scale_x.size(), _scale_y.size()))))); + return std::min(_src_shapes.size(), + std::min(_policy.size(), + std::min(_border_mode.size(), std::min(_sampling_policy.size(), + std::min(_scale_x.size(), _scale_y.size()))))); } - void add_config(TensorShape src, InterpolationPolicy policy, BorderMode border_mode, SamplingPolicy sampling_policy, float scale_x, float scale_y) + void add_config(TensorShape src, + InterpolationPolicy policy, + BorderMode border_mode, + SamplingPolicy sampling_policy, + float scale_x, + float scale_y) { _src_shapes.emplace_back(std::move(src)); _policy.emplace_back(std::move(policy)); @@ -134,9 +144,12 @@ class SmallScaleLayerShapes final : public ScaleLayerDataset public: SmallScaleLayerShapes() { - add_config(TensorShape(128U, 64U, 1U, 3U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 5, 5); - add_config(TensorShape(9U, 9U, 3U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 7, 7); - add_config(TensorShape(27U, 13U, 2U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 9, 9); + add_config(TensorShape(128U, 64U, 1U, 3U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 5, 5); + add_config(TensorShape(9U, 9U, 3U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 7, 7); + add_config(TensorShape(27U, 13U, 2U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 9, 9); } }; @@ -146,24 +159,36 @@ class LargeScaleLayerShapes final : public ScaleLayerDataset public: LargeScaleLayerShapes() { - add_config(TensorShape(1920U, 1080U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 0.5, 0.5); - add_config(TensorShape(640U, 480U, 2U, 3U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 0.5, 0.5); - add_config(TensorShape(4160U, 3120U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 0.5, 0.5); - add_config(TensorShape(800U, 600U, 1U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 0.5, 0.5); - - add_config(TensorShape(1920U, 1080U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 2, 2); - add_config(TensorShape(640U, 480U, 2U, 3U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 2, 2); - add_config(TensorShape(4160U, 3120U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 2, 2); - add_config(TensorShape(800U, 600U, 1U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 2, 2); - - add_config(TensorShape(1920U, 1080U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 3, 3); - add_config(TensorShape(640U, 480U, 2U, 3U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 3, 3); - add_config(TensorShape(4160U, 3120U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 3, 3); - add_config(TensorShape(800U, 600U, 1U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, SamplingPolicy::CENTER, 3, 3); + add_config(TensorShape(1920U, 1080U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 0.5, 0.5); + add_config(TensorShape(640U, 480U, 2U, 3U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 0.5, 0.5); + add_config(TensorShape(4160U, 3120U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 0.5, 0.5); + add_config(TensorShape(800U, 600U, 1U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 0.5, 0.5); + + add_config(TensorShape(1920U, 1080U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 2, 2); + add_config(TensorShape(640U, 480U, 2U, 3U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 2, 2); + add_config(TensorShape(4160U, 3120U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 2, 2); + add_config(TensorShape(800U, 600U, 1U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 2, 2); + + add_config(TensorShape(1920U, 1080U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 3, 3); + add_config(TensorShape(640U, 480U, 2U, 3U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 3, 3); + add_config(TensorShape(4160U, 3120U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 3, 3); + add_config(TensorShape(800U, 600U, 1U, 4U), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED, + SamplingPolicy::CENTER, 3, 3); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SCALE_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SCALELAYERDATASET_H diff --git a/tests/datasets/ScaleValidationDataset.h b/tests/datasets/ScaleValidationDataset.h index 8987c3a1c1f..603a8b8c2e1 100644 --- a/tests/datasets/ScaleValidationDataset.h +++ b/tests/datasets/ScaleValidationDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2022 Arm Limited. + * Copyright (c) 2020-2022, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef TESTS_DATASETS_SCALEVALIDATIONDATASET -#define TESTS_DATASETS_SCALEVALIDATIONDATASET +#ifndef ACL_TESTS_DATASETS_SCALEVALIDATIONDATASET_H +#define ACL_TESTS_DATASETS_SCALEVALIDATIONDATASET_H #include "arm_compute/core/Types.h" + #include "tests/datasets/BorderModeDataset.h" #include "tests/datasets/SamplingPolicyDataset.h" #include "tests/datasets/ShapeDatasets.h" @@ -54,14 +55,14 @@ class ScaleShapesBaseDataSet : public ShapeDataset // These tensor shapes are NCHW layout, fixture will convert to NHWC. ScaleShapesBaseDataSet() : ShapeDataset("Shape", - { - TensorShape{ small_size, boundary_minus_one, channel, batch }, - TensorShape{ small_size, boundary_plus_one, channel, batch }, - TensorShape{ boundary_minus_one, small_size, channel, batch }, - TensorShape{ boundary_plus_one, small_size, channel, batch }, - TensorShape{ boundary_minus_one, boundary_plus_one, channel, batch }, - TensorShape{ boundary_plus_one, boundary_minus_one, channel, batch }, - }) + { + TensorShape{small_size, boundary_minus_one, channel, batch}, + TensorShape{small_size, boundary_plus_one, channel, batch}, + TensorShape{boundary_minus_one, small_size, channel, batch}, + TensorShape{boundary_plus_one, small_size, channel, batch}, + TensorShape{boundary_minus_one, boundary_plus_one, channel, batch}, + TensorShape{boundary_plus_one, boundary_minus_one, channel, batch}, + }) { } }; @@ -81,10 +82,10 @@ class ScaleShapesBaseDataSet : public // These tensor shapes are NCHW layout, fixture will convert to NHWC. ScaleShapesBaseDataSet() : ShapeDataset("Shape", - { - TensorShape{ small_size, boundary_plus_one, channel, batch }, - TensorShape{ boundary_plus_one, small_size, channel, batch }, - }) + { + TensorShape{small_size, boundary_plus_one, channel, batch}, + TensorShape{boundary_plus_one, small_size, channel, batch}, + }) { } }; @@ -103,38 +104,38 @@ class ScaleShapesBaseDataSet : public // These tensor shapes are NCHW layout, fixture will convert to NHWC. ScaleShapesBaseDataSet() : ShapeDataset("Shape", - { - TensorShape{ small_size, zero_vector_boundary_value, channel, batch }, - TensorShape{ zero_vector_boundary_value, small_size, channel, batch }, - }) + { + TensorShape{small_size, zero_vector_boundary_value, channel, batch}, + TensorShape{zero_vector_boundary_value, small_size, channel, batch}, + }) { } }; /** Interpolation policy test set */ const auto ScaleInterpolationPolicySet = framework::dataset::make("InterpolationPolicy", -{ - InterpolationPolicy::NEAREST_NEIGHBOR, - InterpolationPolicy::BILINEAR, -}); + { + InterpolationPolicy::NEAREST_NEIGHBOR, + InterpolationPolicy::BILINEAR, + }); /** Scale data types */ const auto ScaleDataLayouts = framework::dataset::make("DataLayout", -{ - DataLayout::NCHW, - DataLayout::NHWC, -}); + { + DataLayout::NCHW, + DataLayout::NHWC, + }); /** Sampling policy data set */ -const auto ScaleSamplingPolicySet = combine(datasets::SamplingPolicies(), - framework::dataset::make("AlignCorners", { false })); +const auto ScaleSamplingPolicySet = + combine(datasets::SamplingPolicies(), framework::dataset::make("AlignCorners", {false})); /** Sampling policy data set for Aligned Corners which only allows TOP_LEFT policy.*/ const auto ScaleAlignCornersSamplingPolicySet = combine(framework::dataset::make("SamplingPolicy", -{ - SamplingPolicy::TOP_LEFT, -}), -framework::dataset::make("AlignCorners", { true })); + { + SamplingPolicy::TOP_LEFT, + }), + framework::dataset::make("AlignCorners", {true})); /** Generated shapes: used by precommit and nightly for CPU tests * - 2D shapes with 0, 1, 2 vector iterations @@ -152,8 +153,9 @@ framework::dataset::make("AlignCorners", { true })); * - 3D shapes with 1 vector iterations * - 4D shapes with 1 vector iterations */ -#define SCALE_PRECOMMIT_SHAPE_DATASET(element_per_iteration) \ - concat(ScaleShapesBaseDataSet<3, 1, (element_per_iteration), 1>(), ScaleShapesBaseDataSet<3, 3, (element_per_iteration), 1>()) +#define SCALE_PRECOMMIT_SHAPE_DATASET(element_per_iteration) \ + concat(ScaleShapesBaseDataSet<3, 1, (element_per_iteration), 1>(), \ + ScaleShapesBaseDataSet<3, 3, (element_per_iteration), 1>()) /** Generated shapes for nightly to achieve more small and variety shapes. Used by CL nightly * - 2D shapes with 0, 1, 2 vector iterations @@ -167,56 +169,51 @@ framework::dataset::make("AlignCorners", { true })); ScaleShapesBaseDataSet<3, 3, (element_per_iteration), 0>()) /** Generating dataset for non-quantized data types with the given shapes */ -#define ASSEMBLE_DATASET(shape, samping_policy_set) \ - combine(combine(combine(combine((shape), ScaleDataLayouts), \ - ScaleInterpolationPolicySet), \ - datasets::BorderModes()), \ - samping_policy_set) - -#define ASSEMBLE_DATASET_DYNAMIC_FUSION(shape, samping_policy_set) \ - combine(combine(combine((shape), framework::dataset::make("DataLayout", { DataLayout::NHWC })), \ - ScaleInterpolationPolicySet), \ +#define ASSEMBLE_DATASET(shape, samping_policy_set) \ + combine( \ + combine(combine(combine((shape), ScaleDataLayouts), ScaleInterpolationPolicySet), datasets::BorderModes()), \ + samping_policy_set) + +#define ASSEMBLE_DATASET_DYNAMIC_FUSION(shape, samping_policy_set) \ + combine(combine(combine((shape), framework::dataset::make("DataLayout", {DataLayout::NHWC})), \ + ScaleInterpolationPolicySet), \ samping_policy_set) -#define ASSEMBLE_S8_DATASET(shape, samping_policy_set) \ - combine(combine(combine(combine((shape), framework::dataset::make("DataLayout", DataLayout::NHWC)), \ - framework::dataset::make("InterpolationPolicy", { InterpolationPolicy::BILINEAR })), \ - framework::dataset::make("BorderMode", { BorderMode::REPLICATE })), \ +#define ASSEMBLE_S8_DATASET(shape, samping_policy_set) \ + combine(combine(combine(combine((shape), framework::dataset::make("DataLayout", DataLayout::NHWC)), \ + framework::dataset::make("InterpolationPolicy", {InterpolationPolicy::BILINEAR})), \ + framework::dataset::make("BorderMode", {BorderMode::REPLICATE})), \ samping_policy_set) -#define ASSEMBLE_NHWC_DATASET(shape, samping_policy_set) \ - combine(combine(combine(combine((shape), framework::dataset::make("DataLayout", DataLayout::NHWC)), \ - ScaleInterpolationPolicySet), \ - framework::dataset::make("BorderMode", { BorderMode::CONSTANT, BorderMode::REPLICATE })), \ +#define ASSEMBLE_NHWC_DATASET(shape, samping_policy_set) \ + combine(combine(combine(combine((shape), framework::dataset::make("DataLayout", DataLayout::NHWC)), \ + ScaleInterpolationPolicySet), \ + framework::dataset::make("BorderMode", {BorderMode::CONSTANT, BorderMode::REPLICATE})), \ samping_policy_set) /** Generating dataset for quantized data tyeps with the given shapes */ -#define ASSEMBLE_QUANTIZED_DATASET(shape, sampling_policy_set, quantization_info_set) \ - combine(combine(combine(combine(combine(shape, \ - quantization_info_set), \ - ScaleDataLayouts), \ - ScaleInterpolationPolicySet), \ - datasets::BorderModes()), \ +#define ASSEMBLE_QUANTIZED_DATASET(shape, sampling_policy_set, quantization_info_set) \ + combine(combine(combine(combine(combine(shape, quantization_info_set), ScaleDataLayouts), \ + ScaleInterpolationPolicySet), \ + datasets::BorderModes()), \ sampling_policy_set) #define ASSEMBLE_QUANTIZED_DATASET_DYNAMIC_FUSION(shape, sampling_policy_set, quantization_info_set) \ - combine(combine(combine(combine(shape, \ - quantization_info_set), \ - framework::dataset::make("DataLayout", { DataLayout::NHWC })), \ + combine(combine(combine(combine(shape, quantization_info_set), \ + framework::dataset::make("DataLayout", {DataLayout::NHWC})), \ ScaleInterpolationPolicySet), \ sampling_policy_set) /** Generating dataset for quantized data tyeps with the given shapes */ -#define ASSEMBLE_DIFFERENTLY_QUANTIZED_DATASET(shape, sampling_policy_set, input_quant_info_set, output_quant_info_set) \ - combine(combine(combine(combine(combine(combine(shape, \ - input_quant_info_set), \ - output_quant_info_set), \ - framework::dataset::make("DataLayout", { DataLayout::NHWC })), \ - framework::dataset::make("InterpolationPolicy", { InterpolationPolicy::BILINEAR })), \ - framework::dataset::make("BorderMode", { BorderMode::REPLICATE })), \ +#define ASSEMBLE_DIFFERENTLY_QUANTIZED_DATASET(shape, sampling_policy_set, input_quant_info_set, \ + output_quant_info_set) \ + combine(combine(combine(combine(combine(combine(shape, input_quant_info_set), output_quant_info_set), \ + framework::dataset::make("DataLayout", {DataLayout::NHWC})), \ + framework::dataset::make("InterpolationPolicy", {InterpolationPolicy::BILINEAR})), \ + framework::dataset::make("BorderMode", {BorderMode::REPLICATE})), \ sampling_policy_set) } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* TESTS_DATASETS_SCALEVALIDATIONDATASET */ +#endif // ACL_TESTS_DATASETS_SCALEVALIDATIONDATASET_H diff --git a/tests/datasets/ScatterDataset.h b/tests/datasets/ScatterDataset.h index 8fd4448d2d3..e51ce1bc322 100644 --- a/tests/datasets/ScatterDataset.h +++ b/tests/datasets/ScatterDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Arm Limited. + * Copyright (c) 2024-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -25,6 +25,7 @@ #define ACL_TESTS_DATASETS_SCATTERDATASET_H #include "arm_compute/core/TensorShape.h" + #include "utils/TypePrinter.h" namespace arm_compute @@ -45,10 +46,10 @@ class ScatterDataset std::vector::const_iterator updates_it, std::vector::const_iterator indices_it, std::vector::const_iterator dst_it) - : _src_it{ std::move(src_it) }, - _updates_it{ std::move(updates_it) }, + : _src_it{std::move(src_it)}, + _updates_it{std::move(updates_it)}, _indices_it{std::move(indices_it)}, - _dst_it{ std::move(dst_it) } + _dst_it{std::move(dst_it)} { } @@ -91,7 +92,8 @@ class ScatterDataset int size() const { - return std::min(_src_shapes.size(), std::min(_indices_shapes.size(), std::min(_update_shapes.size(), _dst_shapes.size()))); + return std::min(_src_shapes.size(), + std::min(_indices_shapes.size(), std::min(_update_shapes.size(), _dst_shapes.size()))); } void add_config(TensorShape a, TensorShape b, TensorShape c, TensorShape dst) @@ -103,7 +105,7 @@ class ScatterDataset } protected: - ScatterDataset() = default; + ScatterDataset() = default; ScatterDataset(ScatterDataset &&) = default; private: @@ -113,7 +115,6 @@ class ScatterDataset std::vector _dst_shapes{}; }; - // 1D dataset for simple scatter tests. class Small1DScatterDataset final : public ScatterDataset { @@ -137,7 +138,8 @@ class SmallScatterMultiDimDataset final : public ScatterDataset // - src/updates/dst should all have same number of dims. Indices should be 2D. add_config(TensorShape(6U, 5U), TensorShape(6U, 2U), TensorShape(1U, 2U), TensorShape(6U, 5U)); add_config(TensorShape(9U, 3U, 4U), TensorShape(9U, 3U, 2U), TensorShape(1U, 2U), TensorShape(9U, 3U, 4U)); - add_config(TensorShape(17U, 3U, 2U, 4U), TensorShape(17U, 3U, 2U, 7U), TensorShape(1U, 7U), TensorShape(17U, 3U, 2U, 4U)); + add_config(TensorShape(17U, 3U, 2U, 4U), TensorShape(17U, 3U, 2U, 7U), TensorShape(1U, 7U), + TensorShape(17U, 3U, 2U, 4U)); } }; @@ -152,21 +154,29 @@ class SmallScatterMultiIndicesDataset final : public ScatterDataset // index length is 2 add_config(TensorShape(6U, 5U, 2U), TensorShape(6U, 4U), TensorShape(2U, 4U), TensorShape(6U, 5U, 2U)); - add_config(TensorShape(17U, 3U, 3U, 2U), TensorShape(17U, 3U, 2U), TensorShape(2U, 2U), TensorShape(17U, 3U, 3U, 2U)); - add_config(TensorShape(11U, 3U, 3U, 2U, 4U), TensorShape(11U, 3U, 3U, 4U), TensorShape(2U, 4U), TensorShape(11U, 3U, 3U, 2U, 4U)); - add_config(TensorShape(5U, 4U, 3U, 3U, 2U, 4U), TensorShape(5U, 4U, 3U, 3U, 5U), TensorShape(2U, 5U), TensorShape(5U, 4U, 3U, 3U, 2U, 4U)); + add_config(TensorShape(17U, 3U, 3U, 2U), TensorShape(17U, 3U, 2U), TensorShape(2U, 2U), + TensorShape(17U, 3U, 3U, 2U)); + add_config(TensorShape(11U, 3U, 3U, 2U, 4U), TensorShape(11U, 3U, 3U, 4U), TensorShape(2U, 4U), + TensorShape(11U, 3U, 3U, 2U, 4U)); + add_config(TensorShape(5U, 4U, 3U, 3U, 2U, 4U), TensorShape(5U, 4U, 3U, 3U, 5U), TensorShape(2U, 5U), + TensorShape(5U, 4U, 3U, 3U, 2U, 4U)); // index length is 3 add_config(TensorShape(4U, 3U, 2U, 2U), TensorShape(4U, 2U), TensorShape(3U, 2U), TensorShape(4U, 3U, 2U, 2U)); - add_config(TensorShape(17U, 4U, 3U, 2U, 2U), TensorShape(17U, 4U, 4U), TensorShape(3U, 4U), TensorShape(17U, 4U, 3U, 2U, 2U)); - add_config(TensorShape(10U, 4U, 5U, 3U, 2U, 2U), TensorShape(10U, 4U, 5U, 3U), TensorShape(3U, 3U), TensorShape(10U, 4U, 5U, 3U, 2U, 2U)); + add_config(TensorShape(17U, 4U, 3U, 2U, 2U), TensorShape(17U, 4U, 4U), TensorShape(3U, 4U), + TensorShape(17U, 4U, 3U, 2U, 2U)); + add_config(TensorShape(10U, 4U, 5U, 3U, 2U, 2U), TensorShape(10U, 4U, 5U, 3U), TensorShape(3U, 3U), + TensorShape(10U, 4U, 5U, 3U, 2U, 2U)); // index length is 4 - add_config(TensorShape(35U, 4U, 3U, 2U, 2U), TensorShape(35U, 4U), TensorShape(4U, 4U), TensorShape(35U, 4U, 3U, 2U, 2U)); - add_config(TensorShape(10U, 4U, 5U, 3U, 2U, 2U), TensorShape(10U, 4U, 3U), TensorShape(4U, 3U), TensorShape(10U, 4U, 5U, 3U, 2U, 2U)); + add_config(TensorShape(35U, 4U, 3U, 2U, 2U), TensorShape(35U, 4U), TensorShape(4U, 4U), + TensorShape(35U, 4U, 3U, 2U, 2U)); + add_config(TensorShape(10U, 4U, 5U, 3U, 2U, 2U), TensorShape(10U, 4U, 3U), TensorShape(4U, 3U), + TensorShape(10U, 4U, 5U, 3U, 2U, 2U)); // index length is 5 - add_config(TensorShape(10U, 4U, 5U, 3U, 2U, 2U), TensorShape(10U, 3U), TensorShape(5U, 3U), TensorShape(10U, 4U, 5U, 3U, 2U, 2U)); + add_config(TensorShape(10U, 4U, 5U, 3U, 2U, 2U), TensorShape(10U, 3U), TensorShape(5U, 3U), + TensorShape(10U, 4U, 5U, 3U, 2U, 2U)); } }; @@ -182,17 +192,21 @@ class SmallScatterBatchedDataset final : public ScatterDataset // k is the number of batch dimensions // k = 2 add_config(TensorShape(6U, 5U), TensorShape(6U, 2U, 2U), TensorShape(1U, 2U, 2U), TensorShape(6U, 5U)); - add_config(TensorShape(5U, 5U, 4U, 2U, 2U), TensorShape(5U, 5U, 6U, 2U), TensorShape(3U, 6U, 2U), TensorShape(5U, 5U, 4U, 2U, 2U)); + add_config(TensorShape(5U, 5U, 4U, 2U, 2U), TensorShape(5U, 5U, 6U, 2U), TensorShape(3U, 6U, 2U), + TensorShape(5U, 5U, 4U, 2U, 2U)); // k = 3 add_config(TensorShape(6U, 5U), TensorShape(6U, 2U, 2U, 2U), TensorShape(1U, 2U, 2U, 2U), TensorShape(6U, 5U)); - add_config(TensorShape(5U, 5U, 4U, 2U, 2U), TensorShape(5U, 5U, 3U, 6U, 2U), TensorShape(3U, 3U, 6U, 2U), TensorShape(5U, 5U, 4U, 2U, 2U)); + add_config(TensorShape(5U, 5U, 4U, 2U, 2U), TensorShape(5U, 5U, 3U, 6U, 2U), TensorShape(3U, 3U, 6U, 2U), + TensorShape(5U, 5U, 4U, 2U, 2U)); // k = 4 - add_config(TensorShape(5U, 5U, 4U, 2U, 2U), TensorShape(5U, 6U, 2U, 3U, 2U), TensorShape(4U, 6U, 2U, 3U, 2U), TensorShape(5U, 5U, 4U, 2U, 2U)); + add_config(TensorShape(5U, 5U, 4U, 2U, 2U), TensorShape(5U, 6U, 2U, 3U, 2U), TensorShape(4U, 6U, 2U, 3U, 2U), + TensorShape(5U, 5U, 4U, 2U, 2U)); // k = 5 - add_config(TensorShape(5U, 5U, 4U, 2U, 2U), TensorShape(5U, 3U, 4U, 3U, 2U, 2U), TensorShape(4U, 3U, 4U, 3U, 2U, 2U), TensorShape(5U, 5U, 4U, 2U, 2U)); + add_config(TensorShape(5U, 5U, 4U, 2U, 2U), TensorShape(5U, 3U, 4U, 3U, 2U, 2U), + TensorShape(4U, 3U, 4U, 3U, 2U, 2U), TensorShape(5U, 5U, 4U, 2U, 2U)); } }; @@ -204,7 +218,8 @@ class SmallScatterScalarDataset final : public ScatterDataset { add_config(TensorShape(6U, 5U), TensorShape(6U), TensorShape(2U, 6U), TensorShape(6U, 5U)); add_config(TensorShape(6U, 5U), TensorShape(6U, 6U), TensorShape(2U, 6U, 6U), TensorShape(6U, 5U)); - add_config(TensorShape(3U, 3U, 6U, 5U), TensorShape(6U, 6U), TensorShape(4U, 6U, 6U), TensorShape(3U, 3U, 6U, 5U)); + add_config(TensorShape(3U, 3U, 6U, 5U), TensorShape(6U, 6U), TensorShape(4U, 6U, 6U), + TensorShape(3U, 3U, 6U, 5U)); } }; @@ -217,8 +232,10 @@ class SmallScatterMixedDataset final : public ScatterDataset add_config(TensorShape(10U), TensorShape(2U), TensorShape(1U, 2U), TensorShape(10U)); add_config(TensorShape(9U, 3U, 4U), TensorShape(9U, 3U, 2U), TensorShape(1U, 2U), TensorShape(9U, 3U, 4U)); add_config(TensorShape(6U, 5U), TensorShape(6U, 6U), TensorShape(2U, 6U, 6U), TensorShape(6U, 5U)); - add_config(TensorShape(35U, 4U, 3U, 2U, 2U), TensorShape(35U, 4U), TensorShape(4U, 4U), TensorShape(35U, 4U, 3U, 2U, 2U)); - add_config(TensorShape(11U, 3U, 3U, 2U, 4U), TensorShape(11U, 3U, 3U, 4U), TensorShape(2U, 4U), TensorShape(11U, 3U, 3U, 2U, 4U)); + add_config(TensorShape(35U, 4U, 3U, 2U, 2U), TensorShape(35U, 4U), TensorShape(4U, 4U), + TensorShape(35U, 4U, 3U, 2U, 2U)); + add_config(TensorShape(11U, 3U, 3U, 2U, 4U), TensorShape(11U, 3U, 3U, 4U), TensorShape(2U, 4U), + TensorShape(11U, 3U, 3U, 2U, 4U)); add_config(TensorShape(6U, 5U, 2U), TensorShape(6U, 2U, 2U), TensorShape(2U, 2U, 2U), TensorShape(6U, 5U, 2U)); } }; diff --git a/tests/datasets/ShapeDatasets.h b/tests/datasets/ShapeDatasets.h index 4d419bbaf27..83ef352a75b 100644 --- a/tests/datasets/ShapeDatasets.h +++ b/tests/datasets/ShapeDatasets.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2024 Arm Limited. + * Copyright (c) 2017-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -25,6 +25,7 @@ #define ACL_TESTS_DATASETS_SHAPEDATASETS_H #include "arm_compute/core/TensorShape.h" + #include "tests/framework/datasets/Datasets.h" #include @@ -44,10 +45,10 @@ class Tiny1DShapes final : public ShapeDataset public: Tiny1DShapes() : ShapeDataset("Shape", - { - TensorShape{ 2U }, - TensorShape{ 3U }, - }) + { + TensorShape{2U}, + TensorShape{3U}, + }) { } }; @@ -57,13 +58,7 @@ class Small1DShapes final : public ShapeDataset { public: Small1DShapes() - : ShapeDataset("Shape", - { - TensorShape{ 128U }, - TensorShape{ 256U }, - TensorShape{ 512U }, - TensorShape{ 1024U } - }) + : ShapeDataset("Shape", {TensorShape{128U}, TensorShape{256U}, TensorShape{512U}, TensorShape{1024U}}) { } }; @@ -74,10 +69,10 @@ class Tiny2DShapes final : public ShapeDataset public: Tiny2DShapes() : ShapeDataset("Shape", - { - TensorShape{ 7U, 7U }, - TensorShape{ 11U, 13U }, - }) + { + TensorShape{7U, 7U}, + TensorShape{11U, 13U}, + }) { } }; @@ -85,13 +80,7 @@ class Tiny2DShapes final : public ShapeDataset class Small2DShapes final : public ShapeDataset { public: - Small2DShapes() - : ShapeDataset("Shape", - { - TensorShape{ 1U, 7U }, - TensorShape{ 5U, 13U }, - TensorShape{ 32U, 64U } - }) + Small2DShapes() : ShapeDataset("Shape", {TensorShape{1U, 7U}, TensorShape{5U, 13U}, TensorShape{32U, 64U}}) { } }; @@ -102,10 +91,10 @@ class Tiny3DShapes final : public ShapeDataset public: Tiny3DShapes() : ShapeDataset("Shape", - { - TensorShape{ 7U, 7U, 5U }, - TensorShape{ 23U, 13U, 9U }, - }) + { + TensorShape{7U, 7U, 5U}, + TensorShape{23U, 13U, 9U}, + }) { } }; @@ -116,14 +105,14 @@ class Small3DShapes final : public ShapeDataset public: Small3DShapes() : ShapeDataset("Shape", - { - TensorShape{ 1U, 7U, 7U }, - TensorShape{ 2U, 5U, 4U }, + { + TensorShape{1U, 7U, 7U}, + TensorShape{2U, 5U, 4U}, - TensorShape{ 7U, 7U, 5U }, - TensorShape{ 16U, 16U, 5U }, - TensorShape{ 27U, 13U, 37U }, - }) + TensorShape{7U, 7U, 5U}, + TensorShape{16U, 16U, 5U}, + TensorShape{27U, 13U, 37U}, + }) { } }; @@ -134,10 +123,10 @@ class Tiny4DShapes final : public ShapeDataset public: Tiny4DShapes() : ShapeDataset("Shape", - { - TensorShape{ 2U, 7U, 5U, 3U }, - TensorShape{ 17U, 13U, 7U, 2U }, - }) + { + TensorShape{2U, 7U, 5U, 3U}, + TensorShape{17U, 13U, 7U, 2U}, + }) { } }; @@ -147,12 +136,8 @@ class Small4DShapes final : public ShapeDataset public: Small4DShapes() : ShapeDataset("Shape", - { - TensorShape{ 2U, 7U, 1U, 3U }, - TensorShape{ 7U, 7U, 5U, 3U }, - TensorShape{ 27U, 13U, 37U, 2U }, - TensorShape{ 128U, 64U, 21U, 3U } - }) + {TensorShape{2U, 7U, 1U, 3U}, TensorShape{7U, 7U, 5U, 3U}, TensorShape{27U, 13U, 37U, 2U}, + TensorShape{128U, 64U, 21U, 3U}}) { } }; @@ -163,11 +148,11 @@ class TinyShapes final : public ShapeDataset public: TinyShapes() : ShapeDataset("Shape", - { - // Batch size 1 - TensorShape{ 1U, 9U }, - TensorShape{ 27U, 13U, 2U }, - }) + { + // Batch size 1 + TensorShape{1U, 9U}, + TensorShape{27U, 13U, 2U}, + }) { } }; @@ -177,17 +162,13 @@ class SmallNoneUnitShapes final : public ShapeDataset public: SmallNoneUnitShapes() : ShapeDataset("Shape", - { - // Batch size 1 - TensorShape{ 13U, 11U }, - TensorShape{ 16U, 16U }, - TensorShape{ 24U, 26U, 5U }, - TensorShape{ 7U, 7U, 17U, 2U }, - // Batch size 4 - TensorShape{ 27U, 13U, 2U, 4U }, - // Arbitrary batch size - TensorShape{ 8U, 7U, 5U, 5U } - }) + {// Batch size 1 + TensorShape{13U, 11U}, TensorShape{16U, 16U}, TensorShape{24U, 26U, 5U}, + TensorShape{7U, 7U, 17U, 2U}, + // Batch size 4 + TensorShape{27U, 13U, 2U, 4U}, + // Arbitrary batch size + TensorShape{8U, 7U, 5U, 5U}}) { } }; @@ -197,17 +178,14 @@ class SmallShapes final : public ShapeDataset public: SmallShapes() : ShapeDataset("Shape", - { - // Batch size 1 - //TensorShape{ 3U, 11U }, - //TensorShape{ 1U, 16U }, - TensorShape{ 27U, 13U, 7U }, - TensorShape{ 7U, 7U, 17U, 2U }, - // Batch size 4 and 2 SIMD iterations - TensorShape{ 33U, 13U, 2U, 4U }, - // Arbitrary batch size - TensorShape{ 11U, 11U, 3U, 5U } - }) + {// Batch size 1 + //TensorShape{ 3U, 11U }, + //TensorShape{ 1U, 16U }, + TensorShape{27U, 13U, 7U}, TensorShape{7U, 7U, 17U, 2U}, + // Batch size 4 and 2 SIMD iterations + TensorShape{33U, 13U, 2U, 4U}, + // Arbitrary batch size + TensorShape{11U, 11U, 3U, 5U}}) { } }; @@ -216,13 +194,12 @@ class SMEMulShapes final : public ShapeDataset { public: SMEMulShapes() - : ShapeDataset("Shape", - { - // Batch size 1 - TensorShape{ 6U, 1U }, - TensorShape{ 128U, 2U}, - TensorShape{ 128U, 2U, 4U, 2U, 2U} // 5D collapsible case - }) + : ShapeDataset( + "Shape", + { + // Batch size 1 + TensorShape{6U, 1U}, TensorShape{128U, 2U}, TensorShape{128U, 2U, 4U, 2U, 2U} // 5D collapsible case + }) { } }; @@ -232,20 +209,19 @@ class SMEMulShapesBroadcast final : public framework::dataset::ZipDataset( - ShapeDataset("Shape0", - { - // NOTE: This does not include x-wise broadcasting. - TensorShape{ 9U, 9U }, - TensorShape{ 256U, 13U, 1U }, - TensorShape{ 128U, 1U, 5U, 1U }, - }), - ShapeDataset("Shape1", - { - TensorShape{ 9U, 1U, 2U }, - TensorShape{ 256U, 1U, 2U }, - TensorShape{ 128U, 64U, 1U, 3U }, - })) + : ZipDataset(ShapeDataset("Shape0", + { + // NOTE: This does not include x-wise broadcasting. + TensorShape{9U, 9U}, + TensorShape{256U, 13U, 1U}, + TensorShape{128U, 1U, 5U, 1U}, + }), + ShapeDataset("Shape1", + { + TensorShape{9U, 1U, 2U}, + TensorShape{256U, 1U, 2U}, + TensorShape{128U, 64U, 1U, 3U}, + })) { } }; @@ -256,15 +232,9 @@ class SmallShapesNoBatches final : public ShapeDataset public: SmallShapesNoBatches() : ShapeDataset("Shape", - { - // Batch size 1 - TensorShape{ 3U, 11U }, - TensorShape{ 1U, 16U }, - TensorShape{ 27U, 13U, 7U }, - TensorShape{ 7U, 7U, 17U }, - TensorShape{ 33U, 13U, 2U }, - TensorShape{ 11U, 11U, 3U } - }) + {// Batch size 1 + TensorShape{3U, 11U}, TensorShape{1U, 16U}, TensorShape{27U, 13U, 7U}, TensorShape{7U, 7U, 17U}, + TensorShape{33U, 13U, 2U}, TensorShape{11U, 11U, 3U}}) { } }; @@ -274,17 +244,16 @@ class TinyShapesBroadcast final : public framework::dataset::ZipDataset( - ShapeDataset("Shape0", - { - TensorShape{ 9U, 9U }, - TensorShape{ 10U, 2U, 14U, 2U }, - }), - ShapeDataset("Shape1", - { - TensorShape{ 9U, 1U, 9U }, - TensorShape{ 10U }, - })) + : ZipDataset(ShapeDataset("Shape0", + { + TensorShape{9U, 9U}, + TensorShape{10U, 2U, 14U, 2U}, + }), + ShapeDataset("Shape1", + { + TensorShape{9U, 1U, 9U}, + TensorShape{10U}, + })) { } }; @@ -293,17 +262,16 @@ class TinyShapesBroadcastInplace final : public framework::dataset::ZipDataset( - ShapeDataset("Shape0", - { - TensorShape{ 9U }, - TensorShape{ 10U, 2U, 14U, 2U }, - }), - ShapeDataset("Shape1", - { - TensorShape{ 9U, 1U, 9U }, - TensorShape{ 10U }, - })) + : ZipDataset(ShapeDataset("Shape0", + { + TensorShape{9U}, + TensorShape{10U, 2U, 14U, 2U}, + }), + ShapeDataset("Shape1", + { + TensorShape{9U, 1U, 9U}, + TensorShape{10U}, + })) { } }; @@ -314,27 +282,13 @@ class SmallShapesBroadcast final : public framework::dataset::ZipDataset( ShapeDataset("Shape0", - { - TensorShape{ 9U, 9U }, - TensorShape{ 27U, 13U, 2U }, - TensorShape{ 128U, 1U, 5U, 3U }, - TensorShape{ 9U, 9U, 3U, 4U }, - TensorShape{ 27U, 13U, 2U, 4U }, - TensorShape{ 1U, 1U, 1U, 5U }, - TensorShape{ 1U, 16U, 10U, 2U, 128U }, - TensorShape{ 1U, 16U, 10U, 2U, 128U } - }), - ShapeDataset("Shape1", - { - TensorShape{ 9U, 1U, 2U }, - TensorShape{ 1U, 13U, 2U }, - TensorShape{ 128U, 64U, 1U, 3U }, - TensorShape{ 9U, 1U, 3U }, - TensorShape{ 1U }, - TensorShape{ 9U, 9U, 3U, 5U }, - TensorShape{ 1U, 1U, 1U, 1U, 128U }, - TensorShape{ 128U } - })) + {TensorShape{9U, 9U}, TensorShape{27U, 13U, 2U}, TensorShape{128U, 1U, 5U, 3U}, + TensorShape{9U, 9U, 3U, 4U}, TensorShape{27U, 13U, 2U, 4U}, TensorShape{1U, 1U, 1U, 5U}, + TensorShape{1U, 16U, 10U, 2U, 128U}, TensorShape{1U, 16U, 10U, 2U, 128U}}), + ShapeDataset("Shape1", + {TensorShape{9U, 1U, 2U}, TensorShape{1U, 13U, 2U}, TensorShape{128U, 64U, 1U, 3U}, + TensorShape{9U, 1U, 3U}, TensorShape{1U}, TensorShape{9U, 9U, 3U, 5U}, + TensorShape{1U, 1U, 1U, 1U, 128U}, TensorShape{128U}})) { } }; @@ -345,20 +299,12 @@ class SmallShapesNonXBroadcast final : public framework::dataset::ZipDataset( - ShapeDataset("Shape0", - { - TensorShape{ 9U, 9U }, - TensorShape{ 128U, 1U, 5U, 3U }, - TensorShape{ 9U, 9U, 3U, 4U }, - TensorShape{ 1U, 16U, 10U, 2U, 128U } - }), - ShapeDataset("Shape1", - { - TensorShape{ 9U, 1U, 2U }, - TensorShape{ 128U, 64U, 1U, 3U }, - TensorShape{ 9U, 1U, 3U }, - TensorShape{ 1U, 1U, 1U, 1U, 128U } - })) + ShapeDataset("Shape0", + {TensorShape{9U, 9U}, TensorShape{128U, 1U, 5U, 3U}, TensorShape{9U, 9U, 3U, 4U}, + TensorShape{1U, 16U, 10U, 2U, 128U}}), + ShapeDataset("Shape1", + {TensorShape{9U, 1U, 2U}, TensorShape{128U, 64U, 1U, 3U}, TensorShape{9U, 1U, 3U}, + TensorShape{1U, 1U, 1U, 1U, 128U}})) { } }; @@ -367,25 +313,24 @@ class TemporaryLimitedSmallShapesBroadcast final : public framework::dataset::Zi { public: TemporaryLimitedSmallShapesBroadcast() - : ZipDataset( - ShapeDataset("Shape0", - { - TensorShape{ 1U, 3U, 4U, 2U }, // LHS broadcast X - TensorShape{ 6U, 4U, 2U, 3U }, // RHS broadcast X - TensorShape{ 7U, 1U, 1U, 4U }, // LHS broadcast Y, Z - TensorShape{ 8U, 5U, 6U, 3U }, // RHS broadcast Y, Z - TensorShape{ 1U, 1U, 1U, 2U }, // LHS broadcast X, Y, Z - TensorShape{ 2U, 6U, 4U, 3U }, // RHS broadcast X, Y, Z - }), - ShapeDataset("Shape1", - { - TensorShape{ 5U, 3U, 4U, 2U }, - TensorShape{ 1U, 4U, 2U, 3U }, - TensorShape{ 7U, 2U, 3U, 4U }, - TensorShape{ 8U, 1U, 1U, 3U }, - TensorShape{ 4U, 7U, 3U, 2U }, - TensorShape{ 1U, 1U, 1U, 3U }, - })) + : ZipDataset(ShapeDataset("Shape0", + { + TensorShape{1U, 3U, 4U, 2U}, // LHS broadcast X + TensorShape{6U, 4U, 2U, 3U}, // RHS broadcast X + TensorShape{7U, 1U, 1U, 4U}, // LHS broadcast Y, Z + TensorShape{8U, 5U, 6U, 3U}, // RHS broadcast Y, Z + TensorShape{1U, 1U, 1U, 2U}, // LHS broadcast X, Y, Z + TensorShape{2U, 6U, 4U, 3U}, // RHS broadcast X, Y, Z + }), + ShapeDataset("Shape1", + { + TensorShape{5U, 3U, 4U, 2U}, + TensorShape{1U, 4U, 2U, 3U}, + TensorShape{7U, 2U, 3U, 4U}, + TensorShape{8U, 1U, 1U, 3U}, + TensorShape{4U, 7U, 3U, 2U}, + TensorShape{1U, 1U, 1U, 3U}, + })) { } }; @@ -395,16 +340,12 @@ class TemporaryLimitedLargeShapesBroadcast final : public framework::dataset::Zi public: TemporaryLimitedLargeShapesBroadcast() : ZipDataset( - ShapeDataset("Shape0", - { - TensorShape{ 127U, 25U, 5U }, - TensorShape{ 485, 40U, 10U } - }), - ShapeDataset("Shape1", - { - TensorShape{ 1U, 1U, 1U }, // Broadcast in X, Y, Z - TensorShape{ 485U, 1U, 1U }, // Broadcast in Y, Z - })) + ShapeDataset("Shape0", {TensorShape{127U, 25U, 5U}, TensorShape{485, 40U, 10U}}), + ShapeDataset("Shape1", + { + TensorShape{1U, 1U, 1U}, // Broadcast in X, Y, Z + TensorShape{485U, 1U, 1U}, // Broadcast in Y, Z + })) { } }; @@ -415,13 +356,10 @@ class MediumShapes final : public ShapeDataset public: MediumShapes() : ShapeDataset("Shape", - { - // Batch size 1 - TensorShape{ 37U, 37U }, - TensorShape{ 27U, 33U, 2U }, - // Arbitrary batch size - TensorShape{ 37U, 37U, 3U, 5U } - }) + {// Batch size 1 + TensorShape{37U, 37U}, TensorShape{27U, 33U, 2U}, + // Arbitrary batch size + TensorShape{37U, 37U, 3U, 5U}}) { } }; @@ -432,13 +370,8 @@ class Medium2DShapes final : public ShapeDataset public: Medium2DShapes() : ShapeDataset("Shape", - { - TensorShape{ 42U, 37U }, - TensorShape{ 57U, 60U }, - TensorShape{ 128U, 64U }, - TensorShape{ 83U, 72U }, - TensorShape{ 40U, 40U } - }) + {TensorShape{42U, 37U}, TensorShape{57U, 60U}, TensorShape{128U, 64U}, TensorShape{83U, 72U}, + TensorShape{40U, 40U}}) { } }; @@ -448,12 +381,7 @@ class Medium3DShapes final : public ShapeDataset { public: Medium3DShapes() - : ShapeDataset("Shape", - { - TensorShape{ 42U, 37U, 8U }, - TensorShape{ 57U, 60U, 13U }, - TensorShape{ 83U, 72U, 14U } - }) + : ShapeDataset("Shape", {TensorShape{42U, 37U, 8U}, TensorShape{57U, 60U, 13U}, TensorShape{83U, 72U, 14U}}) { } }; @@ -464,11 +392,7 @@ class Medium4DShapes final : public ShapeDataset public: Medium4DShapes() : ShapeDataset("Shape", - { - TensorShape{ 42U, 37U, 8U, 15U }, - TensorShape{ 57U, 60U, 13U, 8U }, - TensorShape{ 83U, 72U, 14U, 5U } - }) + {TensorShape{42U, 37U, 8U, 15U}, TensorShape{57U, 60U, 13U, 8U}, TensorShape{83U, 72U, 14U, 5U}}) { } }; @@ -479,9 +403,9 @@ class LargeShapes final : public ShapeDataset public: LargeShapes() : ShapeDataset("Shape", - { - TensorShape{ 582U, 131U, 1U, 4U }, - }) + { + TensorShape{582U, 131U, 1U, 4U}, + }) { } }; @@ -492,9 +416,9 @@ class LargeShapesNoBatches final : public ShapeDataset public: LargeShapesNoBatches() : ShapeDataset("Shape", - { - TensorShape{ 582U, 131U, 2U }, - }) + { + TensorShape{582U, 131U, 2U}, + }) { } }; @@ -505,20 +429,12 @@ class LargeShapesBroadcast final : public framework::dataset::ZipDataset( - ShapeDataset("Shape0", - { - TensorShape{ 1921U, 541U }, - TensorShape{ 1U, 485U, 2U, 3U }, - TensorShape{ 4159U, 1U }, - TensorShape{ 799U } - }), - ShapeDataset("Shape1", - { - TensorShape{ 1921U, 1U, 2U }, - TensorShape{ 641U, 1U, 2U, 3U }, - TensorShape{ 1U, 127U, 25U }, - TensorShape{ 799U, 595U, 1U, 4U } - })) + ShapeDataset( + "Shape0", + {TensorShape{1921U, 541U}, TensorShape{1U, 485U, 2U, 3U}, TensorShape{4159U, 1U}, TensorShape{799U}}), + ShapeDataset("Shape1", + {TensorShape{1921U, 1U, 2U}, TensorShape{641U, 1U, 2U, 3U}, TensorShape{1U, 127U, 25U}, + TensorShape{799U, 595U, 1U, 4U}})) { } }; @@ -527,11 +443,7 @@ class LargeShapesBroadcast final : public framework::dataset::ZipDataset::const_iterator tensor_shapes_it, std::vector::const_iterator starts_values_it, std::vector::const_iterator ends_values_it) - : _tensor_shapes_it{ std::move(tensor_shapes_it) }, - _starts_values_it{ std::move(starts_values_it) }, - _ends_values_it{ std::move(ends_values_it) } + : _tensor_shapes_it{std::move(tensor_shapes_it)}, + _starts_values_it{std::move(starts_values_it)}, + _ends_values_it{std::move(ends_values_it)} { } @@ -119,13 +119,13 @@ class StridedSliceDataset std::vector::const_iterator begin_mask_values_it, std::vector::const_iterator end_mask_values_it, std::vector::const_iterator shrink_mask_values_it) - : _tensor_shapes_it{ std::move(tensor_shapes_it) }, - _starts_values_it{ std::move(starts_values_it) }, - _ends_values_it{ std::move(ends_values_it) }, - _strides_values_it{ std::move(strides_values_it) }, - _begin_mask_values_it{ std::move(begin_mask_values_it) }, - _end_mask_values_it{ std::move(end_mask_values_it) }, - _shrink_mask_values_it{ std::move(shrink_mask_values_it) } + : _tensor_shapes_it{std::move(tensor_shapes_it)}, + _starts_values_it{std::move(starts_values_it)}, + _ends_values_it{std::move(ends_values_it)}, + _strides_values_it{std::move(strides_values_it)}, + _begin_mask_values_it{std::move(begin_mask_values_it)}, + _end_mask_values_it{std::move(end_mask_values_it)}, + _shrink_mask_values_it{std::move(shrink_mask_values_it)} { } @@ -144,8 +144,7 @@ class StridedSliceDataset StridedSliceDataset::type operator*() const { - return std::make_tuple(*_tensor_shapes_it, - *_starts_values_it, *_ends_values_it, *_strides_values_it, + return std::make_tuple(*_tensor_shapes_it, *_starts_values_it, *_ends_values_it, *_strides_values_it, *_begin_mask_values_it, *_end_mask_values_it, *_shrink_mask_values_it); } @@ -174,19 +173,23 @@ class StridedSliceDataset iterator begin() const { - return iterator(_tensor_shapes.begin(), - _starts_values.begin(), _ends_values.begin(), _strides_values.begin(), + return iterator(_tensor_shapes.begin(), _starts_values.begin(), _ends_values.begin(), _strides_values.begin(), _begin_mask_values.begin(), _end_mask_values.begin(), _shrink_mask_values.begin()); } int size() const { - return std::min(_tensor_shapes.size(), std::min(_starts_values.size(), std::min(_ends_values.size(), _strides_values.size()))); + return std::min(_tensor_shapes.size(), + std::min(_starts_values.size(), std::min(_ends_values.size(), _strides_values.size()))); } void add_config(TensorShape shape, - Coordinates starts, Coordinates ends, BiStrides strides, - int32_t begin_mask = 0, int32_t end_mask = 0, int32_t shrink_mask = 0) + Coordinates starts, + Coordinates ends, + BiStrides strides, + int32_t begin_mask = 0, + int32_t end_mask = 0, + int32_t shrink_mask = 0) { _tensor_shapes.emplace_back(std::move(shape)); _starts_values.emplace_back(std::move(starts)); @@ -261,10 +264,12 @@ class SmallStridedSliceDataset final : public StridedSliceDataset add_config(TensorShape(15U, 16U, 4U), Coordinates(0, 1, 2), Coordinates(5, -1, 4), BiStrides(2, 1, 2)); add_config(TensorShape(15U, 16U, 4U), Coordinates(0, 1, 2), Coordinates(5, -1, 4), BiStrides(2, 1, 2), 0, 1); // 4D - add_config(TensorShape(15U, 16U, 4U, 12U), Coordinates(0, 1, 2, 2), Coordinates(5, -1, 4, 5), BiStrides(2, 1, 2, 3)); + add_config(TensorShape(15U, 16U, 4U, 12U), Coordinates(0, 1, 2, 2), Coordinates(5, -1, 4, 5), + BiStrides(2, 1, 2, 3)); // Shrink axis - add_config(TensorShape(1U, 3U, 2U, 3U), Coordinates(0, 1, 0, 0), Coordinates(1, 1, 1, 1), BiStrides(1, 1, 1, 1), 0, 15, 6); + add_config(TensorShape(1U, 3U, 2U, 3U), Coordinates(0, 1, 0, 0), Coordinates(1, 1, 1, 1), BiStrides(1, 1, 1, 1), + 0, 15, 6); add_config(TensorShape(3U, 2U), Coordinates(0, 0), Coordinates(3U, 1U), BiStrides(1, 1), 0, 0, 2); add_config(TensorShape(4U, 7U, 7U), Coordinates(0, 0, 0), Coordinates(1U, 1U, 1U), BiStrides(1, 1, 1), 0, 6, 1); add_config(TensorShape(4U, 7U, 7U), Coordinates(0, 1, 0), Coordinates(1U, 1U, 1U), BiStrides(1, 1, 1), 0, 5, 3); @@ -281,12 +286,14 @@ class LargeStridedSliceDataset final : public StridedSliceDataset // 2D add_config(TensorShape(372U, 68U), Coordinates(128, 7), Coordinates(368, -30), BiStrides(10, 7)); // 3D - add_config(TensorShape(372U, 68U, 12U), Coordinates(128, 7, -1), Coordinates(368, -30, -5), BiStrides(14, 7, -2)); + add_config(TensorShape(372U, 68U, 12U), Coordinates(128, 7, -1), Coordinates(368, -30, -5), + BiStrides(14, 7, -2)); // 4D - add_config(TensorShape(372U, 68U, 7U, 4U), Coordinates(128, 7, 2), Coordinates(368, -30, 5), BiStrides(20, 7, 2), 1, 1); + add_config(TensorShape(372U, 68U, 7U, 4U), Coordinates(128, 7, 2), Coordinates(368, -30, 5), + BiStrides(20, 7, 2), 1, 1); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_STRIDED_SLICE_DATASET */ +#endif // ACL_TESTS_DATASETS_SLICEOPERATIONSDATASET_H diff --git a/tests/datasets/SmallConvolutionLayerDataset.h b/tests/datasets/SmallConvolutionLayerDataset.h index 67eade1e64c..1a8aaa29fe0 100644 --- a/tests/datasets/SmallConvolutionLayerDataset.h +++ b/tests/datasets/SmallConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SMALL_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_SMALL_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SMALLCONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SMALLCONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,13 +42,18 @@ class SmallWinogradConvolutionLayer3x3Dataset final : public ConvolutionLayerDat SmallWinogradConvolutionLayer3x3Dataset() { // Channel size big enough to force multithreaded execution of the input transform - add_config(TensorShape(8U, 8U, 32U), TensorShape(3U, 3U, 32U, 1U), TensorShape(1U), TensorShape(6U, 6U, 1U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 32U), TensorShape(3U, 3U, 32U, 1U), TensorShape(1U), TensorShape(6U, 6U, 1U), + PadStrideInfo(1, 1, 0, 0)); // Batch size 1 - add_config(TensorShape(8U, 8U, 2U), TensorShape(3U, 3U, 2U, 1U), TensorShape(1U), TensorShape(6U, 6U, 1U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(3U, 3U, 2U, 1U), TensorShape(1U), TensorShape(6U, 6U, 1U), + PadStrideInfo(1, 1, 0, 0)); // Batch size 4 - add_config(TensorShape(23U, 27U, 5U, 4U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), TensorShape(21U, 25U, 21U, 4U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(8U, 8U, 2U), TensorShape(3U, 3U, 2U, 1U), TensorShape(1U), TensorShape(8U, 8U, 1U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(3U, 9U), TensorShape(3U, 3U), TensorShape(1), TensorShape(3U, 9U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(23U, 27U, 5U, 4U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), + TensorShape(21U, 25U, 21U, 4U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(3U, 3U, 2U, 1U), TensorShape(1U), TensorShape(8U, 8U, 1U), + PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(3U, 9U), TensorShape(3U, 3U), TensorShape(1), TensorShape(3U, 9U), + PadStrideInfo(1, 1, 1, 1)); } }; @@ -59,12 +63,16 @@ class SmallWinogradConvolutionLayer3x1Dataset final : public ConvolutionLayerDat SmallWinogradConvolutionLayer3x1Dataset() { // Channel size big enough to force multithreaded execution of the input transform - add_config(TensorShape(8U, 8U, 32U), TensorShape(3U, 1U, 32U, 1U), TensorShape(1U), TensorShape(6U, 8U, 1U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 32U), TensorShape(3U, 1U, 32U, 1U), TensorShape(1U), TensorShape(6U, 8U, 1U), + PadStrideInfo(1, 1, 0, 0)); // Batch size 1 - add_config(TensorShape(8U, 8U, 2U), TensorShape(3U, 1U, 2U, 1U), TensorShape(1U), TensorShape(6U, 8U, 1U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(3U, 1U, 2U, 1U), TensorShape(1U), TensorShape(6U, 8U, 1U), + PadStrideInfo(1, 1, 0, 0)); // Batch size 4 - add_config(TensorShape(23U, 27U, 5U, 4U), TensorShape(3U, 1U, 5U, 21U), TensorShape(21U), TensorShape(21U, 27U, 21U, 4U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(8U, 8U, 2U), TensorShape(3U, 1U, 2U, 1U), TensorShape(1U), TensorShape(8U, 8U, 1U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(23U, 27U, 5U, 4U), TensorShape(3U, 1U, 5U, 21U), TensorShape(21U), + TensorShape(21U, 27U, 21U, 4U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(3U, 1U, 2U, 1U), TensorShape(1U), TensorShape(8U, 8U, 1U), + PadStrideInfo(1, 1, 1, 0)); } }; @@ -74,12 +82,16 @@ class SmallWinogradConvolutionLayer1x3Dataset final : public ConvolutionLayerDat SmallWinogradConvolutionLayer1x3Dataset() { // Channel size big enough to force multithreaded execution of the input transform - add_config(TensorShape(8U, 8U, 32U), TensorShape(1U, 3U, 32U, 1U), TensorShape(1U), TensorShape(8U, 6U, 1U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 32U), TensorShape(1U, 3U, 32U, 1U), TensorShape(1U), TensorShape(8U, 6U, 1U), + PadStrideInfo(1, 1, 0, 0)); // Batch size 1 - add_config(TensorShape(8U, 8U, 2U), TensorShape(1U, 3U, 2U, 1U), TensorShape(1U), TensorShape(8U, 6U, 1U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(1U, 3U, 2U, 1U), TensorShape(1U), TensorShape(8U, 6U, 1U), + PadStrideInfo(1, 1, 0, 0)); // Batch size 4 - add_config(TensorShape(23U, 27U, 5U, 4U), TensorShape(1U, 3U, 5U, 21U), TensorShape(21U), TensorShape(23U, 25U, 21U, 4U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(8U, 8U, 2U), TensorShape(1U, 3U, 2U, 1U), TensorShape(1U), TensorShape(8U, 8U, 1U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(23U, 27U, 5U, 4U), TensorShape(1U, 3U, 5U, 21U), TensorShape(21U), + TensorShape(23U, 25U, 21U, 4U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(1U, 3U, 2U, 1U), TensorShape(1U), TensorShape(8U, 8U, 1U), + PadStrideInfo(1, 1, 0, 1)); } }; @@ -88,8 +100,10 @@ class SmallWinogradConvolutionLayer5x5Dataset final : public ConvolutionLayerDat public: SmallWinogradConvolutionLayer5x5Dataset() { - add_config(TensorShape(8U, 8U, 2U), TensorShape(5U, 5U, 2U, 1U), TensorShape(1U), TensorShape(4U, 4U, 1U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(8U, 8U, 2U), TensorShape(5U, 5U, 2U), TensorShape(1U), TensorShape(8U, 8U, 1U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(5U, 5U, 2U, 1U), TensorShape(1U), TensorShape(4U, 4U, 1U), + PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(5U, 5U, 2U), TensorShape(1U), TensorShape(8U, 8U, 1U), + PadStrideInfo(1, 1, 2, 2)); } }; @@ -98,8 +112,10 @@ class SmallWinogradConvolutionLayer5x1Dataset final : public ConvolutionLayerDat public: SmallWinogradConvolutionLayer5x1Dataset() { - add_config(TensorShape(8U, 8U, 2U), TensorShape(5U, 1U, 2U, 1U), TensorShape(1U), TensorShape(4U, 8U, 1U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(8U, 8U, 2U), TensorShape(5U, 1U, 2U), TensorShape(1U), TensorShape(8U, 8U, 1U), PadStrideInfo(1, 1, 2, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(5U, 1U, 2U, 1U), TensorShape(1U), TensorShape(4U, 8U, 1U), + PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(5U, 1U, 2U), TensorShape(1U), TensorShape(8U, 8U, 1U), + PadStrideInfo(1, 1, 2, 0)); } }; @@ -108,8 +124,10 @@ class SmallWinogradConvolutionLayer1x5Dataset final : public ConvolutionLayerDat public: SmallWinogradConvolutionLayer1x5Dataset() { - add_config(TensorShape(8U, 8U, 2U), TensorShape(1U, 5U, 2U, 1U), TensorShape(1U), TensorShape(8U, 4U, 1U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(8U, 8U, 2U), TensorShape(1U, 5U, 2U), TensorShape(1U), TensorShape(8U, 8U, 1U), PadStrideInfo(1, 1, 0, 2)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(1U, 5U, 2U, 1U), TensorShape(1U), TensorShape(8U, 4U, 1U), + PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 2U), TensorShape(1U, 5U, 2U), TensorShape(1U), TensorShape(8U, 8U, 1U), + PadStrideInfo(1, 1, 0, 2)); } }; @@ -118,8 +136,10 @@ class SmallWinogradConvolutionLayer7x1Dataset final : public ConvolutionLayerDat public: SmallWinogradConvolutionLayer7x1Dataset() { - add_config(TensorShape(14U, 14U, 2U), TensorShape(7U, 1U, 2U, 1U), TensorShape(1U), TensorShape(8U, 14U, 1U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(14U, 14U, 2U), TensorShape(7U, 1U, 2U), TensorShape(1U), TensorShape(14U, 14U, 1U), PadStrideInfo(1, 1, 3, 0)); + add_config(TensorShape(14U, 14U, 2U), TensorShape(7U, 1U, 2U, 1U), TensorShape(1U), TensorShape(8U, 14U, 1U), + PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 2U), TensorShape(7U, 1U, 2U), TensorShape(1U), TensorShape(14U, 14U, 1U), + PadStrideInfo(1, 1, 3, 0)); } }; @@ -128,8 +148,10 @@ class SmallWinogradConvolutionLayer1x7Dataset final : public ConvolutionLayerDat public: SmallWinogradConvolutionLayer1x7Dataset() { - add_config(TensorShape(14U, 14U, 2U), TensorShape(1U, 7U, 2U, 1U), TensorShape(1U), TensorShape(14U, 8U, 1U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(14U, 14U, 2U), TensorShape(1U, 7U, 2U), TensorShape(1U), TensorShape(14U, 14U, 1U), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(14U, 14U, 2U), TensorShape(1U, 7U, 2U, 1U), TensorShape(1U), TensorShape(14U, 8U, 1U), + PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 2U), TensorShape(1U, 7U, 2U), TensorShape(1U), TensorShape(14U, 14U, 1U), + PadStrideInfo(1, 1, 0, 3)); } }; @@ -138,9 +160,12 @@ class SmallFFTConvolutionLayerDataset final : public ConvolutionLayerDataset public: SmallFFTConvolutionLayerDataset() { - add_config(TensorShape(8U, 7U, 3U), TensorShape(3U, 3U, 3U, 2U), TensorShape(2U), TensorShape(8U, 7U, 2U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(64U, 32U, 5U), TensorShape(5U, 5U, 5U, 10U), TensorShape(10U), TensorShape(64U, 32U, 10U), PadStrideInfo(1, 1, 2, 2)); - add_config(TensorShape(192U, 128U, 8U), TensorShape(9U, 9U, 8U, 3U), TensorShape(3U), TensorShape(192U, 128U, 3U), PadStrideInfo(1, 1, 4, 4)); + add_config(TensorShape(8U, 7U, 3U), TensorShape(3U, 3U, 3U, 2U), TensorShape(2U), TensorShape(8U, 7U, 2U), + PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(64U, 32U, 5U), TensorShape(5U, 5U, 5U, 10U), TensorShape(10U), + TensorShape(64U, 32U, 10U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(192U, 128U, 8U), TensorShape(9U, 9U, 8U, 3U), TensorShape(3U), + TensorShape(192U, 128U, 3U), PadStrideInfo(1, 1, 4, 4)); } }; @@ -150,34 +175,51 @@ class SmallConvolutionLayerDataset final : public ConvolutionLayerDataset SmallConvolutionLayerDataset() { // 1D Kernel - add_config(TensorShape(1U, 5U, 2U), TensorShape(1U, 3U, 2U, 3U), TensorShape(3U), TensorShape(1U, 7U, 3U), PadStrideInfo(1, 1, 0, 0, 2, 2, DimensionRoundingType::FLOOR)); + add_config(TensorShape(1U, 5U, 2U), TensorShape(1U, 3U, 2U, 3U), TensorShape(3U), TensorShape(1U, 7U, 3U), + PadStrideInfo(1, 1, 0, 0, 2, 2, DimensionRoundingType::FLOOR)); // 1x1 Kernel with Stride (1, 1) and NHWC data layout in order to test skipping Im2Col - add_config(TensorShape(1U, 5U, 2U), TensorShape(1U, 1U, 2U, 3U), TensorShape(3U), TensorShape(1U, 5U, 3U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(1U, 5U, 2U), TensorShape(1U, 1U, 2U, 3U), TensorShape(3U), TensorShape(1U, 5U, 3U), + PadStrideInfo(1, 1, 0, 0)); // Batch size 1 - add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 2U), TensorShape(2U), TensorShape(11U, 25U, 2U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 3U), TensorShape(3U), TensorShape(11U, 12U, 3U), PadStrideInfo(3, 2, 1, 0)); - add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 5U, 2U, 4U), TensorShape(4U), TensorShape(15U, 15U, 4U), PadStrideInfo(1, 2, 1, 1)); - add_config(TensorShape(3U, 3U, 1U), TensorShape(2U, 2U, 1U, 5U), TensorShape(5U), TensorShape(2U, 2U, 5U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 2U), TensorShape(2U), TensorShape(11U, 25U, 2U), + PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 3U), TensorShape(3U), TensorShape(11U, 12U, 3U), + PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 5U, 2U, 4U), TensorShape(4U), TensorShape(15U, 15U, 4U), + PadStrideInfo(1, 2, 1, 1)); + add_config(TensorShape(3U, 3U, 1U), TensorShape(2U, 2U, 1U, 5U), TensorShape(5U), TensorShape(2U, 2U, 5U), + PadStrideInfo(1, 1, 0, 0)); // Batch size different than one - add_config(TensorShape(23U, 27U, 5U, 4U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), TensorShape(11U, 25U, 21U, 4U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 7U, 4U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U, 4U), PadStrideInfo(3, 2, 1, 0)); - add_config(TensorShape(17U, 31U, 2U, 4U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), TensorShape(15U, 15U, 19U, 4U), PadStrideInfo(1, 2, 1, 1)); + add_config(TensorShape(23U, 27U, 5U, 4U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), + TensorShape(11U, 25U, 21U, 4U), PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 7U, 4U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U, 4U), PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(17U, 31U, 2U, 4U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), + TensorShape(15U, 15U, 19U, 4U), PadStrideInfo(1, 2, 1, 1)); // FC convolution - add_config(TensorShape(1U, 1U, 1024U), TensorShape(1U, 1U, 1024U, 1001U), TensorShape(1001U), TensorShape(1U, 1U, 1001U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(1U, 1U, 1024U), TensorShape(1U, 1U, 1024U, 1001U), TensorShape(1001U), + TensorShape(1U, 1U, 1001U), PadStrideInfo(1, 1, 0, 0)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(11U, 12U, 4U), PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(11U, 12U, 4U), PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(11U, 12U, 4U), PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(11U, 12U, 4U), PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(10U, 11U, 4U), PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(10U, 11U, 4U), PadStrideInfo(3, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); - - add_config(TensorShape(5U, 4U, 3U, 2U), TensorShape(4U, 4U, 3U, 1U), TensorShape(1U), TensorShape(2U, 1U, 1U, 2U), PadStrideInfo(1, 1, 0, 0, 0, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(11U, 12U, 4U), + PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(11U, 12U, 4U), + PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(11U, 12U, 4U), + PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(11U, 12U, 4U), + PadStrideInfo(3, 2, 1, 3, 0, 2, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(10U, 11U, 4U), + PadStrideInfo(3, 2, 1, 0, 1, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 3U), TensorShape(5U, 7U, 3U, 4U), TensorShape(4U), TensorShape(10U, 11U, 4U), + PadStrideInfo(3, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); + + add_config(TensorShape(5U, 4U, 3U, 2U), TensorShape(4U, 4U, 3U, 1U), TensorShape(1U), + TensorShape(2U, 1U, 1U, 2U), PadStrideInfo(1, 1, 0, 0, 0, 0, DimensionRoundingType::FLOOR)); } }; @@ -187,8 +229,10 @@ class SmallConvolutionLayerPrePaddingDataset final : public ConvolutionLayerData SmallConvolutionLayerPrePaddingDataset() { // output shape is calculated by accounting pre-padding layer as well -- all the data is in nchw - add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), TensorShape(17U, 16U, 19U), PadStrideInfo(1, 2, 1, 1)); - add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), TensorShape(12U, 13U, 16U), PadStrideInfo(3, 2, 2, 0)); + add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), + TensorShape(17U, 16U, 19U), PadStrideInfo(1, 2, 1, 1)); + add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), + TensorShape(12U, 13U, 16U), PadStrideInfo(3, 2, 2, 0)); } }; @@ -198,14 +242,20 @@ class SmallConvolutionLayerReducedDataset final : public ConvolutionLayerDataset SmallConvolutionLayerReducedDataset() { // Batch size 1 - add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), TensorShape(11U, 25U, 21U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U), PadStrideInfo(3, 2, 1, 0)); - add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), TensorShape(15U, 15U, 19U), PadStrideInfo(1, 2, 1, 1)); + add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), + TensorShape(11U, 25U, 21U), PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U), PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(17U, 31U, 2U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), + TensorShape(15U, 15U, 19U), PadStrideInfo(1, 2, 1, 1)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 7U, 5U), TensorShape(5U, 7U, 7U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 7U, 5U), TensorShape(5U, 7U, 7U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 7U, 5U), TensorShape(5U, 7U, 7U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U, 5U), TensorShape(5U, 7U, 7U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U, 5U), TensorShape(5U, 7U, 7U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 7U, 5U), TensorShape(5U, 7U, 7U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); } }; @@ -216,34 +266,49 @@ class SmallGroupedConvolutionLayerDataset final : public ConvolutionLayerDataset { // Batch size 1 // Number of groups = 2 - add_config(TensorShape(23U, 27U, 8U), TensorShape(1U, 1U, 4U, 24U), TensorShape(24U), TensorShape(12U, 27U, 24U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 12U), TensorShape(5U, 5U, 6U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U), PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(23U, 27U, 8U), TensorShape(1U, 1U, 4U, 24U), TensorShape(24U), + TensorShape(12U, 27U, 24U), PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 12U), TensorShape(5U, 5U, 6U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U), PadStrideInfo(3, 2, 1, 0)); // Number of groups = 4 - add_config(TensorShape(23U, 27U, 8U), TensorShape(1U, 1U, 2U, 24U), TensorShape(24U), TensorShape(12U, 27U, 24U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 12U), TensorShape(5U, 5U, 4U, 15U), TensorShape(15U), TensorShape(11U, 12U, 15U), PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(23U, 27U, 8U), TensorShape(1U, 1U, 2U, 24U), TensorShape(24U), + TensorShape(12U, 27U, 24U), PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 12U), TensorShape(5U, 5U, 4U, 15U), TensorShape(15U), + TensorShape(11U, 12U, 15U), PadStrideInfo(3, 2, 1, 0)); // Batch size 4 // Number of groups = 2 - add_config(TensorShape(23U, 27U, 8U, 4U), TensorShape(1U, 1U, 4U, 24U), TensorShape(24U), TensorShape(12U, 27U, 24U, 4U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 12U, 4U), TensorShape(5U, 5U, 6U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U, 4U), PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(23U, 27U, 8U, 4U), TensorShape(1U, 1U, 4U, 24U), TensorShape(24U), + TensorShape(12U, 27U, 24U, 4U), PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 12U, 4U), TensorShape(5U, 5U, 6U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U, 4U), PadStrideInfo(3, 2, 1, 0)); // Number of groups = 4 - add_config(TensorShape(23U, 27U, 8U, 4U), TensorShape(1U, 1U, 2U, 24U), TensorShape(24U), TensorShape(12U, 27U, 24U, 4U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 12U, 4U), TensorShape(5U, 5U, 4U, 15U), TensorShape(15U), TensorShape(11U, 12U, 15U, 4U), PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(23U, 27U, 8U, 4U), TensorShape(1U, 1U, 2U, 24U), TensorShape(24U), + TensorShape(12U, 27U, 24U, 4U), PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 12U, 4U), TensorShape(5U, 5U, 4U, 15U), TensorShape(15U), + TensorShape(11U, 12U, 15U, 4U), PadStrideInfo(3, 2, 1, 0)); // Arbitrary batch size - add_config(TensorShape(23U, 27U, 8U, 5U), TensorShape(1U, 1U, 4U, 24U), TensorShape(24U), TensorShape(12U, 27U, 24U, 5U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 12U, 3U), TensorShape(5U, 5U, 6U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U, 3U), PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(23U, 27U, 8U, 5U), TensorShape(1U, 1U, 4U, 24U), TensorShape(24U), + TensorShape(12U, 27U, 24U, 5U), PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 12U, 3U), TensorShape(5U, 5U, 6U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U, 3U), PadStrideInfo(3, 2, 1, 0)); // Number of groups = 4 - add_config(TensorShape(23U, 27U, 8U, 2U), TensorShape(1U, 1U, 2U, 24U), TensorShape(24U), TensorShape(12U, 27U, 24U, 2U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 12U, 5U), TensorShape(5U, 5U, 4U, 15U), TensorShape(15U), TensorShape(11U, 12U, 15U, 5U), PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(23U, 27U, 8U, 2U), TensorShape(1U, 1U, 2U, 24U), TensorShape(24U), + TensorShape(12U, 27U, 24U, 2U), PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 12U, 5U), TensorShape(5U, 5U, 4U, 15U), TensorShape(15U), + TensorShape(11U, 12U, 15U, 5U), PadStrideInfo(3, 2, 1, 0)); // Asymmetric padding - add_config(TensorShape(33U, 27U, 8U, 5U), TensorShape(5U, 7U, 2U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 8U, 5U), TensorShape(5U, 7U, 4U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR)); - add_config(TensorShape(33U, 27U, 6U, 5U), TensorShape(5U, 7U, 3U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 8U, 5U), TensorShape(5U, 7U, 2U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 1, 1, 2, 0, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 8U, 5U), TensorShape(5U, 7U, 4U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 1, 1, 0, 2, DimensionRoundingType::FLOOR)); + add_config(TensorShape(33U, 27U, 6U, 5U), TensorShape(5U, 7U, 3U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U, 5U), PadStrideInfo(3, 2, 2, 1, 2, 0, DimensionRoundingType::FLOOR)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SMALL_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SMALLCONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/SmallGEMMDataset.h b/tests/datasets/SmallGEMMDataset.h index bdaa9f5a1dc..98d8fbade17 100644 --- a/tests/datasets/SmallGEMMDataset.h +++ b/tests/datasets/SmallGEMMDataset.h @@ -54,11 +54,14 @@ class SmallGEMMOutput3DDataset final : public GEMMDataset SmallGEMMOutput3DDataset() { add_config(TensorShape(16U, 16U), TensorShape(8U, 16U), TensorShape(8U), TensorShape(8U, 8U, 2U), 1.0f, 0.0f); - add_config(TensorShape(16U, 16U, 5U), TensorShape(8U, 16U, 5U), TensorShape(8U), TensorShape(8U, 8U, 2U, 5U), 1.0f, 0.0f); - add_config(TensorShape(21U, 14U), TensorShape(34U, 21U), TensorShape(34U), TensorShape(34U, 7U, 2U), 1.0f, 0.0f); + add_config(TensorShape(16U, 16U, 5U), TensorShape(8U, 16U, 5U), TensorShape(8U), TensorShape(8U, 8U, 2U, 5U), + 1.0f, 0.0f); + add_config(TensorShape(21U, 14U), TensorShape(34U, 21U), TensorShape(34U), TensorShape(34U, 7U, 2U), 1.0f, + 0.0f); add_config(TensorShape(31U, 1U), TensorShape(23U, 31U), TensorShape(23U), TensorShape(23U, 1U, 1U), 1.0f, 0.0f); add_config(TensorShape(32U, 1U), TensorShape(17U, 32U), TensorShape(17U), TensorShape(17U, 1U, 1U), 0.4f, 0.7f); - add_config(TensorShape(38U, 12U), TensorShape(21U, 38U), TensorShape(21U), TensorShape(21U, 4U, 3U), 0.2f, 1.2f); + add_config(TensorShape(38U, 12U), TensorShape(21U, 38U), TensorShape(21U), TensorShape(21U, 4U, 3U), 0.2f, + 1.2f); } }; @@ -67,12 +70,18 @@ class SmallGEMMInputOutput3DDataset final : public GEMMDataset public: SmallGEMMInputOutput3DDataset() { - add_config(TensorShape(16U, 16U, 3U, 2U), TensorShape(8U, 16U), TensorShape(8U), TensorShape(8U, 16U, 3U, 2U), 1.0f, 0.0f); - add_config(TensorShape(16U, 16U, 5U, 3U), TensorShape(8U, 16U), TensorShape(8U), TensorShape(8U, 16U, 5U, 3U), 1.0f, 0.3f); - add_config(TensorShape(21U, 14U, 13U), TensorShape(34U, 21U), TensorShape(34U), TensorShape(34U, 14U, 13U), 1.0f, 0.0f); - add_config(TensorShape(31U, 1U, 3U), TensorShape(23U, 31U), TensorShape(23U), TensorShape(23U, 1U, 3U), 1.0f, 0.0f); - add_config(TensorShape(32U, 1U, 4U, 3U), TensorShape(17U, 32U), TensorShape(17U), TensorShape(17U, 1U, 4U, 3U), 0.4f, 0.7f); - add_config(TensorShape(38U, 12U, 2U), TensorShape(21U, 38U), TensorShape(21U), TensorShape(21U, 12U, 2U), 0.2f, 1.2f); + add_config(TensorShape(16U, 16U, 3U, 2U), TensorShape(8U, 16U), TensorShape(8U), TensorShape(8U, 16U, 3U, 2U), + 1.0f, 0.0f); + add_config(TensorShape(16U, 16U, 5U, 3U), TensorShape(8U, 16U), TensorShape(8U), TensorShape(8U, 16U, 5U, 3U), + 1.0f, 0.3f); + add_config(TensorShape(21U, 14U, 13U), TensorShape(34U, 21U), TensorShape(34U), TensorShape(34U, 14U, 13U), + 1.0f, 0.0f); + add_config(TensorShape(31U, 1U, 3U), TensorShape(23U, 31U), TensorShape(23U), TensorShape(23U, 1U, 3U), 1.0f, + 0.0f); + add_config(TensorShape(32U, 1U, 4U, 3U), TensorShape(17U, 32U), TensorShape(17U), TensorShape(17U, 1U, 4U, 3U), + 0.4f, 0.7f); + add_config(TensorShape(38U, 12U, 2U), TensorShape(21U, 38U), TensorShape(21U), TensorShape(21U, 12U, 2U), 0.2f, + 1.2f); } }; @@ -81,16 +90,22 @@ class SmallBatchedMatMulDataset final : public GEMMDataset public: SmallBatchedMatMulDataset() { - add_config(TensorShape(2U, 4U, 3U), TensorShape(5U, 2U, 3U), TensorShape(5U), TensorShape(5U, 4U, 3U), 1.0f, 0.0f); + add_config(TensorShape(2U, 4U, 3U), TensorShape(5U, 2U, 3U), TensorShape(5U), TensorShape(5U, 4U, 3U), 1.0f, + 0.0f); add_config(TensorShape(4U, 3U), TensorShape(2U, 4U), TensorShape(2U), TensorShape(2U, 3U), 1.0f, 0.0f); add_config(TensorShape(12U, 15U), TensorShape(7U, 12U), TensorShape(7U), TensorShape(7U, 15U), 1.0f, 0.0f); - add_config(TensorShape(13U, 256U, 32U), TensorShape(19U, 13U, 32U), TensorShape(19U), TensorShape(19U, 256U, 32U), 1.0f, 0.0f); - add_config(TensorShape(15U, 7U, 36U), TensorShape(29U, 15U, 36U), TensorShape(29U), TensorShape(29U, 7U, 36U), 1.0f, 0.0f); - add_config(TensorShape(56U, 17U, 32U), TensorShape(5U, 56U, 32U), TensorShape(5U), TensorShape(5U, 17U, 32U), 1.0f, 0.0f); + add_config(TensorShape(13U, 256U, 32U), TensorShape(19U, 13U, 32U), TensorShape(19U), + TensorShape(19U, 256U, 32U), 1.0f, 0.0f); + add_config(TensorShape(15U, 7U, 36U), TensorShape(29U, 15U, 36U), TensorShape(29U), TensorShape(29U, 7U, 36U), + 1.0f, 0.0f); + add_config(TensorShape(56U, 17U, 32U), TensorShape(5U, 56U, 32U), TensorShape(5U), TensorShape(5U, 17U, 32U), + 1.0f, 0.0f); add_config(TensorShape(59U, 17U), TensorShape(36U, 59U), TensorShape(36U), TensorShape(36U, 17U), 1.0f, 0.0f); // Broadcast in RHS's batch dimension - add_config(TensorShape(15U, 7U, 36U), TensorShape(29U, 15U), TensorShape(29U), TensorShape(29U, 7U, 36U), 1.0f, 0.0f); - add_config(TensorShape(15U, 7U, 36U, 2U), TensorShape(29U, 15U), TensorShape(29U), TensorShape(29U, 7U, 36U, 2U), 1.0f, 0.0f); + add_config(TensorShape(15U, 7U, 36U), TensorShape(29U, 15U), TensorShape(29U), TensorShape(29U, 7U, 36U), 1.0f, + 0.0f); + add_config(TensorShape(15U, 7U, 36U, 2U), TensorShape(29U, 15U), TensorShape(29U), + TensorShape(29U, 7U, 36U, 2U), 1.0f, 0.0f); } }; @@ -111,11 +126,15 @@ class SmallGEMMVectorBiasDataset final : public GEMMDataset SmallGEMMVectorBiasDataset() { add_config(TensorShape(1U), TensorShape(1U), TensorShape(1U), TensorShape(1U), 1.0f, 1.0f); // scalar * scalar - add_config(TensorShape(1U, 7U), TensorShape(5U), TensorShape(5U), TensorShape(5U, 7U), 1.0f, 1.0f); // column * row + add_config(TensorShape(1U, 7U), TensorShape(5U), TensorShape(5U), TensorShape(5U, 7U), 1.0f, + 1.0f); // column * row add_config(TensorShape(7U), TensorShape(1U, 7U), TensorShape(1U), TensorShape(1U), 1.0f, 1.0f); // row * column - add_config(TensorShape(21U, 13U), TensorShape(33U, 21U), TensorShape(33U), TensorShape(33U, 13U), 1.0f, 1.0f); // matrix * matrix - add_config(TensorShape(23U, 31U), TensorShape(1U, 23U), TensorShape(1U), TensorShape(1U, 31U), 1.0f, 1.0f); // matrix * column - add_config(TensorShape(31U), TensorShape(23U, 31U), TensorShape(23U), TensorShape(23U), 1.0f, 1.0f); // row * matrix + add_config(TensorShape(21U, 13U), TensorShape(33U, 21U), TensorShape(33U), TensorShape(33U, 13U), 1.0f, + 1.0f); // matrix * matrix + add_config(TensorShape(23U, 31U), TensorShape(1U, 23U), TensorShape(1U), TensorShape(1U, 31U), 1.0f, + 1.0f); // matrix * column + add_config(TensorShape(31U), TensorShape(23U, 31U), TensorShape(23U), TensorShape(23U), 1.0f, + 1.0f); // row * matrix } }; @@ -139,7 +158,6 @@ class SmallFixedFormatGEMMDataset final : public GEMMDataset } }; - } // namespace datasets } // namespace test } // namespace arm_compute diff --git a/tests/datasets/SmallGEMMLowpDataset.h b/tests/datasets/SmallGEMMLowpDataset.h index 929940d2d97..4a0fd75d7e6 100644 --- a/tests/datasets/SmallGEMMLowpDataset.h +++ b/tests/datasets/SmallGEMMLowpDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SMALL_GEMMLOWP_DATASET -#define ARM_COMPUTE_TEST_SMALL_GEMMLOWP_DATASET - -#include "tests/datasets/GEMMLowpDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SMALLGEMMLOWPDATASET_H +#define ACL_TESTS_DATASETS_SMALLGEMMLOWPDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/GEMMLowpDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -95,4 +94,4 @@ class SmallGEMMLowpBatchedMatMulDataset final : public GEMMLowpDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SMALL_GEMMLOWP_DATASET */ +#endif // ACL_TESTS_DATASETS_SMALLGEMMLOWPDATASET_H diff --git a/tests/datasets/SmallMatMulDataset.h b/tests/datasets/SmallMatMulDataset.h index bb4cdad54b8..ded6fb38552 100644 --- a/tests/datasets/SmallMatMulDataset.h +++ b/tests/datasets/SmallMatMulDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Arm Limited. + * Copyright (c) 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ACL_TESTS_DATASETS_SMALLMATMULDATASET -#define ACL_TESTS_DATASETS_SMALLMATMULDATASET +#ifndef ACL_TESTS_DATASETS_SMALLMATMULDATASET_H +#define ACL_TESTS_DATASETS_SMALLMATMULDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "tests/datasets/MatMulDataset.h" namespace arm_compute @@ -76,7 +77,8 @@ class SmallMatMulDatasetRhsExportToCLImageRhsT final : public MatMulDataset // See (2), (3), and (4) in SmallMatMulDatasetRhsExportToCLImageRhsNT SmallMatMulDatasetRhsExportToCLImageRhsT() { - add_config(TensorShape(8U /*K*/, 3U /*M*/, 2U, 1U, 2U), TensorShape(20U /*N*/, 8U /*K*/, 2U, 1U, 2U), TensorShape(20U /*N*/, 3U /*M*/, 2U, 1U, 2U)); + add_config(TensorShape(8U /*K*/, 3U /*M*/, 2U, 1U, 2U), TensorShape(20U /*N*/, 8U /*K*/, 2U, 1U, 2U), + TensorShape(20U /*N*/, 3U /*M*/, 2U, 1U, 2U)); } }; @@ -99,4 +101,4 @@ class SmallMatMulDatasetRhsExportToCLImageRhsNT final : public MatMulDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ACL_TESTS_DATASETS_SMALLMATMULDATASET */ +#endif // ACL_TESTS_DATASETS_SMALLMATMULDATASET_H diff --git a/tests/datasets/SmallMatMulMMULDataset.h b/tests/datasets/SmallMatMulMMULDataset.h index 9e517488af4..95a4fd88566 100644 --- a/tests/datasets/SmallMatMulMMULDataset.h +++ b/tests/datasets/SmallMatMulMMULDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Arm Limited. + * Copyright (c) 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -22,11 +22,12 @@ * SOFTWARE. */ -#ifndef ACL_TESTS_DATASETS_SMALLMATMULMMULDATASET -#define ACL_TESTS_DATASETS_SMALLMATMULMMULDATASET +#ifndef ACL_TESTS_DATASETS_SMALLMATMULMMULDATASET_H +#define ACL_TESTS_DATASETS_SMALLMATMULMMULDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" + #include "tests/datasets/MatMulDataset.h" namespace arm_compute @@ -63,4 +64,4 @@ class TinyMatMulMMULDataset final : public MatMulDataset } // namespace test } // namespace arm_compute -#endif /* ACL_TESTS_DATASETS_SMALLMATMULMMULDATASET */ +#endif // ACL_TESTS_DATASETS_SMALLMATMULMMULDATASET_H diff --git a/tests/datasets/SpaceToBatchDataset.h b/tests/datasets/SpaceToBatchDataset.h index 650dc90be7b..57c444e61f3 100644 --- a/tests/datasets/SpaceToBatchDataset.h +++ b/tests/datasets/SpaceToBatchDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SPACE_TO_BATCH_LAYER_DATASET -#define ARM_COMPUTE_TEST_SPACE_TO_BATCH_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SPACETOBATCHDATASET_H +#define ACL_TESTS_DATASETS_SPACETOBATCHDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -46,10 +46,10 @@ class SpaceToBatchLayerDataset std::vector::const_iterator block_shape_it, std::vector::const_iterator paddings_shape_it, std::vector::const_iterator dst_it) - : _src_it{ std::move(src_it) }, - _block_shape_it{ std::move(block_shape_it) }, - _paddings_shape_it{ std::move(paddings_shape_it) }, - _dst_it{ std::move(dst_it) } + : _src_it{std::move(src_it)}, + _block_shape_it{std::move(block_shape_it)}, + _paddings_shape_it{std::move(paddings_shape_it)}, + _dst_it{std::move(dst_it)} { } @@ -92,7 +92,8 @@ class SpaceToBatchLayerDataset int size() const { - return std::min(_src_shapes.size(), std::min(_block_shape_shapes.size(), std::min(_padding_shapes.size(), _dst_shapes.size()))); + return std::min(_src_shapes.size(), + std::min(_block_shape_shapes.size(), std::min(_padding_shapes.size(), _dst_shapes.size()))); } void add_config(TensorShape src, TensorShape block_shape, TensorShape padding_shapes, TensorShape dst) @@ -133,10 +134,11 @@ class LargeSpaceToBatchLayerDataset final : public SpaceToBatchLayerDataset LargeSpaceToBatchLayerDataset() { add_config(TensorShape(128U, 64U, 2U, 1U), TensorShape(2U), TensorShape(2U, 2U), TensorShape(64U, 32U, 2U, 4U)); - add_config(TensorShape(512U, 64U, 2U, 1U), TensorShape(2U), TensorShape(2U, 2U), TensorShape(128U, 16U, 2U, 16U)); + add_config(TensorShape(512U, 64U, 2U, 1U), TensorShape(2U), TensorShape(2U, 2U), + TensorShape(128U, 16U, 2U, 16U)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SPACE_TO_BATCH_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SPACETOBATCHDATASET_H diff --git a/tests/datasets/SpaceToDepthDataset.h b/tests/datasets/SpaceToDepthDataset.h index 414dce089f9..d7db66d9454 100644 --- a/tests/datasets/SpaceToDepthDataset.h +++ b/tests/datasets/SpaceToDepthDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Arm Limited. + * Copyright (c) 2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SPACE_TO_DEPTH_LAYER_DATASET -#define ARM_COMPUTE_TEST_SPACE_TO_DEPTH_LAYER_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SPACETODEPTHDATASET_H +#define ACL_TESTS_DATASETS_SPACETODEPTHDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -45,9 +45,7 @@ class SpaceToDepthLayerDataset iterator(std::vector::const_iterator src_it, std::vector::const_iterator dst_it, std::vector::const_iterator block_shape_it) - : _src_it{ std::move(src_it) }, - _dst_it{ std::move(dst_it) }, - _block_shape_it{ std::move(block_shape_it) } + : _src_it{std::move(src_it)}, _dst_it{std::move(dst_it)}, _block_shape_it{std::move(block_shape_it)} { } @@ -132,4 +130,4 @@ class LargeSpaceToDepthLayerDataset final : public SpaceToDepthLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SPACE_TO_DEPTH_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SPACETODEPTHDATASET_H diff --git a/tests/datasets/SplitDataset.h b/tests/datasets/SplitDataset.h index a1eb4d75e4f..2ed9747c9e2 100644 --- a/tests/datasets/SplitDataset.h +++ b/tests/datasets/SplitDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020 Arm Limited. + * Copyright (c) 2018-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SPLIT_DATASET -#define ARM_COMPUTE_TEST_SPLIT_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SPLITDATASET_H +#define ACL_TESTS_DATASETS_SPLITDATASET_H #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -44,9 +44,9 @@ class SplitDataset iterator(std::vector::const_iterator tensor_shapes_it, std::vector::const_iterator axis_values_it, std::vector::const_iterator splits_values_it) - : _tensor_shapes_it{ std::move(tensor_shapes_it) }, - _axis_values_it{ std::move(axis_values_it) }, - _splits_values_it{ std::move(splits_values_it) } + : _tensor_shapes_it{std::move(tensor_shapes_it)}, + _axis_values_it{std::move(axis_values_it)}, + _splits_values_it{std::move(splits_values_it)} { } @@ -139,9 +139,9 @@ class SplitShapesDataset iterator(std::vector::const_iterator tensor_shapes_it, std::vector::const_iterator axis_values_it, std::vector>::const_iterator split_shapes_values_it) - : _tensor_shapes_it{ std::move(tensor_shapes_it) }, - _axis_values_it{ std::move(axis_values_it) }, - _split_shapes_values_it{ std::move(split_shapes_values_it) } + : _tensor_shapes_it{std::move(tensor_shapes_it)}, + _axis_values_it{std::move(axis_values_it)}, + _split_shapes_values_it{std::move(split_shapes_values_it)} { } @@ -205,14 +205,13 @@ class SmallSplitShapesDataset final : public SplitShapesDataset public: SmallSplitShapesDataset() { - add_config(TensorShape(27U, 3U, 16U, 2U), 2U, std::vector { TensorShape(27U, 3U, 4U, 2U), - TensorShape(27U, 3U, 4U, 2U), - TensorShape(27U, 3U, 8U, 2U) - }); + add_config(TensorShape(27U, 3U, 16U, 2U), 2U, + std::vector{TensorShape(27U, 3U, 4U, 2U), TensorShape(27U, 3U, 4U, 2U), + TensorShape(27U, 3U, 8U, 2U)}); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SPLIT_DATASET */ +#endif // ACL_TESTS_DATASETS_SPLITDATASET_H diff --git a/tests/datasets/ThresholdDataset.h b/tests/datasets/ThresholdDataset.h index a082ab31963..43afb5b966a 100644 --- a/tests/datasets/ThresholdDataset.h +++ b/tests/datasets/ThresholdDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_THRESHOLD_DATASET -#define ARM_COMPUTE_TEST_THRESHOLD_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_THRESHOLDDATASET_H +#define ACL_TESTS_DATASETS_THRESHOLDDATASET_H #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -46,11 +46,11 @@ class ThresholdDataset std::vector::const_iterator true_value_it, std::vector::const_iterator type_it, std::vector::const_iterator upper_it) - : _threshold_it{ std::move(threshold_it) }, - _false_value_it{ std::move(false_value_it) }, - _true_value_it{ std::move(true_value_it) }, - _type_it{ std::move(type_it) }, - _upper_it{ std::move(upper_it) } + : _threshold_it{std::move(threshold_it)}, + _false_value_it{std::move(false_value_it)}, + _true_value_it{std::move(true_value_it)}, + _type_it{std::move(type_it)}, + _upper_it{std::move(upper_it)} { } @@ -92,15 +92,19 @@ class ThresholdDataset iterator begin() const { - return iterator(_thresholds.begin(), _false_values.begin(), _true_values.begin(), _types.begin(), _uppers.begin()); + return iterator(_thresholds.begin(), _false_values.begin(), _true_values.begin(), _types.begin(), + _uppers.begin()); } int size() const { - return std::min(_thresholds.size(), std::min(_false_values.size(), std::min(_true_values.size(), std::min(_types.size(), _uppers.size())))); + return std::min( + _thresholds.size(), + std::min(_false_values.size(), std::min(_true_values.size(), std::min(_types.size(), _uppers.size())))); } - void add_config(uint8_t threshold, uint8_t false_value, uint8_t true_value, ThresholdType threshold_type, uint8_t upper) + void + add_config(uint8_t threshold, uint8_t false_value, uint8_t true_value, ThresholdType threshold_type, uint8_t upper) { _thresholds.emplace_back(std::move(threshold)); _false_values.emplace_back(std::move(false_value)); @@ -135,4 +139,4 @@ class MixedThresholdDataset final : public ThresholdDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_THRESHOLD_DATASET */ +#endif // ACL_TESTS_DATASETS_THRESHOLDDATASET_H diff --git a/tests/datasets/TinyConvolutionLayerDataset.h b/tests/datasets/TinyConvolutionLayerDataset.h index 33542cc9216..e9925b99c52 100644 --- a/tests/datasets/TinyConvolutionLayerDataset.h +++ b/tests/datasets/TinyConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_TINY_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_TINY_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_TINYCONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_TINYCONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,15 +42,19 @@ class TinyConvolutionLayerDataset final : public ConvolutionLayerDataset TinyConvolutionLayerDataset() { // Batch size 1 - add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), TensorShape(11U, 25U, 21U), PadStrideInfo(2, 1, 0, 0)); - add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), TensorShape(11U, 12U, 16U), PadStrideInfo(3, 2, 1, 0)); + add_config(TensorShape(23U, 27U, 5U), TensorShape(3U, 3U, 5U, 21U), TensorShape(21U), + TensorShape(11U, 25U, 21U), PadStrideInfo(2, 1, 0, 0)); + add_config(TensorShape(33U, 27U, 7U), TensorShape(5U, 5U, 7U, 16U), TensorShape(16U), + TensorShape(11U, 12U, 16U), PadStrideInfo(3, 2, 1, 0)); // Batch size 4 - add_config(TensorShape(17U, 31U, 2U, 4U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), TensorShape(15U, 15U, 19U, 4U), PadStrideInfo(1, 2, 1, 1)); + add_config(TensorShape(17U, 31U, 2U, 4U), TensorShape(5U, 5U, 2U, 19U), TensorShape(19U), + TensorShape(15U, 15U, 19U, 4U), PadStrideInfo(1, 2, 1, 1)); // FC convolution - add_config(TensorShape(1U, 1U, 1024U), TensorShape(1U, 1U, 1024U, 1001U), TensorShape(1001U), TensorShape(1U, 1U, 1001U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(1U, 1U, 1024U), TensorShape(1U, 1U, 1024U, 1001U), TensorShape(1001U), + TensorShape(1U, 1U, 1001U), PadStrideInfo(1, 1, 0, 0)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_TINY_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_TINYCONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/WinogradInputTransformDataset.h b/tests/datasets/WinogradInputTransformDataset.h index d769753486f..338b45258c1 100644 --- a/tests/datasets/WinogradInputTransformDataset.h +++ b/tests/datasets/WinogradInputTransformDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020 Arm Limited. + * Copyright (c) 2018-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_WINOGRAD_INPUT_TRANSFORM_DATASET -#define ARM_COMPUTE_TEST_WINOGRAD_INPUT_TRANSFORM_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_WINOGRADINPUTTRANSFORMDATASET_H +#define ACL_TESTS_DATASETS_WINOGRADINPUTTRANSFORMDATASET_H #include "arm_compute/core/Types.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -42,7 +42,7 @@ class WinogradInputTransformDataset struct iterator { iterator(std::vector::const_iterator in_it, std::vector::const_iterator info_it) - : _in_it{ std::move(in_it) }, _info_it{ std::move(info_it) } + : _in_it{std::move(in_it)}, _info_it{std::move(info_it)} { } @@ -102,9 +102,12 @@ class SmallWinogradInputTransformDataset2x2_3x3 final : public WinogradInputTran public: SmallWinogradInputTransformDataset2x2_3x3() { - add_config(TensorShape(9U, 9U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(9U, 9U, 3U, 4U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 4U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -113,9 +116,12 @@ class SmallWinogradInputTransformDataset2x1_3x1 final : public WinogradInputTran public: SmallWinogradInputTransformDataset2x1_3x1() { - add_config(TensorShape(9U, 9U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(9U, 9U, 3U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -124,9 +130,12 @@ class SmallWinogradInputTransformDataset1x2_1x3 final : public WinogradInputTran public: SmallWinogradInputTransformDataset1x2_1x3() { - add_config(TensorShape(9U, 9U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(9U, 9U, 3U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -135,9 +144,12 @@ class SmallWinogradInputTransformDataset4x4_3x3 final : public WinogradInputTran public: SmallWinogradInputTransformDataset4x4_3x3() { - add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -146,9 +158,12 @@ class SmallWinogradInputTransformDataset4x1_3x1 final : public WinogradInputTran public: SmallWinogradInputTransformDataset4x1_3x1() { - add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -157,9 +172,12 @@ class SmallWinogradInputTransformDataset1x4_1x3 final : public WinogradInputTran public: SmallWinogradInputTransformDataset1x4_1x3() { - add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -168,9 +186,12 @@ class SmallWinogradInputTransformDataset4x4_5x5 final : public WinogradInputTran public: SmallWinogradInputTransformDataset4x4_5x5() { - add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -179,9 +200,12 @@ class SmallWinogradInputTransformDataset4x1_5x1 final : public WinogradInputTran public: SmallWinogradInputTransformDataset4x1_5x1() { - add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); } }; @@ -190,9 +214,12 @@ class SmallWinogradInputTransformDataset1x4_1x5 final : public WinogradInputTran public: SmallWinogradInputTransformDataset1x4_1x5() { - add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(1U, 9U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(16U, 9U, 3U, 4U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); } }; @@ -201,9 +228,12 @@ class SmallWinogradInputTransformDataset2x2_7x7 final : public WinogradInputTran public: SmallWinogradInputTransformDataset2x2_7x7() { - add_config(TensorShape(1U, 13U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(16U, 13U, 3U, 4U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 13U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(16U, 13U, 3U, 4U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -212,9 +242,12 @@ class SmallWinogradInputTransformDataset2x1_7x1 final : public WinogradInputTran public: SmallWinogradInputTransformDataset2x1_7x1() { - add_config(TensorShape(1U, 31U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(16U, 31U, 3U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 31U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(16U, 31U, 3U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -223,9 +256,12 @@ class SmallWinogradInputTransformDataset1x2_1x7 final : public WinogradInputTran public: SmallWinogradInputTransformDataset1x2_1x7() { - add_config(TensorShape(1U, 31U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(16U, 31U, 3U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(1U, 31U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(16U, 31U, 3U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); } }; @@ -234,14 +270,22 @@ class LargeWinogradInputTransformDataset2x2_3x3 final : public WinogradInputTran public: LargeWinogradInputTransformDataset2x2_3x3() { - add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(128U, 64U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(42U, 37U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(57U, 60U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -250,14 +294,22 @@ class LargeWinogradInputTransformDataset2x1_3x1 final : public WinogradInputTran public: LargeWinogradInputTransformDataset2x1_3x1() { - add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(128U, 64U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(42U, 37U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(57U, 60U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -266,14 +318,22 @@ class LargeWinogradInputTransformDataset1x2_1x3 final : public WinogradInputTran public: LargeWinogradInputTransformDataset1x2_1x3() { - add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(128U, 64U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(42U, 37U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(57U, 60U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -282,14 +342,22 @@ class LargeWinogradInputTransformDataset4x4_3x3 final : public WinogradInputTran public: LargeWinogradInputTransformDataset4x4_3x3() { - add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(128U, 64U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(42U, 37U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(57U, 60U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -298,14 +366,22 @@ class LargeWinogradInputTransformDataset4x1_3x1 final : public WinogradInputTran public: LargeWinogradInputTransformDataset4x1_3x1() { - add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(128U, 64U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(42U, 37U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(57U, 60U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -314,14 +390,22 @@ class LargeWinogradInputTransformDataset1x4_1x3 final : public WinogradInputTran public: LargeWinogradInputTransformDataset1x4_1x3() { - add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(128U, 64U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(42U, 37U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(57U, 60U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -330,14 +414,22 @@ class LargeWinogradInputTransformDataset4x4_5x5 final : public WinogradInputTran public: LargeWinogradInputTransformDataset4x4_5x5() { - add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(128U, 64U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(42U, 37U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(57U, 60U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); } }; @@ -346,14 +438,22 @@ class LargeWinogradInputTransformDataset4x1_5x1 final : public WinogradInputTran public: LargeWinogradInputTransformDataset4x1_5x1() { - add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(27U, 13U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(128U, 64U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(42U, 37U), PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(57U, 60U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(83U, 72U), PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); } }; @@ -362,14 +462,22 @@ class LargeWinogradInputTransformDataset1x4_1x5 final : public WinogradInputTran public: LargeWinogradInputTransformDataset1x4_1x5() { - add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(42U, 37U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(57U, 60U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(9U, 9U, 3U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); } }; @@ -378,14 +486,22 @@ class LargeWinogradInputTransformDataset1x2_1x7 final : public WinogradInputTran public: LargeWinogradInputTransformDataset1x2_1x7() { - add_config(TensorShape(23U, 31U, 3U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(42U, 37U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(57U, 60U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(23U, 31U, 3U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); } }; @@ -394,14 +510,22 @@ class LargeWinogradInputTransformDataset2x1_7x1 final : public WinogradInputTran public: LargeWinogradInputTransformDataset2x1_7x1() { - add_config(TensorShape(23U, 31U, 3U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(42U, 37U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(57U, 60U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(23U, 31U, 3U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); } }; @@ -410,18 +534,26 @@ class LargeWinogradInputTransformDataset2x2_7x7 final : public WinogradInputTran public: LargeWinogradInputTransformDataset2x2_7x7() { - add_config(TensorShape(27U, 13U, 3U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(27U, 13U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(42U, 37U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(57U, 60U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(128U, 64U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(83U, 72U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 3U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 1U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(27U, 13U, 2U, 4U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(27U, 13U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(14U, 14U, 512U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(42U, 37U, 8U, 15U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(42U, 37U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(57U, 60U, 13U, 8U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(57U, 60U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(128U, 64U, 21U, 13U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(128U, 64U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(83U, 72U, 14U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(83U, 72U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_WINOGRAD_INPUT_TRANSFORM_DATASET */ \ No newline at end of file +#endif // ACL_TESTS_DATASETS_WINOGRADINPUTTRANSFORMDATASET_H diff --git a/tests/datasets/WinogradOutputTransformDataset.h b/tests/datasets/WinogradOutputTransformDataset.h index d4d906b63e1..75fd730fa5e 100644 --- a/tests/datasets/WinogradOutputTransformDataset.h +++ b/tests/datasets/WinogradOutputTransformDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020 Arm Limited. + * Copyright (c) 2018-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_WINOGRAD_OUTPUT_TRANSFORM_DATASET -#define ARM_COMPUTE_TEST_WINOGRAD_OUTPUT_TRANSFORM_DATASET - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_WINOGRADOUTPUTTRANSFORMDATASET_H +#define ACL_TESTS_DATASETS_WINOGRADOUTPUTTRANSFORMDATASET_H #include "arm_compute/core/TensorShape.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -41,10 +41,8 @@ class WinogradOutputTransformDataset struct iterator { - iterator(std::vector::const_iterator a_it, - std::vector::const_iterator info_it) - : _a_it{ std::move(a_it) }, - _info_it{ std::move(info_it) } + iterator(std::vector::const_iterator a_it, std::vector::const_iterator info_it) + : _a_it{std::move(a_it)}, _info_it{std::move(info_it)} { } @@ -105,71 +103,120 @@ class SmallWinogradOutputTransformDatasetNCHW final : public WinogradOutputTrans SmallWinogradOutputTransformDatasetNCHW() { // (2x2, 3x3) - add_config(TensorShape(13U, 6U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 20U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(1U, 442U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(7U, 12U, 16U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(24U, 49U, 16U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(13U, 6U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 20U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 442U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(7U, 12U, 16U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(24U, 49U, 16U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); // (4x4, 3x3) - add_config(TensorShape(13U, 4U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(10U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 6U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 117U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(7U, 4U, 36U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(24U, 16U, 36U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(7U, 12U, 16U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 4U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(10U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 6U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 117U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(7U, 4U, 36U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(24U, 16U, 36U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(7U, 12U, 16U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); // (2x1, 3x1) - add_config(TensorShape(13U, 18U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 44U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(1U, 891U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(53U, 33U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 30U, 4U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(24U, 98U, 4U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 18U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 44U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 891U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 30U, 4U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(24U, 98U, 4U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); // (1x2, 1x3) - add_config(TensorShape(13U, 14U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 50U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(1U, 901U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(7U, 32U, 4U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(24U, 98U, 4U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(13U, 14U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 50U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 901U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(7U, 32U, 4U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(24U, 98U, 4U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); // (4x1, 3x1) - add_config(TensorShape(13U, 12U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 22U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(1U, 462U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(53U, 33U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 20U, 6U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(24U, 56U, 6U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 12U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 22U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 462U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 20U, 6U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(24U, 56U, 6U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); // (1x4, 1x3) - add_config(TensorShape(13U, 7U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 30U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(1U, 477U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(7U, 16U, 6U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(24U, 56U, 6U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(13U, 7U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 30U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(1U, 477U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(7U, 16U, 6U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(24U, 56U, 6U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); // (4x4, 5x5) - add_config(TensorShape(13U, 1U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 4U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(5U, 104U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(7U, 2U, 64U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(24U, 9U, 64U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(7U, 2U, 64U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 1U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 4U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(5U, 104U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(7U, 2U, 64U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(24U, 9U, 64U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(7U, 2U, 64U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); // (4x1, 5x1) - add_config(TensorShape(13U, 6U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 22U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(5U, 462U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(53U, 33U), PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 10U, 8U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(24U, 42U, 8U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 20U, 8U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(8U, 10U), PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 6U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 22U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(5U, 462U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 10U, 8U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(24U, 42U, 8U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 20U, 8U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); // (1x4, 1x5) - add_config(TensorShape(13U, 7U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(7U, 20U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(5U, 477U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(7U, 16U, 8U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(24U, 42U, 8U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(7U, 24U, 8U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(13U, 7U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(7U, 20U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(5U, 477U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(7U, 16U, 8U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(24U, 42U, 8U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(7U, 24U, 8U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); } }; @@ -179,81 +226,131 @@ class SmallWinogradOutputTransformDatasetNHWC_F16 : public WinogradOutputTransfo SmallWinogradOutputTransformDatasetNHWC_F16() { // (4x1, 3x1) - add_config(TensorShape(1U, 12U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 22U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(1U, 462U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(53U, 33U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(16U, 20U, 6U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(24U, 56U, 6U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(1U, 12U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 22U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(1U, 462U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(16U, 20U, 6U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(24U, 56U, 6U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); // (1x4, 1x3) - add_config(TensorShape(1U, 7U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 30U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(1U, 477U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(16U, 16U, 6U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(24U, 56U, 6U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(1U, 7U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 30U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(1U, 477U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(16U, 16U, 6U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(24U, 56U, 6U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); // (4x4, 3x3) - add_config(TensorShape(1U, 4U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(10U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 6U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 117U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(16U, 4U, 36U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(24U, 16U, 36U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); + add_config(TensorShape(1U, 4U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(10U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 6U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 117U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(16U, 4U, 36U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(24U, 16U, 36U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); // (4x4, 5x5) - add_config(TensorShape(1U, 1U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 4U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(5U, 104U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(7U, 2U, 64U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(16U, 9U, 64U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); - add_config(TensorShape(7U, 2U, 64U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(1U, 1U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 4U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(5U, 104U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(7U, 2U, 64U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(16U, 9U, 64U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); + add_config(TensorShape(7U, 2U, 64U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); // (4x1, 5x1) - add_config(TensorShape(1U, 6U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 22U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(5U, 462U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(53U, 33U), PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 10U, 8U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(16U, 42U, 8U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 20U, 8U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(8U, 10U), PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); + add_config(TensorShape(1U, 6U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 22U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(5U, 462U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 10U, 8U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(16U, 42U, 8U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 20U, 8U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); // (1x4, 1x5) - add_config(TensorShape(1U, 7U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(7U, 6U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 20U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(5U, 477U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); - add_config(TensorShape(7U, 16U, 8U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(16U, 42U, 8U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(7U, 24U, 8U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); + add_config(TensorShape(1U, 7U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(7U, 6U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 20U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(5U, 477U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); + add_config(TensorShape(7U, 16U, 8U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(16U, 42U, 8U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(7U, 24U, 8U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); // (2x1, 7x1) - add_config(TensorShape(1U, 18U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 22U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(5U, 858U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(53U, 33U), PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 10U, 8U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(16U, 70U, 8U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 30U, 8U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(8U, 10U), PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); + add_config(TensorShape(1U, 18U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 22U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(5U, 858U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 10U, 8U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(16U, 70U, 8U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 30U, 8U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); // (1x2, 1x7) - add_config(TensorShape(1U, 18U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 30U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(5U, 848U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); - add_config(TensorShape(7U, 16U, 8U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(16U, 70U, 8U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(14U, 14U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(7U, 32U, 8U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); + add_config(TensorShape(1U, 18U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 30U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(5U, 848U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); + add_config(TensorShape(7U, 16U, 8U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(16U, 70U, 8U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(7U, 32U, 8U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); } }; class SmallWinogradOutputTransformDatasetNHWC_F32 : public SmallWinogradOutputTransformDatasetNHWC_F16 { public: - SmallWinogradOutputTransformDatasetNHWC_F32() - : SmallWinogradOutputTransformDatasetNHWC_F16() + SmallWinogradOutputTransformDatasetNHWC_F32() : SmallWinogradOutputTransformDatasetNHWC_F16() { // (2x2, 7x7) - add_config(TensorShape(1U, 4U, 64U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(9U, 9U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(7U, 6U, 64U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(10U, 11U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(5U, 360U, 64U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(53U, 33U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(7U, 2U, 64U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(16U, 25U, 64U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(14U, 14U), PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); - add_config(TensorShape(7U, 2U, 64U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(8U, 10U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(1U, 4U, 64U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(9U, 9U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(7U, 6U, 64U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(10U, 11U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(5U, 360U, 64U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(53U, 33U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(7U, 2U, 64U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(16U, 25U, 64U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(14U, 14U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); + add_config(TensorShape(7U, 2U, 64U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(7U, 7U), Size2D(8U, 10U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); } }; @@ -263,70 +360,118 @@ class LargeWinogradOutputTransformDatasetNCHW : public WinogradOutputTransformDa LargeWinogradOutputTransformDatasetNCHW() { // (2x2, 3x3) - add_config(TensorShape(64U, 12544U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(224U, 224U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(32U, 3080U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 756U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(64U, 12544U, 16U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(224U, 224U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(32U, 3080U, 16U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 756U, 16U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(64U, 12544U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(224U, 224U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 3080U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 756U, 16U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(64U, 12544U, 16U, 3U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(224U, 224U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 3080U, 16U, 2U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 756U, 16U, 5U), WinogradInfo(Size2D(2U, 2U), Size2D(3U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); // (4x4, 3x3) - add_config(TensorShape(64U, 3136U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(224U, 224U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(32U, 784U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 196U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(64U, 3136U, 36U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(224U, 224U), PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); - add_config(TensorShape(32U, 784U, 36U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 196U, 36U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(64U, 3136U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(224U, 224U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 784U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 196U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(64U, 3136U, 36U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(224U, 224U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 784U, 36U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 196U, 36U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); // (2x1, 3x1) - add_config(TensorShape(64U, 24976U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(32U, 6160U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 1568U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(64U, 24753U, 4U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(32U, 6050U, 4U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 1512U, 4U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(64U, 24976U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(32U, 6160U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 1568U, 4U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(64U, 24753U, 4U, 3U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(32U, 6050U, 4U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 1512U, 4U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); // (1x2, 1x3) - add_config(TensorShape(64U, 25088U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(224U, 223U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(32U, 6160U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(112U, 110U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(13U, 1568U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(64U, 24864U, 4U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(224U, 223U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(32U, 6048U, 4U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(112U, 110U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 1512U, 4U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(64U, 25088U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 6160U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(13U, 1568U, 4U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(64U, 24864U, 4U, 3U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(32U, 6048U, 4U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 1512U, 4U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); // (4x1, 3x1) - add_config(TensorShape(64U, 12488U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(32U, 3080U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 784U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(64U, 12488U, 6U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(32U, 3080U, 6U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 784U, 6U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(64U, 12488U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(32U, 3080U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 784U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(64U, 12488U, 6U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(32U, 3080U, 6U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 784U, 6U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); // (1x4, 1x3) - add_config(TensorShape(64U, 12544U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(224U, 223U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(32U, 3136U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(112U, 110U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(13U, 784U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(64U, 12544U, 6U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(224U, 223U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(32U, 3024U, 6U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(112U, 110U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 784U, 6U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(64U, 12544U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 3136U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(13U, 784U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(64U, 12544U, 6U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(32U, 3024U, 6U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 784U, 6U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); // (4x4, 5x5) - add_config(TensorShape(32U, 756U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 182U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(32U, 756U, 64U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 182U, 64U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 756U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 182U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 756U, 64U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 182U, 64U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); // (4x1, 5x1) - add_config(TensorShape(32U, 3136U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(112U, 112U), PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 784U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); - add_config(TensorShape(32U, 3024U, 8U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(112U, 112U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 784U, 8U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(32U, 3136U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 784U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); + add_config(TensorShape(32U, 3024U, 8U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 784U, 8U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NCHW)); // (1x4, 1x5) - add_config(TensorShape(32U, 3136U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(112U, 112U), PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); - add_config(TensorShape(13U, 784U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); - add_config(TensorShape(32U, 3024U, 8U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(112U, 112U), PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); - add_config(TensorShape(13U, 784U, 8U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 3136U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NCHW)); + add_config(TensorShape(13U, 784U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); + add_config(TensorShape(32U, 3024U, 8U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NCHW)); + add_config(TensorShape(13U, 784U, 8U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NCHW)); } }; @@ -336,70 +481,107 @@ class LargeWinogradOutputTransformDatasetNHWC_F16 : public WinogradOutputTransfo LargeWinogradOutputTransformDatasetNHWC_F16() { // (4x1, 3x1) - add_config(TensorShape(64U, 12488U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(32U, 3080U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 784U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(64U, 12488U, 6U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(32U, 3080U, 6U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 784U, 6U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(64U, 12488U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(32U, 3080U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 784U, 6U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(64U, 12488U, 6U, 3U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(32U, 3080U, 6U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 784U, 6U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(3U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); // (1x4, 1x3) - add_config(TensorShape(64U, 12544U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(224U, 223U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(32U, 3136U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(112U, 110U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(13U, 784U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(64U, 12544U, 6U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(224U, 223U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(32U, 3024U, 6U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(112U, 110U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 784U, 6U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(64U, 12544U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(32U, 3136U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(13U, 784U, 6U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(64U, 12544U, 6U, 3U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(224U, 223U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(32U, 3024U, 6U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(112U, 110U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 784U, 6U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); // (4x4, 3x3) - add_config(TensorShape(64U, 3136U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(224U, 224U), PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); - add_config(TensorShape(32U, 784U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 196U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(64U, 3136U, 36U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(224U, 224U), PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); - add_config(TensorShape(32U, 784U, 36U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 196U, 36U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(64U, 3136U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(224U, 224U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); + add_config(TensorShape(32U, 784U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 196U, 36U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(64U, 3136U, 36U, 3U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(224U, 224U), + PadStrideInfo(1, 1, 1, 1), DataLayout::NHWC)); + add_config(TensorShape(32U, 784U, 36U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 196U, 36U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(3U, 3U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); // (4x4, 5x5) - add_config(TensorShape(32U, 756U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 182U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(32U, 756U, 64U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(112U, 112U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 182U, 64U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(32U, 756U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 182U, 64U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(32U, 756U, 64U, 2U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 182U, 64U, 5U), WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); // (4x1, 5x1) - add_config(TensorShape(32U, 3136U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(112U, 112U), PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 784U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(32U, 3024U, 8U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(112U, 112U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 784U, 8U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(32U, 3136U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 784U, 8U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(32U, 3024U, 8U, 2U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 784U, 8U, 5U), WinogradInfo(Size2D(4U, 1U), Size2D(5U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); // (1x4, 1x5) - add_config(TensorShape(32U, 3136U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(112U, 112U), PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); - add_config(TensorShape(13U, 784U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(32U, 3024U, 8U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(112U, 112U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 784U, 8U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(32U, 3136U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); + add_config(TensorShape(13U, 784U, 8U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(32U, 3024U, 8U, 2U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 784U, 8U, 5U), WinogradInfo(Size2D(1U, 4U), Size2D(1U, 5U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); // (2x1, 7x1) - add_config(TensorShape(32U, 6160U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(112U, 112U), PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 1456U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); - add_config(TensorShape(32U, 5936U, 8U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(112U, 112U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 1456U, 8U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(56U, 56U), PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(32U, 6160U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 2, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 1456U, 8U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); + add_config(TensorShape(32U, 5936U, 8U, 2U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 1456U, 8U, 5U), WinogradInfo(Size2D(2U, 1U), Size2D(7U, 1U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 1, 0), DataLayout::NHWC)); // (1x2, 1x7) - add_config(TensorShape(32U, 6160U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(112U, 112U), PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); - add_config(TensorShape(13U, 1456U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); - add_config(TensorShape(32U, 5936U, 8U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(112U, 112U), PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); - add_config(TensorShape(13U, 1456U, 8U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(56U, 56U), PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(32U, 6160U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 0, 2), DataLayout::NHWC)); + add_config(TensorShape(13U, 1456U, 8U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); + add_config(TensorShape(32U, 5936U, 8U, 2U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(112U, 112U), + PadStrideInfo(1, 1, 0, 0), DataLayout::NHWC)); + add_config(TensorShape(13U, 1456U, 8U, 5U), WinogradInfo(Size2D(1U, 2U), Size2D(1U, 7U), Size2D(56U, 56U), + PadStrideInfo(1, 1, 0, 1), DataLayout::NHWC)); } }; class LargeWinogradOutputTransformDatasetNHWC_F32 : public LargeWinogradOutputTransformDatasetNHWC_F16 { public: - LargeWinogradOutputTransformDatasetNHWC_F32() - : LargeWinogradOutputTransformDatasetNHWC_F16() + LargeWinogradOutputTransformDatasetNHWC_F32() : LargeWinogradOutputTransformDatasetNHWC_F16() { } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_WINOGRAD_OUTPUT_TRANSFORM_DATASET */ \ No newline at end of file +#endif // ACL_TESTS_DATASETS_WINOGRADOUTPUTTRANSFORMDATASET_H diff --git a/tests/datasets/system_tests/alexnet/AlexNetActivationLayerDataset.h b/tests/datasets/system_tests/alexnet/AlexNetActivationLayerDataset.h index 16cd1f3684f..e5fb209b9b0 100644 --- a/tests/datasets/system_tests/alexnet/AlexNetActivationLayerDataset.h +++ b/tests/datasets/system_tests/alexnet/AlexNetActivationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,32 +21,32 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_ALEXNET_ACTIVATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_ALEXNET_ACTIVATION_LAYER_DATASET - -#include "tests/framework/datasets/Datasets.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETACTIVATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETACTIVATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/framework/datasets/Datasets.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test { namespace datasets { -class AlexNetActivationLayerDataset final : public - framework::dataset::CartesianProductDataset, framework::dataset::SingletonDataset> +class AlexNetActivationLayerDataset final + : public framework::dataset::CartesianProductDataset, + framework::dataset::SingletonDataset> { public: AlexNetActivationLayerDataset() - : CartesianProductDataset - { - framework::dataset::make("Shape", { TensorShape(55U, 55U, 96U), TensorShape(27U, 27U, 256U), TensorShape(13U, 13U, 384U), TensorShape(13U, 13U, 256U), TensorShape(4096U) }), - framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)) - } + : CartesianProductDataset{ + framework::dataset::make("Shape", + {TensorShape(55U, 55U, 96U), TensorShape(27U, 27U, 256U), + TensorShape(13U, 13U, 384U), TensorShape(13U, 13U, 256U), TensorShape(4096U)}), + framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))} { } AlexNetActivationLayerDataset(AlexNetActivationLayerDataset &&) = default; @@ -55,4 +55,4 @@ class AlexNetActivationLayerDataset final : public } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_ALEXNET_ACTIVATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETACTIVATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/alexnet/AlexNetConvolutionLayerDataset.h b/tests/datasets/system_tests/alexnet/AlexNetConvolutionLayerDataset.h index dc31f60bcf1..9a7c6fbaee5 100644 --- a/tests/datasets/system_tests/alexnet/AlexNetConvolutionLayerDataset.h +++ b/tests/datasets/system_tests/alexnet/AlexNetConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_ALEXNET_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_ALEXNET_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETCONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETCONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -42,9 +41,12 @@ class AlexNetWinogradLayerDataset final : public ConvolutionLayerDataset public: AlexNetWinogradLayerDataset() { - add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 384U), TensorShape(384U), TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 128U), TensorShape(128U), TensorShape(13U, 13U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 384U), TensorShape(384U), + TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), + TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 128U), TensorShape(128U), + TensorShape(13U, 13U, 128U), PadStrideInfo(1, 1, 1, 1)); } }; @@ -53,11 +55,16 @@ class AlexNetConvolutionLayerDataset final : public ConvolutionLayerDataset public: AlexNetConvolutionLayerDataset() { - add_config(TensorShape(227U, 227U, 3U), TensorShape(11U, 11U, 3U, 96U), TensorShape(96U), TensorShape(55U, 55U, 96U), PadStrideInfo(4, 4, 0, 0)); - add_config(TensorShape(27U, 27U, 48U), TensorShape(5U, 5U, 48U, 128U), TensorShape(128U), TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 2, 2)); - add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 384U), TensorShape(384U), TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 128U), TensorShape(128U), TensorShape(13U, 13U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(227U, 227U, 3U), TensorShape(11U, 11U, 3U, 96U), TensorShape(96U), + TensorShape(55U, 55U, 96U), PadStrideInfo(4, 4, 0, 0)); + add_config(TensorShape(27U, 27U, 48U), TensorShape(5U, 5U, 48U, 128U), TensorShape(128U), + TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 384U), TensorShape(384U), + TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), + TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 128U), TensorShape(128U), + TensorShape(13U, 13U, 128U), PadStrideInfo(1, 1, 1, 1)); } }; @@ -66,13 +73,17 @@ class AlexNetDirectConvolutionLayerDataset final : public ConvolutionLayerDatase public: AlexNetDirectConvolutionLayerDataset() { - add_config(TensorShape(27U, 27U, 48U), TensorShape(5U, 5U, 48U, 128U), TensorShape(128U), TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 2, 2)); - add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 384U), TensorShape(384U), TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 128U), TensorShape(128U), TensorShape(13U, 13U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(27U, 27U, 48U), TensorShape(5U, 5U, 48U, 128U), TensorShape(128U), + TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(3U, 3U, 256U, 384U), TensorShape(384U), + TensorShape(13U, 13U, 384U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), + TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 192U), TensorShape(3U, 3U, 192U, 128U), TensorShape(128U), + TensorShape(13U, 13U, 128U), PadStrideInfo(1, 1, 1, 1)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_ALEXNET_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETCONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/alexnet/AlexNetFullyConnectedLayerDataset.h b/tests/datasets/system_tests/alexnet/AlexNetFullyConnectedLayerDataset.h index b4c367b39ce..bfba2a9a977 100644 --- a/tests/datasets/system_tests/alexnet/AlexNetFullyConnectedLayerDataset.h +++ b/tests/datasets/system_tests/alexnet/AlexNetFullyConnectedLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_ALEXNET_FULLYCONNECTED_LAYER_DATASET -#define ARM_COMPUTE_TEST_ALEXNET_FULLYCONNECTED_LAYER_DATASET - -#include "tests/datasets/FullyConnectedLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETFULLYCONNECTEDLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETFULLYCONNECTEDLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/FullyConnectedLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -50,4 +49,4 @@ class AlexNetFullyConnectedLayerDataset final : public FullyConnectedLayerDatase } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_ALEXNET_FULLYCONNECTED_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETFULLYCONNECTEDLAYERDATASET_H diff --git a/tests/datasets/system_tests/alexnet/AlexNetNormalizationLayerDataset.h b/tests/datasets/system_tests/alexnet/AlexNetNormalizationLayerDataset.h index 62c9855b5de..e25ce3a40b6 100644 --- a/tests/datasets/system_tests/alexnet/AlexNetNormalizationLayerDataset.h +++ b/tests/datasets/system_tests/alexnet/AlexNetNormalizationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,32 +21,30 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_ALEXNET_NORMALIZATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_ALEXNET_NORMALIZATION_LAYER_DATASET - -#include "tests/framework/datasets/Datasets.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETNORMALIZATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETNORMALIZATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/framework/datasets/Datasets.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test { namespace datasets { -class AlexNetNormalizationLayerDataset final : public - framework::dataset::CartesianProductDataset, framework::dataset::SingletonDataset> +class AlexNetNormalizationLayerDataset final + : public framework::dataset::CartesianProductDataset, + framework::dataset::SingletonDataset> { public: AlexNetNormalizationLayerDataset() - : CartesianProductDataset - { - framework::dataset::make("Shape", { TensorShape(55U, 55U, 96U), TensorShape(27U, 27U, 256U) }), - framework::dataset::make("Info", NormalizationLayerInfo(NormType::CROSS_MAP, 5, 0.0001f, 0.75f)) - } + : CartesianProductDataset{ + framework::dataset::make("Shape", {TensorShape(55U, 55U, 96U), TensorShape(27U, 27U, 256U)}), + framework::dataset::make("Info", NormalizationLayerInfo(NormType::CROSS_MAP, 5, 0.0001f, 0.75f))} { } AlexNetNormalizationLayerDataset(AlexNetNormalizationLayerDataset &&) = default; @@ -55,4 +53,4 @@ class AlexNetNormalizationLayerDataset final : public } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_ALEXNET_NORMALIZATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETNORMALIZATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/alexnet/AlexNetPoolingLayerDataset.h b/tests/datasets/system_tests/alexnet/AlexNetPoolingLayerDataset.h index 4874ce972c9..8fba4849f19 100644 --- a/tests/datasets/system_tests/alexnet/AlexNetPoolingLayerDataset.h +++ b/tests/datasets/system_tests/alexnet/AlexNetPoolingLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_ALEXNET_POOLING_LAYER_DATASET -#define ARM_COMPUTE_TEST_ALEXNET_POOLING_LAYER_DATASET - -#include "tests/datasets/PoolingLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETPOOLINGLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETPOOLINGLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/PoolingLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -50,4 +49,4 @@ class AlexNetPoolingLayerDataset final : public PoolingLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_ALEXNET_POOLING_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_ALEXNET_ALEXNETPOOLINGLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ActivationLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ActivationLayerDataset.h index cb72b25f91d..3632dfe1b89 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ActivationLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ActivationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,97 +21,97 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_ACTIVATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_ACTIVATION_LAYER_DATASET - -#include "tests/framework/datasets/Datasets.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1ACTIVATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1ACTIVATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/framework/datasets/Datasets.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test { namespace datasets { -class GoogLeNetInceptionV1ActivationLayerDataset final : public - framework::dataset::CartesianProductDataset, framework::dataset::SingletonDataset> +class GoogLeNetInceptionV1ActivationLayerDataset final + : public framework::dataset::CartesianProductDataset, + framework::dataset::SingletonDataset> { public: GoogLeNetInceptionV1ActivationLayerDataset() - : CartesianProductDataset - { - framework::dataset::make("Shape", { // conv1/relu_7x7 - TensorShape(112U, 112U, 64U), - // conv2/relu_3x3_reduce - TensorShape(56U, 56U, 64U), - // conv2/relu_3x3 - TensorShape(56U, 56U, 192U), - // inception_3a/relu_1x1, inception_3b/relu_pool_proj - TensorShape(28U, 28U, 64U), - // inception_3a/relu_3x3_reduce, inception_3b/relu_5x5 - TensorShape(28U, 28U, 96U), - // inception_3a/relu_3x3, inception_3b/relu_1x1, inception_3b/relu_3x3_reduce - TensorShape(28U, 28U, 128U), - // inception_3a/relu_5x5_reduce - TensorShape(28U, 28U, 16U), - // inception_3a/relu_5x5, inception_3a/relu_pool_proj, inception_3b/relu_5x5_reduce - TensorShape(28U, 28U, 32U), - // inception_3b/relu_3x3 - TensorShape(28U, 28U, 192U), - // inception_4a/relu_1x1 - TensorShape(14U, 14U, 192U), - // inception_4a/relu_3x3_reduce - TensorShape(14U, 14U, 96U), - // inception_4a/relu_3x3 - TensorShape(14U, 14U, 208U), - // inception_4a/relu_5x5_reduce - TensorShape(14U, 14U, 16U), - // inception_4a/relu_5x5 - TensorShape(14U, 14U, 48U), - // inception_4a/relu_pool_proj, inception_4b/relu_5x5, inception_4b/relu_pool_proj, inception_4c/relu_5x5, inception_4c/relu_pool_proj, inception_4d/relu_5x5, inception_4d/relu_pool_proj - TensorShape(14U, 14U, 64U), - // inception_4b/relu_1x1, inception_4e/relu_3x3_reduce - TensorShape(14U, 14U, 160U), - // inception_4b/relu_3x3_reduce, inception_4d/relu_1x1 - TensorShape(14U, 14U, 112U), - // inception_4b/relu_3x3 - TensorShape(14U, 14U, 224U), - // inception_4b/relu_5x5_reduce, inception_4c/relu_5x5_reduce - TensorShape(14U, 14U, 24U), - // inception_4c/relu_1x1, inception_4c/relu_3x3_reduce, inception_4e/relu_5x5, inception_4e/relu_pool_proj - TensorShape(14U, 14U, 128U), - // inception_4c/relu_3x3, inception_4e/relu_1x1 - TensorShape(14U, 14U, 256U), - // inception_4d/relu_3x3_reduce - TensorShape(14U, 14U, 144U), - // inception_4d/relu_3x3 - TensorShape(14U, 14U, 288U), - // inception_4d/relu_5x5_reduce, inception_4e/relu_5x5_reduce - TensorShape(14U, 14U, 32U), - // inception_4e/relu_3x3 - TensorShape(14U, 14U, 320U), - // inception_5a/relu_1x1 - TensorShape(7U, 7U, 256U), - // inception_5a/relu_3x3_reduce - TensorShape(7U, 7U, 160U), - // inception_5a/relu_3x3 - TensorShape(7U, 7U, 320U), - // inception_5a/relu_5x5_reduce - TensorShape(7U, 7U, 32U), - // inception_5a/relu_5x5, inception_5a/relu_pool_proj, inception_5b/relu_5x5, inception_5b/relu_pool_proj - TensorShape(7U, 7U, 128U), - // inception_5b/relu_1x1, inception_5b/relu_3x3 - TensorShape(7U, 7U, 384U), - // inception_5b/relu_3x3_reduce - TensorShape(7U, 7U, 192U), - // inception_5b/relu_5x5_reduce - TensorShape(7U, 7U, 48U) }), - framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)) - } + : CartesianProductDataset{ + framework::dataset::make( + "Shape", + {// conv1/relu_7x7 + TensorShape(112U, 112U, 64U), + // conv2/relu_3x3_reduce + TensorShape(56U, 56U, 64U), + // conv2/relu_3x3 + TensorShape(56U, 56U, 192U), + // inception_3a/relu_1x1, inception_3b/relu_pool_proj + TensorShape(28U, 28U, 64U), + // inception_3a/relu_3x3_reduce, inception_3b/relu_5x5 + TensorShape(28U, 28U, 96U), + // inception_3a/relu_3x3, inception_3b/relu_1x1, inception_3b/relu_3x3_reduce + TensorShape(28U, 28U, 128U), + // inception_3a/relu_5x5_reduce + TensorShape(28U, 28U, 16U), + // inception_3a/relu_5x5, inception_3a/relu_pool_proj, inception_3b/relu_5x5_reduce + TensorShape(28U, 28U, 32U), + // inception_3b/relu_3x3 + TensorShape(28U, 28U, 192U), + // inception_4a/relu_1x1 + TensorShape(14U, 14U, 192U), + // inception_4a/relu_3x3_reduce + TensorShape(14U, 14U, 96U), + // inception_4a/relu_3x3 + TensorShape(14U, 14U, 208U), + // inception_4a/relu_5x5_reduce + TensorShape(14U, 14U, 16U), + // inception_4a/relu_5x5 + TensorShape(14U, 14U, 48U), + // inception_4a/relu_pool_proj, inception_4b/relu_5x5, inception_4b/relu_pool_proj, inception_4c/relu_5x5, inception_4c/relu_pool_proj, inception_4d/relu_5x5, inception_4d/relu_pool_proj + TensorShape(14U, 14U, 64U), + // inception_4b/relu_1x1, inception_4e/relu_3x3_reduce + TensorShape(14U, 14U, 160U), + // inception_4b/relu_3x3_reduce, inception_4d/relu_1x1 + TensorShape(14U, 14U, 112U), + // inception_4b/relu_3x3 + TensorShape(14U, 14U, 224U), + // inception_4b/relu_5x5_reduce, inception_4c/relu_5x5_reduce + TensorShape(14U, 14U, 24U), + // inception_4c/relu_1x1, inception_4c/relu_3x3_reduce, inception_4e/relu_5x5, inception_4e/relu_pool_proj + TensorShape(14U, 14U, 128U), + // inception_4c/relu_3x3, inception_4e/relu_1x1 + TensorShape(14U, 14U, 256U), + // inception_4d/relu_3x3_reduce + TensorShape(14U, 14U, 144U), + // inception_4d/relu_3x3 + TensorShape(14U, 14U, 288U), + // inception_4d/relu_5x5_reduce, inception_4e/relu_5x5_reduce + TensorShape(14U, 14U, 32U), + // inception_4e/relu_3x3 + TensorShape(14U, 14U, 320U), + // inception_5a/relu_1x1 + TensorShape(7U, 7U, 256U), + // inception_5a/relu_3x3_reduce + TensorShape(7U, 7U, 160U), + // inception_5a/relu_3x3 + TensorShape(7U, 7U, 320U), + // inception_5a/relu_5x5_reduce + TensorShape(7U, 7U, 32U), + // inception_5a/relu_5x5, inception_5a/relu_pool_proj, inception_5b/relu_5x5, inception_5b/relu_pool_proj + TensorShape(7U, 7U, 128U), + // inception_5b/relu_1x1, inception_5b/relu_3x3 + TensorShape(7U, 7U, 384U), + // inception_5b/relu_3x3_reduce + TensorShape(7U, 7U, 192U), + // inception_5b/relu_5x5_reduce + TensorShape(7U, 7U, 48U)}), + framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))} { } GoogLeNetInceptionV1ActivationLayerDataset(GoogLeNetInceptionV1ActivationLayerDataset &&) = default; @@ -120,4 +120,4 @@ class GoogLeNetInceptionV1ActivationLayerDataset final : public } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_ACTIVATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1ACTIVATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ConvolutionLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ConvolutionLayerDataset.h index 5588c097293..6593c05607f 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ConvolutionLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1CONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1CONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,25 +42,35 @@ class GoogLeNetInceptionV1WinogradLayerDataset final : public ConvolutionLayerDa // GoogLeNetInceptionV1 inception v1 dataset GoogLeNetInceptionV1WinogradLayerDataset() { - add_config(TensorShape(56U, 56U, 64U), TensorShape(3U, 3U, 64U, 192U), TensorShape(192U), TensorShape(56U, 56U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(56U, 56U, 64U), TensorShape(3U, 3U, 64U, 192U), TensorShape(192U), + TensorShape(56U, 56U, 192U), PadStrideInfo(1, 1, 1, 1)); // inception_3a/3x3 - add_config(TensorShape(28U, 28U, 96U), TensorShape(3U, 3U, 96U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 96U), TensorShape(3U, 3U, 96U, 128U), TensorShape(128U), + TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1)); // inception_3b/3x3 - add_config(TensorShape(28U, 28U, 128U), TensorShape(3U, 3U, 128U, 192U), TensorShape(192U), TensorShape(28U, 28U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 128U), TensorShape(3U, 3U, 128U, 192U), TensorShape(192U), + TensorShape(28U, 28U, 192U), PadStrideInfo(1, 1, 1, 1)); // inception_4a/3x3 - add_config(TensorShape(14U, 14U, 96U), TensorShape(3U, 3U, 96U, 208U), TensorShape(208U), TensorShape(14U, 14U, 208U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 96U), TensorShape(3U, 3U, 96U, 208U), TensorShape(208U), + TensorShape(14U, 14U, 208U), PadStrideInfo(1, 1, 1, 1)); // inception_4b/3x3 - add_config(TensorShape(14U, 14U, 112U), TensorShape(3U, 3U, 112U, 224U), TensorShape(224U), TensorShape(14U, 14U, 224U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 112U), TensorShape(3U, 3U, 112U, 224U), TensorShape(224U), + TensorShape(14U, 14U, 224U), PadStrideInfo(1, 1, 1, 1)); // inception_4c/3x3 - add_config(TensorShape(14U, 14U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), + TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 1, 1)); // inception_4d/3x3 - add_config(TensorShape(14U, 14U, 144U), TensorShape(3U, 3U, 144U, 288U), TensorShape(288U), TensorShape(14U, 14U, 288U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 144U), TensorShape(3U, 3U, 144U, 288U), TensorShape(288U), + TensorShape(14U, 14U, 288U), PadStrideInfo(1, 1, 1, 1)); // inception_4e/3x3 - add_config(TensorShape(14U, 14U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(14U, 14U, 320U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), + TensorShape(14U, 14U, 320U), PadStrideInfo(1, 1, 1, 1)); // inception_5a/3x3 - add_config(TensorShape(7U, 7U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(7U, 7U, 320U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(7U, 7U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), + TensorShape(7U, 7U, 320U), PadStrideInfo(1, 1, 1, 1)); // inception_5b/3x3 - add_config(TensorShape(7U, 7U, 192U), TensorShape(3U, 3U, 192U, 384U), TensorShape(384U), TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(7U, 7U, 192U), TensorShape(3U, 3U, 192U, 384U), TensorShape(384U), + TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 1, 1)); } }; @@ -72,103 +81,152 @@ class GoogLeNetInceptionV1ConvolutionLayerDataset final : public ConvolutionLaye GoogLeNetInceptionV1ConvolutionLayerDataset() { // conv1/7x7_s2 - add_config(TensorShape(224U, 224U, 3U), TensorShape(7U, 7U, 3U, 64U), TensorShape(64U), TensorShape(112U, 112U, 64U), PadStrideInfo(2, 2, 3, 3)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(7U, 7U, 3U, 64U), TensorShape(64U), + TensorShape(112U, 112U, 64U), PadStrideInfo(2, 2, 3, 3)); // conv2/3x3_reduce - add_config(TensorShape(56U, 56U, 64U), TensorShape(1U, 1U, 64U, 64U), TensorShape(64U), TensorShape(56U, 56U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(56U, 56U, 64U), TensorShape(1U, 1U, 64U, 64U), TensorShape(64U), + TensorShape(56U, 56U, 64U), PadStrideInfo(1, 1, 0, 0)); // conv2/3x3 - add_config(TensorShape(56U, 56U, 64U), TensorShape(3U, 3U, 64U, 192U), TensorShape(192U), TensorShape(56U, 56U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(56U, 56U, 64U), TensorShape(3U, 3U, 64U, 192U), TensorShape(192U), + TensorShape(56U, 56U, 192U), PadStrideInfo(1, 1, 1, 1)); // inception_3a/1x1 - add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 64U), TensorShape(64U), TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 64U), TensorShape(64U), + TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_3a/3x3_reduce - add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 96U), TensorShape(96U), TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 96U), TensorShape(96U), + TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 0, 0)); // inception_3a/3x3 - add_config(TensorShape(28U, 28U, 96U), TensorShape(3U, 3U, 96U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 96U), TensorShape(3U, 3U, 96U, 128U), TensorShape(128U), + TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1)); // inception_3a/5x5_reduce - add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 16U), TensorShape(16U), TensorShape(28U, 28U, 16U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 16U), TensorShape(16U), + TensorShape(28U, 28U, 16U), PadStrideInfo(1, 1, 0, 0)); // inception_3a/5x5 - add_config(TensorShape(28U, 28U, 16U), TensorShape(5U, 5U, 16U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(28U, 28U, 16U), TensorShape(5U, 5U, 16U, 32U), TensorShape(32U), + TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 2, 2)); // inception_3a/pool_proj - add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 32U), TensorShape(32U), + TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_3b/1x1, inception_3b/3x3_reduce - add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 128U), TensorShape(128U), + TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 0)); // inception_3b/3x3 - add_config(TensorShape(28U, 28U, 128U), TensorShape(3U, 3U, 128U, 192U), TensorShape(192U), TensorShape(28U, 28U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 128U), TensorShape(3U, 3U, 128U, 192U), TensorShape(192U), + TensorShape(28U, 28U, 192U), PadStrideInfo(1, 1, 1, 1)); // inception_3b/5x5_reduce - add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 32U), TensorShape(32U), + TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_3b/5x5 - add_config(TensorShape(28U, 28U, 32U), TensorShape(5U, 5U, 32U, 96U), TensorShape(96U), TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(28U, 28U, 32U), TensorShape(5U, 5U, 32U, 96U), TensorShape(96U), + TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 2, 2)); // inception_3b/pool_proj - add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 64U), TensorShape(64U), TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 64U), TensorShape(64U), + TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_4a/1x1 - add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 192U), TensorShape(192U), TensorShape(14U, 14U, 192U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 192U), TensorShape(192U), + TensorShape(14U, 14U, 192U), PadStrideInfo(1, 1, 0, 0)); // inception_4a/3x3_reduce - add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 96U), TensorShape(96U), TensorShape(14U, 14U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 96U), TensorShape(96U), + TensorShape(14U, 14U, 96U), PadStrideInfo(1, 1, 0, 0)); // inception_4a/3x3 - add_config(TensorShape(14U, 14U, 96U), TensorShape(3U, 3U, 96U, 208U), TensorShape(208U), TensorShape(14U, 14U, 208U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 96U), TensorShape(3U, 3U, 96U, 208U), TensorShape(208U), + TensorShape(14U, 14U, 208U), PadStrideInfo(1, 1, 1, 1)); // inception_4a/5x5_reduce - add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 16U), TensorShape(16U), TensorShape(14U, 14U, 16U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 16U), TensorShape(16U), + TensorShape(14U, 14U, 16U), PadStrideInfo(1, 1, 0, 0)); // inception_4a/5x5 - add_config(TensorShape(14U, 14U, 16U), TensorShape(5U, 5U, 16U, 48U), TensorShape(48U), TensorShape(14U, 14U, 48U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(14U, 14U, 16U), TensorShape(5U, 5U, 16U, 48U), TensorShape(48U), + TensorShape(14U, 14U, 48U), PadStrideInfo(1, 1, 2, 2)); // inception_4a/pool_proj - add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 64U), TensorShape(64U), + TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_4b/1x1 - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 160U), TensorShape(160U), TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 160U), TensorShape(160U), + TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0)); // inception_4b/3x3_reduce, inception_4d/1x1 - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 112U), TensorShape(112U), TensorShape(14U, 14U, 112U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 112U), TensorShape(112U), + TensorShape(14U, 14U, 112U), PadStrideInfo(1, 1, 0, 0)); // inception_4b/3x3 - add_config(TensorShape(14U, 14U, 112U), TensorShape(3U, 3U, 112U, 224U), TensorShape(224U), TensorShape(14U, 14U, 224U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 112U), TensorShape(3U, 3U, 112U, 224U), TensorShape(224U), + TensorShape(14U, 14U, 224U), PadStrideInfo(1, 1, 1, 1)); // inception_4b/5x5_reduce, inception_4c/5x5_reduce - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 24U), TensorShape(24U), TensorShape(14U, 14U, 24U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 24U), TensorShape(24U), + TensorShape(14U, 14U, 24U), PadStrideInfo(1, 1, 0, 0)); // inception_4b/5x5, inception_4c/5x5 - add_config(TensorShape(14U, 14U, 24U), TensorShape(5U, 5U, 24U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(14U, 14U, 24U), TensorShape(5U, 5U, 24U, 64U), TensorShape(64U), + TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2)); // inception_4b/pool_proj, inception_4c/pool_proj, inception_4d/pool_proj - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 64U), TensorShape(64U), + TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_4c/1x1, inception_4c/3x3_reduce - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 128U), TensorShape(128U), + TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0)); // inception_4c/3x3 - add_config(TensorShape(14U, 14U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), + TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 1, 1)); // inception_4d/3x3_reduce - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 144U), TensorShape(144U), TensorShape(14U, 14U, 144U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 144U), TensorShape(144U), + TensorShape(14U, 14U, 144U), PadStrideInfo(1, 1, 0, 0)); // inception_4d/3x3 - add_config(TensorShape(14U, 14U, 144U), TensorShape(3U, 3U, 144U, 288U), TensorShape(288U), TensorShape(14U, 14U, 288U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 144U), TensorShape(3U, 3U, 144U, 288U), TensorShape(288U), + TensorShape(14U, 14U, 288U), PadStrideInfo(1, 1, 1, 1)); // inception_4d/5x5_reduce - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 32U), TensorShape(32U), TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 32U), TensorShape(32U), + TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_4d/5x5 - add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 64U), TensorShape(64U), + TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2)); // inception_4e/1x1 - add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 256U), TensorShape(256U), TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 256U), TensorShape(256U), + TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 0, 0)); // inception_4e/3x3_reduce - add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 160U), TensorShape(160U), TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 160U), TensorShape(160U), + TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0)); // inception_4e/3x3 - add_config(TensorShape(14U, 14U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(14U, 14U, 320U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), + TensorShape(14U, 14U, 320U), PadStrideInfo(1, 1, 1, 1)); // inception_4e/5x5_reduce - add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 32U), TensorShape(32U), TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 32U), TensorShape(32U), + TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_4e/5x5 - add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), + TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 2, 2)); // inception_4e/pool_proj - add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 128U), TensorShape(128U), + TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0)); // inception_5a/1x1 - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 256U), TensorShape(256U), TensorShape(7U, 7U, 256U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 256U), TensorShape(256U), + TensorShape(7U, 7U, 256U), PadStrideInfo(1, 1, 0, 0)); // inception_5a/3x3_reduce - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 160U), TensorShape(160U), TensorShape(7U, 7U, 160U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 160U), TensorShape(160U), + TensorShape(7U, 7U, 160U), PadStrideInfo(1, 1, 0, 0)); // inception_5a/3x3 - add_config(TensorShape(7U, 7U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(7U, 7U, 320U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(7U, 7U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), + TensorShape(7U, 7U, 320U), PadStrideInfo(1, 1, 1, 1)); // inception_5a/5x5_reduce - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 32U), TensorShape(32U), TensorShape(7U, 7U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 32U), TensorShape(32U), + TensorShape(7U, 7U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_5a/5x5 - add_config(TensorShape(7U, 7U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(7U, 7U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), + TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2)); // inception_5a/pool_proj, inception_5b/pool_proj - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 128U), TensorShape(128U), + TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 0, 0)); // inception_5b/1x1 - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 384U), TensorShape(384U), TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 384U), TensorShape(384U), + TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 0, 0)); // inception_5b/3x3_reduce - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 192U), TensorShape(192U), TensorShape(7U, 7U, 192U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 192U), TensorShape(192U), + TensorShape(7U, 7U, 192U), PadStrideInfo(1, 1, 0, 0)); // inception_5b/3x3 - add_config(TensorShape(7U, 7U, 192U), TensorShape(3U, 3U, 192U, 384U), TensorShape(384U), TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(7U, 7U, 192U), TensorShape(3U, 3U, 192U, 384U), TensorShape(384U), + TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 1, 1)); // inception_5b/5x5_reduce - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 48U), TensorShape(48U), TensorShape(7U, 7U, 48U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 48U), TensorShape(48U), + TensorShape(7U, 7U, 48U), PadStrideInfo(1, 1, 0, 0)); // inception_5b/5x5 - add_config(TensorShape(7U, 7U, 48U), TensorShape(5U, 5U, 48U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(7U, 7U, 48U), TensorShape(5U, 5U, 48U, 128U), TensorShape(128U), + TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2)); } }; @@ -179,105 +237,153 @@ class GoogLeNetInceptionV1DirectConvolutionLayerDataset final : public Convoluti GoogLeNetInceptionV1DirectConvolutionLayerDataset() { // conv2/3x3_reduce - add_config(TensorShape(56U, 56U, 64U), TensorShape(1U, 1U, 64U, 64U), TensorShape(64U), TensorShape(56U, 56U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(56U, 56U, 64U), TensorShape(1U, 1U, 64U, 64U), TensorShape(64U), + TensorShape(56U, 56U, 64U), PadStrideInfo(1, 1, 0, 0)); // conv2/3x3 - add_config(TensorShape(56U, 56U, 64U), TensorShape(3U, 3U, 64U, 192U), TensorShape(192U), TensorShape(56U, 56U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(56U, 56U, 64U), TensorShape(3U, 3U, 64U, 192U), TensorShape(192U), + TensorShape(56U, 56U, 192U), PadStrideInfo(1, 1, 1, 1)); // inception_3a/1x1 - add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 64U), TensorShape(64U), TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 64U), TensorShape(64U), + TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_3a/3x3_reduce - add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 96U), TensorShape(96U), TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 96U), TensorShape(96U), + TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 0, 0)); // inception_3a/3x3 - add_config(TensorShape(28U, 28U, 96U), TensorShape(3U, 3U, 96U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 96U), TensorShape(3U, 3U, 96U, 128U), TensorShape(128U), + TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1)); // inception_3a/5x5_reduce - add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 16U), TensorShape(16U), TensorShape(28U, 28U, 16U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 16U), TensorShape(16U), + TensorShape(28U, 28U, 16U), PadStrideInfo(1, 1, 0, 0)); // inception_3a/5x5 - add_config(TensorShape(28U, 28U, 16U), TensorShape(5U, 5U, 16U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(28U, 28U, 16U), TensorShape(5U, 5U, 16U, 32U), TensorShape(32U), + TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 2, 2)); // inception_3a/pool_proj - add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 32U), TensorShape(32U), + TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_3b/1x1, inception_3b/3x3_reduce - add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 128U), TensorShape(128U), + TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 0)); // inception_3b/3x3 - add_config(TensorShape(28U, 28U, 128U), TensorShape(3U, 3U, 128U, 192U), TensorShape(192U), TensorShape(28U, 28U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 128U), TensorShape(3U, 3U, 128U, 192U), TensorShape(192U), + TensorShape(28U, 28U, 192U), PadStrideInfo(1, 1, 1, 1)); // inception_3b/5x5_reduce - add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 32U), TensorShape(32U), + TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_3b/5x5 - add_config(TensorShape(28U, 28U, 32U), TensorShape(5U, 5U, 32U, 96U), TensorShape(96U), TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(28U, 28U, 32U), TensorShape(5U, 5U, 32U, 96U), TensorShape(96U), + TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 2, 2)); // inception_3b/pool_proj - add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 64U), TensorShape(64U), TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 64U), TensorShape(64U), + TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_4a/1x1 - add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 192U), TensorShape(192U), TensorShape(14U, 14U, 192U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 192U), TensorShape(192U), + TensorShape(14U, 14U, 192U), PadStrideInfo(1, 1, 0, 0)); // inception_4a/3x3_reduce - add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 96U), TensorShape(96U), TensorShape(14U, 14U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 96U), TensorShape(96U), + TensorShape(14U, 14U, 96U), PadStrideInfo(1, 1, 0, 0)); // inception_4a/3x3 - add_config(TensorShape(14U, 14U, 96U), TensorShape(3U, 3U, 96U, 208U), TensorShape(208U), TensorShape(14U, 14U, 208U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 96U), TensorShape(3U, 3U, 96U, 208U), TensorShape(208U), + TensorShape(14U, 14U, 208U), PadStrideInfo(1, 1, 1, 1)); // inception_4a/5x5_reduce - add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 16U), TensorShape(16U), TensorShape(14U, 14U, 16U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 16U), TensorShape(16U), + TensorShape(14U, 14U, 16U), PadStrideInfo(1, 1, 0, 0)); // inception_4a/5x5 - add_config(TensorShape(14U, 14U, 16U), TensorShape(5U, 5U, 16U, 48U), TensorShape(48U), TensorShape(14U, 14U, 48U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(14U, 14U, 16U), TensorShape(5U, 5U, 16U, 48U), TensorShape(48U), + TensorShape(14U, 14U, 48U), PadStrideInfo(1, 1, 2, 2)); // inception_4a/pool_proj - add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 64U), TensorShape(64U), + TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_4b/1x1 - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 160U), TensorShape(160U), TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 160U), TensorShape(160U), + TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0)); // inception_4b/3x3_reduce, inception_4d/1x1 - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 112U), TensorShape(112U), TensorShape(14U, 14U, 112U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 112U), TensorShape(112U), + TensorShape(14U, 14U, 112U), PadStrideInfo(1, 1, 0, 0)); // inception_4b/3x3 - add_config(TensorShape(14U, 14U, 112U), TensorShape(3U, 3U, 112U, 224U), TensorShape(224U), TensorShape(14U, 14U, 224U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 112U), TensorShape(3U, 3U, 112U, 224U), TensorShape(224U), + TensorShape(14U, 14U, 224U), PadStrideInfo(1, 1, 1, 1)); // inception_4b/5x5_reduce, inception_4c/5x5_reduce - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 24U), TensorShape(24U), TensorShape(14U, 14U, 24U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 24U), TensorShape(24U), + TensorShape(14U, 14U, 24U), PadStrideInfo(1, 1, 0, 0)); // inception_4b/5x5, inception_4c/5x5 - add_config(TensorShape(14U, 14U, 24U), TensorShape(5U, 5U, 24U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(14U, 14U, 24U), TensorShape(5U, 5U, 24U, 64U), TensorShape(64U), + TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2)); // inception_4b/pool_proj, inception_4c/pool_proj, inception_4d/pool_proj - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 64U), TensorShape(64U), + TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_4c/1x1, inception_4c/3x3_reduce - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 128U), TensorShape(128U), + TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0)); // inception_4c/3x3 - add_config(TensorShape(14U, 14U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), + TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 1, 1)); // inception_4d/3x3_reduce - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 144U), TensorShape(144U), TensorShape(14U, 14U, 144U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 144U), TensorShape(144U), + TensorShape(14U, 14U, 144U), PadStrideInfo(1, 1, 0, 0)); // inception_4d/3x3 - add_config(TensorShape(14U, 14U, 144U), TensorShape(3U, 3U, 144U, 288U), TensorShape(288U), TensorShape(14U, 14U, 288U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 144U), TensorShape(3U, 3U, 144U, 288U), TensorShape(288U), + TensorShape(14U, 14U, 288U), PadStrideInfo(1, 1, 1, 1)); // inception_4d/5x5_reduce - add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 32U), TensorShape(32U), TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 32U), TensorShape(32U), + TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_4d/5x5 - add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 64U), TensorShape(64U), + TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2)); // inception_4e/1x1 - add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 256U), TensorShape(256U), TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 256U), TensorShape(256U), + TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 0, 0)); // inception_4e/3x3_reduce - add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 160U), TensorShape(160U), TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 160U), TensorShape(160U), + TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0)); // inception_4e/3x3 - add_config(TensorShape(14U, 14U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(14U, 14U, 320U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), + TensorShape(14U, 14U, 320U), PadStrideInfo(1, 1, 1, 1)); // inception_4e/5x5_reduce - add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 32U), TensorShape(32U), TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 32U), TensorShape(32U), + TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_4e/5x5 - add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), + TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 2, 2)); // inception_4e/pool_proj - add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 128U), TensorShape(128U), + TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0)); // inception_5a/1x1 - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 256U), TensorShape(256U), TensorShape(7U, 7U, 256U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 256U), TensorShape(256U), + TensorShape(7U, 7U, 256U), PadStrideInfo(1, 1, 0, 0)); // inception_5a/3x3_reduce - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 160U), TensorShape(160U), TensorShape(7U, 7U, 160U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 160U), TensorShape(160U), + TensorShape(7U, 7U, 160U), PadStrideInfo(1, 1, 0, 0)); // inception_5a/3x3 - add_config(TensorShape(7U, 7U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(7U, 7U, 320U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(7U, 7U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), + TensorShape(7U, 7U, 320U), PadStrideInfo(1, 1, 1, 1)); // inception_5a/5x5_reduce - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 32U), TensorShape(32U), TensorShape(7U, 7U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 32U), TensorShape(32U), + TensorShape(7U, 7U, 32U), PadStrideInfo(1, 1, 0, 0)); // inception_5a/5x5 - add_config(TensorShape(7U, 7U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(7U, 7U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), + TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2)); // inception_5a/pool_proj, inception_5b/pool_proj - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 128U), TensorShape(128U), + TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 0, 0)); // inception_5b/1x1 - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 384U), TensorShape(384U), TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 384U), TensorShape(384U), + TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 0, 0)); // inception_5b/3x3_reduce - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 192U), TensorShape(192U), TensorShape(7U, 7U, 192U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 192U), TensorShape(192U), + TensorShape(7U, 7U, 192U), PadStrideInfo(1, 1, 0, 0)); // inception_5b/3x3 - add_config(TensorShape(7U, 7U, 192U), TensorShape(3U, 3U, 192U, 384U), TensorShape(384U), TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(7U, 7U, 192U), TensorShape(3U, 3U, 192U, 384U), TensorShape(384U), + TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 1, 1)); // inception_5b/5x5_reduce - add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 48U), TensorShape(48U), TensorShape(7U, 7U, 48U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 48U), TensorShape(48U), + TensorShape(7U, 7U, 48U), PadStrideInfo(1, 1, 0, 0)); // inception_5b/5x5 - add_config(TensorShape(7U, 7U, 48U), TensorShape(5U, 5U, 48U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2)); + add_config(TensorShape(7U, 7U, 48U), TensorShape(5U, 5U, 48U, 128U), TensorShape(128U), + TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1CONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1FullyConnectedLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1FullyConnectedLayerDataset.h index f968e175a19..9763b633865 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1FullyConnectedLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1FullyConnectedLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_FULLYCONNECTED_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_FULLYCONNECTED_LAYER_DATASET - -#include "tests/datasets/FullyConnectedLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1FULLYCONNECTEDLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1FULLYCONNECTEDLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/FullyConnectedLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -48,4 +47,4 @@ class GoogLeNetInceptionV1FullyConnectedLayerDataset final : public FullyConnect } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_FULLYCONNECTED_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1FULLYCONNECTEDLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1NormalizationLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1NormalizationLayerDataset.h index c572690921b..bf63b7e3367 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1NormalizationLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1NormalizationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,35 +21,34 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_NORMALIZATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_NORMALIZATION_LAYER_DATASET - -#include "tests/framework/datasets/Datasets.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1NORMALIZATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1NORMALIZATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/framework/datasets/Datasets.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test { namespace datasets { -class GoogLeNetInceptionV1NormalizationLayerDataset final : public - framework::dataset::CartesianProductDataset, framework::dataset::SingletonDataset> +class GoogLeNetInceptionV1NormalizationLayerDataset final + : public framework::dataset::CartesianProductDataset, + framework::dataset::SingletonDataset> { public: GoogLeNetInceptionV1NormalizationLayerDataset() - : CartesianProductDataset - { - framework::dataset::make("Shape", { // conv2/norm2 - TensorShape(56U, 56U, 192U), - // pool1/norm1 - TensorShape(56U, 56U, 64U) }), - framework::dataset::make("Info", NormalizationLayerInfo(NormType::CROSS_MAP, 5, 0.0001f, 0.75f)) - } + : CartesianProductDataset{ + framework::dataset::make("Shape", + {// conv2/norm2 + TensorShape(56U, 56U, 192U), + // pool1/norm1 + TensorShape(56U, 56U, 64U)}), + framework::dataset::make("Info", NormalizationLayerInfo(NormType::CROSS_MAP, 5, 0.0001f, 0.75f))} { } GoogLeNetInceptionV1NormalizationLayerDataset(GoogLeNetInceptionV1NormalizationLayerDataset &&) = default; @@ -58,4 +57,4 @@ class GoogLeNetInceptionV1NormalizationLayerDataset final : public } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_NORMALIZATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1NORMALIZATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1PoolingLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1PoolingLayerDataset.h index 8a2dc0ccde1..2dbab0cdec0 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1PoolingLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1PoolingLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_POOLING_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_POOLING_LAYER_DATASET - -#include "tests/datasets/PoolingLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1POOLINGLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1POOLINGLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/PoolingLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -44,28 +43,38 @@ class GoogLeNetInceptionV1PoolingLayerDataset final : public PoolingLayerDataset { // FIXME: Add support for 7x7 pooling layer pool5/7x7_s1 // pool1/3x3_s2 - add_config(TensorShape(112U, 112U, 64U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(112U, 112U, 64U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // pool2/3x3_s2 - add_config(TensorShape(56U, 56U, 192U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(56U, 56U, 192U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // inception_3a/pool - add_config(TensorShape(28U, 28U, 192U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); + add_config(TensorShape(28U, 28U, 192U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); // inception_3b/pool - add_config(TensorShape(28U, 28U, 256U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); + add_config(TensorShape(28U, 28U, 256U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); // pool3/3x3_s2 - add_config(TensorShape(28U, 28U, 480U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(28U, 28U, 480U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // inception_4a/pool - add_config(TensorShape(14U, 14U, 480U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); + add_config(TensorShape(14U, 14U, 480U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); // inception_4b/pool, inception_4c/pool, inception_4d/pool - add_config(TensorShape(14U, 14U, 512U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); + add_config(TensorShape(14U, 14U, 512U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); // inception_4e/pool - add_config(TensorShape(14U, 14U, 528U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); + add_config(TensorShape(14U, 14U, 528U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); // pool4/3x3_s2 - add_config(TensorShape(14U, 14U, 832U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(14U, 14U, 832U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // inception_5a/pool, inception_5b/pool - add_config(TensorShape(7U, 7U, 832U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); + add_config(TensorShape(7U, 7U, 832U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_POOLING_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV1_GOOGLENETINCEPTIONV1POOLINGLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ActivationLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ActivationLayerDataset.h index 2c082ebb8f3..6c0f3263415 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ActivationLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ActivationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,75 +21,75 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_ACTIVATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_ACTIVATION_LAYER_DATASET - -#include "tests/framework/datasets/Datasets.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4ACTIVATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4ACTIVATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/framework/datasets/Datasets.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test { namespace datasets { -class GoogLeNetInceptionV4ActivationLayerDataset final : public - framework::dataset::CartesianProductDataset, framework::dataset::SingletonDataset> +class GoogLeNetInceptionV4ActivationLayerDataset final + : public framework::dataset::CartesianProductDataset, + framework::dataset::SingletonDataset> { public: GoogLeNetInceptionV4ActivationLayerDataset() - : CartesianProductDataset - { - framework::dataset::make("Shape", { // conv1_3x3_s2_relu - TensorShape(149U, 149U, 32U), - // conv2_3x3_s1_relu - TensorShape(147U, 147U, 32U), - // conv3_3x3_s1_relu - TensorShape(147U, 147U, 64U), - // inception_stem1_3x3_s2_relu - TensorShape(73U, 73U, 96U), - // inception_stem2_3x3_reduce_relu, inception_stem2_1x7_reduce_relu, inception_stem2_1x7_relu, inception_stem2_7x1_relu - TensorShape(73U, 73U, 64U), - // inception_stem2_3x3_relu, inception_stem2_3x3_2_relu - TensorShape(71U, 71U, 96U), - // inception_stem3_3x3_s2_relu, reduction_a_3x3_2_reduce_relu - TensorShape(35U, 35U, 192U), - // inception_a1_1x1_2_relu, inception_a1_3x3_relu, inception_a1_3x3_2_relu, inception_a1_3x3_3_relu, inception_a1_1x1_relu, inception_a2_1x1_2_relu, inception_a2_3x3_relu, inception_a2_3x3_2_relu, inception_a2_3x3_3_relu, inception_a2_1x1_relu, inception_a3_1x1_2_relu, inception_a3_3x3_relu, inception_a3_3x3_2_relu, inception_a3_3x3_3_relu, inception_a3_1x1_relu, inception_a4_1x1_2_relu, inception_a4_3x3_relu, inception_a4_3x3_2_relu, inception_a4_3x3_3_relu, inception_a4_1x1_relu - TensorShape(35U, 35U, 96U), - // inception_a1_3x3_reduce_relu, inception_a1_3x3_2_reduce_relu, inception_a2_3x3_reduce_relu, inception_a2_3x3_2_reduce_relu, inception_a3_3x3_reduce_relu, inception_a3_3x3_2_reduce_relu, inception_a4_3x3_reduce_relu, inception_a4_3x3_2_reduce_relu - TensorShape(35U, 35U, 64U), - // reduction_a_3x3_relu, inception_b1_1x1_2_relu, inception_b2_1x1_2_relu, inception_b3_1x1_2_relu, inception_b4_1x1_2_relu, inception_b5_1x1_2_relu, inception_b6_1x1_2_relu, inception_b7_1x1_2_relu - TensorShape(17U, 17U, 384U), - // reduction_a_3x3_2_relu - TensorShape(35U, 35U, 224U), - // reduction_a_3x3_3_relu, inception_b1_7x1_relu, inception_b1_1x7_3_relu, inception_b2_7x1_relu, inception_b2_1x7_3_relu, inception_b3_7x1_relu, inception_b3_1x7_3_relu, inception_b4_7x1_relu, inception_b4_1x7_3_relu, inception_b5_7x1_relu, inception_b5_1x7_3_relu, inception_b6_7x1_relu, inception_b6_1x7_3_relu, inception_b7_7x1_relu, inception_b7_1x7_3_relu, reduction_b_1x7_reduce_relu, reduction_b_1x7_relu - TensorShape(17U, 17U, 256U), - // inception_b1_1x7_reduce_relu, inception_b1_7x1_2_reduce_relu, inception_b1_7x1_2_relu, inception_b2_1x7_reduce_relu, inception_b2_7x1_2_reduce_relu, inception_b2_7x1_2_relu, inception_b3_1x7_reduce_relu, inception_b3_7x1_2_reduce_relu, inception_b3_7x1_2_relu, inception_b4_1x7_reduce_relu, inception_b4_7x1_2_reduce_relu, inception_b4_7x1_2_relu, inception_b5_1x7_reduce_relu, inception_b5_7x1_2_reduce_relu, inception_b5_7x1_2_relu, inception_b6_1x7_reduce_relu, inception_b6_7x1_2_reduce_relu, inception_b6_7x1_2_relu, inception_b7_1x7_reduce_relu, inception_b7_7x1_2_reduce_relu, inception_b7_7x1_2_relu, reduction_b_3x3_reduce_relu - TensorShape(17U, 17U, 192U), - // inception_b1_1x7_relu, inception_b1_1x7_2_relu, inception_b1_7x1_3_relu, inception_b2_1x7_relu, inception_b2_1x7_2_relu, inception_b2_7x1_3_relu, inception_b3_1x7_relu, inception_b3_1x7_2_relu, inception_b3_7x1_3_relu, inception_b4_1x7_relu, inception_b4_1x7_2_relu, inception_b4_7x1_3_relu, inception_b5_1x7_relu, inception_b5_1x7_2_relu, inception_b5_7x1_3_relu, inception_b6_1x7_relu, inception_b6_1x7_2_relu, inception_b6_7x1_3_relu, inception_b7_1x7_relu, inception_b7_1x7_2_relu, inception_b7_7x1_3_relu - TensorShape(17U, 17U, 224U), - // inception_b1_1x1_relu, inception_b2_1x1_relu, inception_b3_1x1_relu, inception_b4_1x1_relu, inception_b5_1x1_relu, inception_b6_1x1_relu, inception_b7_1x1_relu - TensorShape(17U, 17U, 128U), - // reduction_b_3x3_relu - TensorShape(8U, 8U, 192U), - // reduction_b_7x1_relu - TensorShape(17U, 17U, 320U), - // reduction_b_3x3_2_relu - TensorShape(8U, 8U, 320U), - // inception_c1_1x1_2_relu, inception_c1_1x3_relu, inception_c1_3x1_relu, inception_c1_1x3_3_relu, inception_c1_3x1_3_relu, inception_c1_1x1_relu, inception_c2_1x1_2_relu, inception_c2_1x3_relu, inception_c2_3x1_relu, inception_c2_1x3_3_relu, inception_c2_3x1_3_relu, inception_c2_1x1_relu, inception_c3_1x1_2_relu, inception_c3_1x3_relu, inception_c3_3x1_relu, inception_c3_1x3_3_relu, inception_c3_3x1_3_relu, inception_c3_1x1_relu - TensorShape(8U, 8U, 256U), - // inception_c1_1x1_3_relu, inception_c1_1x1_4_relu, inception_c2_1x1_3_relu, inception_c2_1x1_4_relu, inception_c3_1x1_3_relu, inception_c3_1x1_4_relu - TensorShape(8U, 8U, 384U), - // inception_c1_3x1_2_relu, inception_c2_3x1_2_relu, inception_c3_3x1_2_relu - TensorShape(8U, 8U, 448U), - // inception_c1_1x3_2_relu, inception_c2_1x3_2_relu, inception_c3_1x3_2_relu - TensorShape(8U, 8U, 512U) }), - framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)) - } + : CartesianProductDataset{ + framework::dataset::make( + "Shape", + {// conv1_3x3_s2_relu + TensorShape(149U, 149U, 32U), + // conv2_3x3_s1_relu + TensorShape(147U, 147U, 32U), + // conv3_3x3_s1_relu + TensorShape(147U, 147U, 64U), + // inception_stem1_3x3_s2_relu + TensorShape(73U, 73U, 96U), + // inception_stem2_3x3_reduce_relu, inception_stem2_1x7_reduce_relu, inception_stem2_1x7_relu, inception_stem2_7x1_relu + TensorShape(73U, 73U, 64U), + // inception_stem2_3x3_relu, inception_stem2_3x3_2_relu + TensorShape(71U, 71U, 96U), + // inception_stem3_3x3_s2_relu, reduction_a_3x3_2_reduce_relu + TensorShape(35U, 35U, 192U), + // inception_a1_1x1_2_relu, inception_a1_3x3_relu, inception_a1_3x3_2_relu, inception_a1_3x3_3_relu, inception_a1_1x1_relu, inception_a2_1x1_2_relu, inception_a2_3x3_relu, inception_a2_3x3_2_relu, inception_a2_3x3_3_relu, inception_a2_1x1_relu, inception_a3_1x1_2_relu, inception_a3_3x3_relu, inception_a3_3x3_2_relu, inception_a3_3x3_3_relu, inception_a3_1x1_relu, inception_a4_1x1_2_relu, inception_a4_3x3_relu, inception_a4_3x3_2_relu, inception_a4_3x3_3_relu, inception_a4_1x1_relu + TensorShape(35U, 35U, 96U), + // inception_a1_3x3_reduce_relu, inception_a1_3x3_2_reduce_relu, inception_a2_3x3_reduce_relu, inception_a2_3x3_2_reduce_relu, inception_a3_3x3_reduce_relu, inception_a3_3x3_2_reduce_relu, inception_a4_3x3_reduce_relu, inception_a4_3x3_2_reduce_relu + TensorShape(35U, 35U, 64U), + // reduction_a_3x3_relu, inception_b1_1x1_2_relu, inception_b2_1x1_2_relu, inception_b3_1x1_2_relu, inception_b4_1x1_2_relu, inception_b5_1x1_2_relu, inception_b6_1x1_2_relu, inception_b7_1x1_2_relu + TensorShape(17U, 17U, 384U), + // reduction_a_3x3_2_relu + TensorShape(35U, 35U, 224U), + // reduction_a_3x3_3_relu, inception_b1_7x1_relu, inception_b1_1x7_3_relu, inception_b2_7x1_relu, inception_b2_1x7_3_relu, inception_b3_7x1_relu, inception_b3_1x7_3_relu, inception_b4_7x1_relu, inception_b4_1x7_3_relu, inception_b5_7x1_relu, inception_b5_1x7_3_relu, inception_b6_7x1_relu, inception_b6_1x7_3_relu, inception_b7_7x1_relu, inception_b7_1x7_3_relu, reduction_b_1x7_reduce_relu, reduction_b_1x7_relu + TensorShape(17U, 17U, 256U), + // inception_b1_1x7_reduce_relu, inception_b1_7x1_2_reduce_relu, inception_b1_7x1_2_relu, inception_b2_1x7_reduce_relu, inception_b2_7x1_2_reduce_relu, inception_b2_7x1_2_relu, inception_b3_1x7_reduce_relu, inception_b3_7x1_2_reduce_relu, inception_b3_7x1_2_relu, inception_b4_1x7_reduce_relu, inception_b4_7x1_2_reduce_relu, inception_b4_7x1_2_relu, inception_b5_1x7_reduce_relu, inception_b5_7x1_2_reduce_relu, inception_b5_7x1_2_relu, inception_b6_1x7_reduce_relu, inception_b6_7x1_2_reduce_relu, inception_b6_7x1_2_relu, inception_b7_1x7_reduce_relu, inception_b7_7x1_2_reduce_relu, inception_b7_7x1_2_relu, reduction_b_3x3_reduce_relu + TensorShape(17U, 17U, 192U), + // inception_b1_1x7_relu, inception_b1_1x7_2_relu, inception_b1_7x1_3_relu, inception_b2_1x7_relu, inception_b2_1x7_2_relu, inception_b2_7x1_3_relu, inception_b3_1x7_relu, inception_b3_1x7_2_relu, inception_b3_7x1_3_relu, inception_b4_1x7_relu, inception_b4_1x7_2_relu, inception_b4_7x1_3_relu, inception_b5_1x7_relu, inception_b5_1x7_2_relu, inception_b5_7x1_3_relu, inception_b6_1x7_relu, inception_b6_1x7_2_relu, inception_b6_7x1_3_relu, inception_b7_1x7_relu, inception_b7_1x7_2_relu, inception_b7_7x1_3_relu + TensorShape(17U, 17U, 224U), + // inception_b1_1x1_relu, inception_b2_1x1_relu, inception_b3_1x1_relu, inception_b4_1x1_relu, inception_b5_1x1_relu, inception_b6_1x1_relu, inception_b7_1x1_relu + TensorShape(17U, 17U, 128U), + // reduction_b_3x3_relu + TensorShape(8U, 8U, 192U), + // reduction_b_7x1_relu + TensorShape(17U, 17U, 320U), + // reduction_b_3x3_2_relu + TensorShape(8U, 8U, 320U), + // inception_c1_1x1_2_relu, inception_c1_1x3_relu, inception_c1_3x1_relu, inception_c1_1x3_3_relu, inception_c1_3x1_3_relu, inception_c1_1x1_relu, inception_c2_1x1_2_relu, inception_c2_1x3_relu, inception_c2_3x1_relu, inception_c2_1x3_3_relu, inception_c2_3x1_3_relu, inception_c2_1x1_relu, inception_c3_1x1_2_relu, inception_c3_1x3_relu, inception_c3_3x1_relu, inception_c3_1x3_3_relu, inception_c3_3x1_3_relu, inception_c3_1x1_relu + TensorShape(8U, 8U, 256U), + // inception_c1_1x1_3_relu, inception_c1_1x1_4_relu, inception_c2_1x1_3_relu, inception_c2_1x1_4_relu, inception_c3_1x1_3_relu, inception_c3_1x1_4_relu + TensorShape(8U, 8U, 384U), + // inception_c1_3x1_2_relu, inception_c2_3x1_2_relu, inception_c3_3x1_2_relu + TensorShape(8U, 8U, 448U), + // inception_c1_1x3_2_relu, inception_c2_1x3_2_relu, inception_c3_1x3_2_relu + TensorShape(8U, 8U, 512U)}), + framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))} { } GoogLeNetInceptionV4ActivationLayerDataset(GoogLeNetInceptionV4ActivationLayerDataset &&) = default; @@ -98,4 +98,4 @@ class GoogLeNetInceptionV4ActivationLayerDataset final : public } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_ACTIVATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4ACTIVATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4BatchNormalizationLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4BatchNormalizationLayerDataset.h index dfc009b6096..b14e030ca29 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4BatchNormalizationLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4BatchNormalizationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_BATCHNORMALIZATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_BATCHNORMALIZATION_LAYER_DATASET - -#include "tests/datasets/BatchNormalizationLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4BATCHNORMALIZATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4BATCHNORMALIZATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/BatchNormalizationLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -91,4 +90,4 @@ class GoogLeNetInceptionV4BatchNormalizationLayerDataset final : public BatchNor } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_BATCHNORMALIZATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4BATCHNORMALIZATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ConvolutionLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ConvolutionLayerDataset.h index 6480448527f..de2ff723ecc 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ConvolutionLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4CONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4CONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -44,17 +43,23 @@ class GoogLeNetInceptionV4WinogradLayerDataset final : public ConvolutionLayerDa GoogLeNetInceptionV4WinogradLayerDataset() { // conv2_3x3_s1 - add_config(TensorShape(149U, 149U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), TensorShape(147U, 147U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(149U, 149U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), + TensorShape(147U, 147U, 32U), PadStrideInfo(1, 1, 0, 0)); // conv3_3x3_s1 - add_config(TensorShape(147U, 147U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), TensorShape(147U, 147U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(147U, 147U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), + TensorShape(147U, 147U, 64U), PadStrideInfo(1, 1, 1, 1)); // inception_stem2_3x3, inception_stem2_3x3_2 - add_config(TensorShape(73U, 73U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(71U, 71U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(73U, 73U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), + TensorShape(71U, 71U, 96U), PadStrideInfo(1, 1, 0, 0)); // inception_a1_3x3, inception_a1_3x3_2, inception_a2_3x3, inception_a2_3x3_2, inception_a3_3x3, inception_a3_3x3_2, inception_a4_3x3, inception_a4_3x3_2 - add_config(TensorShape(35U, 35U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(35U, 35U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), + TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); // inception_a1_3x3_3, inception_a2_3x3_3, inception_a3_3x3_3, inception_a4_3x3_3 - add_config(TensorShape(35U, 35U, 96U), TensorShape(3U, 3U, 96U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(35U, 35U, 96U), TensorShape(3U, 3U, 96U, 96U), TensorShape(96U), + TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); // reduction_a_3x3_2 - add_config(TensorShape(35U, 35U, 192U), TensorShape(3U, 3U, 192U, 224U), TensorShape(224U), TensorShape(35U, 35U, 224U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(35U, 35U, 192U), TensorShape(3U, 3U, 192U, 224U), TensorShape(224U), + TensorShape(35U, 35U, 224U), PadStrideInfo(1, 1, 1, 1)); } }; @@ -65,81 +70,119 @@ class GoogLeNetInceptionV4ConvolutionLayerDataset final : public ConvolutionLaye GoogLeNetInceptionV4ConvolutionLayerDataset() { // conv1_3x3_s2 - add_config(TensorShape(299U, 299U, 3U), TensorShape(3U, 3U, 3U, 32U), TensorShape(32U), TensorShape(149U, 149U, 32U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(299U, 299U, 3U), TensorShape(3U, 3U, 3U, 32U), TensorShape(32U), + TensorShape(149U, 149U, 32U), PadStrideInfo(2, 2, 0, 0)); // conv2_3x3_s1 - add_config(TensorShape(149U, 149U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), TensorShape(147U, 147U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(149U, 149U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), + TensorShape(147U, 147U, 32U), PadStrideInfo(1, 1, 0, 0)); // conv3_3x3_s1 - add_config(TensorShape(147U, 147U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), TensorShape(147U, 147U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(147U, 147U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), + TensorShape(147U, 147U, 64U), PadStrideInfo(1, 1, 1, 1)); // inception_stem1_3x3_s2 - add_config(TensorShape(147U, 147U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(73U, 73U, 96U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(147U, 147U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), + TensorShape(73U, 73U, 96U), PadStrideInfo(2, 2, 0, 0)); // inception_stem2_3x3_reduce, inception_stem2_1x7_reduce - add_config(TensorShape(73U, 73U, 160U), TensorShape(1U, 1U, 160U, 64U), TensorShape(64U), TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(73U, 73U, 160U), TensorShape(1U, 1U, 160U, 64U), TensorShape(64U), + TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_stem2_3x3, inception_stem2_3x3_2 - add_config(TensorShape(73U, 73U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(71U, 71U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(73U, 73U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), + TensorShape(71U, 71U, 96U), PadStrideInfo(1, 1, 0, 0)); // inception_stem2_1x7 - add_config(TensorShape(73U, 73U, 64U), TensorShape(7U, 1U, 64U, 64U), TensorShape(64U), TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 3, 0)); + add_config(TensorShape(73U, 73U, 64U), TensorShape(7U, 1U, 64U, 64U), TensorShape(64U), + TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 3, 0)); // inception_stem2_7x1 - add_config(TensorShape(73U, 73U, 64U), TensorShape(1U, 7U, 64U, 64U), TensorShape(64U), TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(73U, 73U, 64U), TensorShape(1U, 7U, 64U, 64U), TensorShape(64U), + TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 0, 3)); // inception_stem3_3x3_s2 - add_config(TensorShape(71U, 71U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(35U, 35U, 192U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(71U, 71U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), + TensorShape(35U, 35U, 192U), PadStrideInfo(2, 2, 0, 0)); // inception_a1_1x1_2, inception_a1_1x1, inception_a2_1x1_2, inception_a2_1x1, inception_a3_1x1_2, inception_a3_1x1, inception_a4_1x1_2, inception_a4_1x1 - add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 96U), TensorShape(96U), + TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 0, 0)); // inception_a1_3x3_reduce, inception_a1_3x3_2_reduce, inception_a2_3x3_reduce, inception_a2_3x3_2_reduce, inception_a3_3x3_reduce, inception_a3_3x3_2_reduce, inception_a4_3x3_reduce, inception_a4_3x3_2_reduce - add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 64U), TensorShape(64U), TensorShape(35U, 35U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 64U), TensorShape(64U), + TensorShape(35U, 35U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_a1_3x3, inception_a1_3x3_2, inception_a2_3x3, inception_a2_3x3_2, inception_a3_3x3, inception_a3_3x3_2, inception_a4_3x3, inception_a4_3x3_2 - add_config(TensorShape(35U, 35U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(35U, 35U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), + TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); // inception_a1_3x3_3, inception_a2_3x3_3, inception_a3_3x3_3, inception_a4_3x3_3 - add_config(TensorShape(35U, 35U, 96U), TensorShape(3U, 3U, 96U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(35U, 35U, 96U), TensorShape(3U, 3U, 96U, 96U), TensorShape(96U), + TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); // reduction_a_3x3 - add_config(TensorShape(35U, 35U, 384U), TensorShape(3U, 3U, 384U, 384U), TensorShape(384U), TensorShape(17U, 17U, 384U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(35U, 35U, 384U), TensorShape(3U, 3U, 384U, 384U), TensorShape(384U), + TensorShape(17U, 17U, 384U), PadStrideInfo(2, 2, 0, 0)); // reduction_a_3x3_2_reduce - add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 192U), TensorShape(192U), TensorShape(35U, 35U, 192U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 192U), TensorShape(192U), + TensorShape(35U, 35U, 192U), PadStrideInfo(1, 1, 0, 0)); // reduction_a_3x3_2 - add_config(TensorShape(35U, 35U, 192U), TensorShape(3U, 3U, 192U, 224U), TensorShape(224U), TensorShape(35U, 35U, 224U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(35U, 35U, 192U), TensorShape(3U, 3U, 192U, 224U), TensorShape(224U), + TensorShape(35U, 35U, 224U), PadStrideInfo(1, 1, 1, 1)); // reduction_a_3x3_3 - add_config(TensorShape(35U, 35U, 224U), TensorShape(3U, 3U, 224U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(35U, 35U, 224U), TensorShape(3U, 3U, 224U, 256U), TensorShape(256U), + TensorShape(17U, 17U, 256U), PadStrideInfo(2, 2, 0, 0)); // inception_b1_1x1_2, inception_b2_1x1_2, inception_b3_1x1_2, inception_b4_1x1_2, inception_b5_1x1_2, inception_b6_1x1_2, inception_b7_1x1_2 - add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 384U), TensorShape(384U), TensorShape(17U, 17U, 384U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 384U), TensorShape(384U), + TensorShape(17U, 17U, 384U), PadStrideInfo(1, 1, 0, 0)); // inception_b1_1x7_reduce, inception_b1_7x1_2_reduce, inception_b2_1x7_reduce, inception_b2_7x1_2_reduce, inception_b3_1x7_reduce, inception_b3_7x1_2_reduce, inception_b4_1x7_reduce, inception_b4_7x1_2_reduce, inception_b5_1x7_reduce, inception_b5_7x1_2_reduce, inception_b6_1x7_reduce, inception_b6_7x1_2_reduce, inception_b7_1x7_reduce, inception_b7_7x1_2_reduce, reduction_b_3x3_reduce - add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 192U), TensorShape(192U), TensorShape(17U, 17U, 192U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 192U), TensorShape(192U), + TensorShape(17U, 17U, 192U), PadStrideInfo(1, 1, 0, 0)); // inception_b1_1x7, inception_b1_1x7_2, inception_b2_1x7, inception_b2_1x7_2, inception_b3_1x7, inception_b3_1x7_2, inception_b4_1x7, inception_b4_1x7_2, inception_b5_1x7, inception_b5_1x7_2, inception_b6_1x7, inception_b6_1x7_2, inception_b7_1x7, inception_b7_1x7_2 - add_config(TensorShape(17U, 17U, 192U), TensorShape(7U, 1U, 192U, 224U), TensorShape(224U), TensorShape(17U, 17U, 224U), PadStrideInfo(1, 1, 3, 0)); + add_config(TensorShape(17U, 17U, 192U), TensorShape(7U, 1U, 192U, 224U), TensorShape(224U), + TensorShape(17U, 17U, 224U), PadStrideInfo(1, 1, 3, 0)); // inception_b1_7x1, inception_b2_7x1, inception_b3_7x1, inception_b4_7x1, inception_b5_7x1, inception_b6_7x1, inception_b7_7x1 - add_config(TensorShape(17U, 17U, 224U), TensorShape(1U, 7U, 224U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(17U, 17U, 224U), TensorShape(1U, 7U, 224U, 256U), TensorShape(256U), + TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 0, 3)); // inception_b1_7x1_2, inception_b2_7x1_2, inception_b3_7x1_2, inception_b4_7x1_2, inception_b5_7x1_2, inception_b6_7x1_2, inception_b7_7x1_2 - add_config(TensorShape(17U, 17U, 192U), TensorShape(1U, 7U, 192U, 192U), TensorShape(192U), TensorShape(17U, 17U, 192U), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(17U, 17U, 192U), TensorShape(1U, 7U, 192U, 192U), TensorShape(192U), + TensorShape(17U, 17U, 192U), PadStrideInfo(1, 1, 0, 3)); // inception_b1_7x1_3, inception_b2_7x1_3, inception_b3_7x1_3, inception_b4_7x1_3, inception_b5_7x1_3, inception_b6_7x1_3, inception_b7_7x1_3 - add_config(TensorShape(17U, 17U, 224U), TensorShape(1U, 7U, 224U, 224U), TensorShape(224U), TensorShape(17U, 17U, 224U), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(17U, 17U, 224U), TensorShape(1U, 7U, 224U, 224U), TensorShape(224U), + TensorShape(17U, 17U, 224U), PadStrideInfo(1, 1, 0, 3)); // inception_b1_1x7_3, inception_b2_1x7_3, inception_b3_1x7_3, inception_b4_1x7_3, inception_b5_1x7_3, inception_b6_1x7_3, inception_b7_1x7_3 - add_config(TensorShape(17U, 17U, 224U), TensorShape(7U, 1U, 224U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 3, 0)); + add_config(TensorShape(17U, 17U, 224U), TensorShape(7U, 1U, 224U, 256U), TensorShape(256U), + TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 3, 0)); // inception_b1_1x1, inception_b2_1x1, inception_b3_1x1, inception_b4_1x1, inception_b5_1x1, inception_b6_1x1, inception_b7_1x1 - add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 128U), TensorShape(128U), TensorShape(17U, 17U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 128U), TensorShape(128U), + TensorShape(17U, 17U, 128U), PadStrideInfo(1, 1, 0, 0)); // reduction_b_3x3 - add_config(TensorShape(17U, 17U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(8U, 8U, 192U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(17U, 17U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), + TensorShape(8U, 8U, 192U), PadStrideInfo(2, 2, 0, 0)); // reduction_b_1x7_reduce - add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 256U), TensorShape(256U), + TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 0, 0)); // reduction_b_1x7 - add_config(TensorShape(17U, 17U, 256U), TensorShape(7U, 1U, 256U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 3, 0)); + add_config(TensorShape(17U, 17U, 256U), TensorShape(7U, 1U, 256U, 256U), TensorShape(256U), + TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 3, 0)); // reduction_b_7x1 - add_config(TensorShape(17U, 17U, 256U), TensorShape(1U, 7U, 256U, 320U), TensorShape(320U), TensorShape(17U, 17U, 320U), PadStrideInfo(1, 1, 0, 3)); + add_config(TensorShape(17U, 17U, 256U), TensorShape(1U, 7U, 256U, 320U), TensorShape(320U), + TensorShape(17U, 17U, 320U), PadStrideInfo(1, 1, 0, 3)); // reduction_b_3x3_2 - add_config(TensorShape(17U, 17U, 320U), TensorShape(3U, 3U, 320U, 320U), TensorShape(320U), TensorShape(8U, 8U, 320U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(17U, 17U, 320U), TensorShape(3U, 3U, 320U, 320U), TensorShape(320U), + TensorShape(8U, 8U, 320U), PadStrideInfo(2, 2, 0, 0)); // inception_c1_1x1_2, inception_c1_1x1, inception_c2_1x1_2, inception_c2_1x1, inception_c3_1x1_2, inception_c3_1x1 - add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 256U), TensorShape(256U), + TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 0)); // inception_c1_1x1_3, inception_c1_1x1_4, inception_c2_1x1_3, inception_c2_1x1_4, inception_c3_1x1_3, inception_c3_1x1_4 - add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 384U), TensorShape(384U), TensorShape(8U, 8U, 384U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 384U), TensorShape(384U), + TensorShape(8U, 8U, 384U), PadStrideInfo(1, 1, 0, 0)); // inception_c1_1x3, inception_c2_1x3, inception_c3_1x3 - add_config(TensorShape(8U, 8U, 384U), TensorShape(3U, 1U, 384U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(8U, 8U, 384U), TensorShape(3U, 1U, 384U, 256U), TensorShape(256U), + TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 1, 0)); // inception_c1_3x1, inception_c2_3x1, inception_c3_3x1 - add_config(TensorShape(8U, 8U, 384U), TensorShape(1U, 3U, 384U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(8U, 8U, 384U), TensorShape(1U, 3U, 384U, 256U), TensorShape(256U), + TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 1)); // inception_c1_3x1_2, inception_c2_3x1_2, inception_c3_3x1_2 - add_config(TensorShape(8U, 8U, 384U), TensorShape(1U, 3U, 384U, 448U), TensorShape(448U), TensorShape(8U, 8U, 448U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(8U, 8U, 384U), TensorShape(1U, 3U, 384U, 448U), TensorShape(448U), + TensorShape(8U, 8U, 448U), PadStrideInfo(1, 1, 0, 1)); // inception_c1_1x3_2, inception_c2_1x3_2, inception_c3_1x3_2 - add_config(TensorShape(8U, 8U, 448U), TensorShape(3U, 1U, 448U, 512U), TensorShape(512U), TensorShape(8U, 8U, 512U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(8U, 8U, 448U), TensorShape(3U, 1U, 448U, 512U), TensorShape(512U), + TensorShape(8U, 8U, 512U), PadStrideInfo(1, 1, 1, 0)); // inception_c1_1x3_3, inception_c2_1x3_3, inception_c3_1x3_3 - add_config(TensorShape(8U, 8U, 512U), TensorShape(3U, 1U, 512U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 1, 0)); + add_config(TensorShape(8U, 8U, 512U), TensorShape(3U, 1U, 512U, 256U), TensorShape(256U), + TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 1, 0)); // inception_c1_3x1_3, inception_c2_3x1_3, inception_c3_3x1_3 - add_config(TensorShape(8U, 8U, 512U), TensorShape(1U, 3U, 512U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 1)); + add_config(TensorShape(8U, 8U, 512U), TensorShape(1U, 3U, 512U, 256U), TensorShape(256U), + TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 1)); } }; @@ -151,55 +194,78 @@ class GoogLeNetInceptionV4DirectConvolutionLayerDataset final : public Convoluti GoogLeNetInceptionV4DirectConvolutionLayerDataset() { // conv1_3x3_s2 - add_config(TensorShape(299U, 299U, 3U), TensorShape(3U, 3U, 3U, 32U), TensorShape(32U), TensorShape(149U, 149U, 32U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(299U, 299U, 3U), TensorShape(3U, 3U, 3U, 32U), TensorShape(32U), + TensorShape(149U, 149U, 32U), PadStrideInfo(2, 2, 0, 0)); // conv2_3x3_s1 - add_config(TensorShape(149U, 149U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), TensorShape(147U, 147U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(149U, 149U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), + TensorShape(147U, 147U, 32U), PadStrideInfo(1, 1, 0, 0)); // conv3_3x3_s1 - add_config(TensorShape(147U, 147U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), TensorShape(147U, 147U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(147U, 147U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), + TensorShape(147U, 147U, 64U), PadStrideInfo(1, 1, 1, 1)); // inception_stem1_3x3_s2 - add_config(TensorShape(147U, 147U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(73U, 73U, 96U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(147U, 147U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), + TensorShape(73U, 73U, 96U), PadStrideInfo(2, 2, 0, 0)); // inception_stem2_3x3_reduce, inception_stem2_1x7_reduce - add_config(TensorShape(73U, 73U, 160U), TensorShape(1U, 1U, 160U, 64U), TensorShape(64U), TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(73U, 73U, 160U), TensorShape(1U, 1U, 160U, 64U), TensorShape(64U), + TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_stem2_3x3, inception_stem2_3x3_2 - add_config(TensorShape(73U, 73U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(71U, 71U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(73U, 73U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), + TensorShape(71U, 71U, 96U), PadStrideInfo(1, 1, 0, 0)); // inception_stem3_3x3_s2 - add_config(TensorShape(71U, 71U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(35U, 35U, 192U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(71U, 71U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), + TensorShape(35U, 35U, 192U), PadStrideInfo(2, 2, 0, 0)); // inception_a1_1x1_2, inception_a1_1x1, inception_a2_1x1_2, inception_a2_1x1, inception_a3_1x1_2, inception_a3_1x1, inception_a4_1x1_2, inception_a4_1x1 - add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 96U), TensorShape(96U), + TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 0, 0)); // inception_a1_3x3_reduce, inception_a1_3x3_2_reduce, inception_a2_3x3_reduce, inception_a2_3x3_2_reduce, inception_a3_3x3_reduce, inception_a3_3x3_2_reduce, inception_a4_3x3_reduce, inception_a4_3x3_2_reduce - add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 64U), TensorShape(64U), TensorShape(35U, 35U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 64U), TensorShape(64U), + TensorShape(35U, 35U, 64U), PadStrideInfo(1, 1, 0, 0)); // inception_a1_3x3, inception_a1_3x3_2, inception_a2_3x3, inception_a2_3x3_2, inception_a3_3x3, inception_a3_3x3_2, inception_a4_3x3, inception_a4_3x3_2 - add_config(TensorShape(35U, 35U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(35U, 35U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), + TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); // inception_a1_3x3_3, inception_a2_3x3_3, inception_a3_3x3_3, inception_a4_3x3_3 - add_config(TensorShape(35U, 35U, 96U), TensorShape(3U, 3U, 96U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(35U, 35U, 96U), TensorShape(3U, 3U, 96U, 96U), TensorShape(96U), + TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1)); // reduction_a_3x3 - add_config(TensorShape(35U, 35U, 384U), TensorShape(3U, 3U, 384U, 384U), TensorShape(384U), TensorShape(17U, 17U, 384U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(35U, 35U, 384U), TensorShape(3U, 3U, 384U, 384U), TensorShape(384U), + TensorShape(17U, 17U, 384U), PadStrideInfo(2, 2, 0, 0)); // reduction_a_3x3_2_reduce - add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 192U), TensorShape(192U), TensorShape(35U, 35U, 192U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 192U), TensorShape(192U), + TensorShape(35U, 35U, 192U), PadStrideInfo(1, 1, 0, 0)); // reduction_a_3x3_2 - add_config(TensorShape(35U, 35U, 192U), TensorShape(3U, 3U, 192U, 224U), TensorShape(224U), TensorShape(35U, 35U, 224U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(35U, 35U, 192U), TensorShape(3U, 3U, 192U, 224U), TensorShape(224U), + TensorShape(35U, 35U, 224U), PadStrideInfo(1, 1, 1, 1)); // reduction_a_3x3_3 - add_config(TensorShape(35U, 35U, 224U), TensorShape(3U, 3U, 224U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(35U, 35U, 224U), TensorShape(3U, 3U, 224U, 256U), TensorShape(256U), + TensorShape(17U, 17U, 256U), PadStrideInfo(2, 2, 0, 0)); // inception_b1_1x1_2, inception_b2_1x1_2, inception_b3_1x1_2, inception_b4_1x1_2, inception_b5_1x1_2, inception_b6_1x1_2, inception_b7_1x1_2 - add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 384U), TensorShape(384U), TensorShape(17U, 17U, 384U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 384U), TensorShape(384U), + TensorShape(17U, 17U, 384U), PadStrideInfo(1, 1, 0, 0)); // inception_b1_1x7_reduce, inception_b1_7x1_2_reduce, inception_b2_1x7_reduce, inception_b2_7x1_2_reduce, inception_b3_1x7_reduce, inception_b3_7x1_2_reduce, inception_b4_1x7_reduce, inception_b4_7x1_2_reduce, inception_b5_1x7_reduce, inception_b5_7x1_2_reduce, inception_b6_1x7_reduce, inception_b6_7x1_2_reduce, inception_b7_1x7_reduce, inception_b7_7x1_2_reduce, reduction_b_3x3_reduce - add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 192U), TensorShape(192U), TensorShape(17U, 17U, 192U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 192U), TensorShape(192U), + TensorShape(17U, 17U, 192U), PadStrideInfo(1, 1, 0, 0)); // inception_b1_1x1, inception_b2_1x1, inception_b3_1x1, inception_b4_1x1, inception_b5_1x1, inception_b6_1x1, inception_b7_1x1 - add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 128U), TensorShape(128U), TensorShape(17U, 17U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 128U), TensorShape(128U), + TensorShape(17U, 17U, 128U), PadStrideInfo(1, 1, 0, 0)); // reduction_b_3x3 - add_config(TensorShape(17U, 17U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(8U, 8U, 192U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(17U, 17U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), + TensorShape(8U, 8U, 192U), PadStrideInfo(2, 2, 0, 0)); // reduction_b_1x7_reduce - add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 256U), TensorShape(256U), + TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 0, 0)); // reduction_b_3x3_2 - add_config(TensorShape(17U, 17U, 320U), TensorShape(3U, 3U, 320U, 320U), TensorShape(320U), TensorShape(8U, 8U, 320U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(17U, 17U, 320U), TensorShape(3U, 3U, 320U, 320U), TensorShape(320U), + TensorShape(8U, 8U, 320U), PadStrideInfo(2, 2, 0, 0)); // inception_c1_1x1_2, inception_c1_1x1, inception_c2_1x1_2, inception_c2_1x1, inception_c3_1x1_2, inception_c3_1x1 - add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 256U), TensorShape(256U), + TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 0)); // inception_c1_1x1_3, inception_c1_1x1_4, inception_c2_1x1_3, inception_c2_1x1_4, inception_c3_1x1_3, inception_c3_1x1_4 - add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 384U), TensorShape(384U), TensorShape(8U, 8U, 384U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 384U), TensorShape(384U), + TensorShape(8U, 8U, 384U), PadStrideInfo(1, 1, 0, 0)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4CONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4FullyConnectedLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4FullyConnectedLayerDataset.h index 290447d4977..42a06bf05ce 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4FullyConnectedLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4FullyConnectedLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_FULLYCONNECTED_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_FULLYCONNECTED_LAYER_DATASET - -#include "tests/datasets/FullyConnectedLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4FULLYCONNECTEDLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4FULLYCONNECTEDLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/FullyConnectedLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -48,4 +47,4 @@ class GoogLeNetInceptionV4FullyConnectedLayerDataset final : public FullyConnect } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_FULLYCONNECTED_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4FULLYCONNECTEDLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4NormalizePlanarYUVLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4NormalizePlanarYUVLayerDataset.h index cb8ebe36803..62432a7f188 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4NormalizePlanarYUVLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4NormalizePlanarYUVLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_NORMALIZEPLANARYUV_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_NORMALIZEPLANARYUV_LAYER_DATASET - -#include "tests/datasets/NormalizePlanarYUVLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4NORMALIZEPLANARYUVLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4NORMALIZEPLANARYUVLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/NormalizePlanarYUVLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -91,4 +90,4 @@ class GoogLeNetInceptionV4NormalizePlanarYUVLayerDataset final : public Normaliz } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_NORMALIZEPLANARYUV_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4NORMALIZEPLANARYUVLAYERDATASET_H diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4PoolingLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4PoolingLayerDataset.h index d639b9a20c1..f5fbc28223b 100644 --- a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4PoolingLayerDataset.h +++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4PoolingLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_POOLING_LAYER_DATASET -#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_POOLING_LAYER_DATASET - -#include "tests/datasets/PoolingLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4POOLINGLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4POOLINGLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/PoolingLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -44,22 +43,29 @@ class GoogLeNetInceptionV4PoolingLayerDataset final : public PoolingLayerDataset { // FIXME: Add support for global pooling layer pool_8x8_s1 // inception_stem1_pool - add_config(TensorShape(147U, 147U, 64U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(147U, 147U, 64U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // inception_stem3_pool - add_config(TensorShape(71U, 71U, 192U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(71U, 71U, 192U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // inception_a1_pool_ave, inception_a2_pool_ave, inception_a3_pool_ave, inception_a4_pool_ave - add_config(TensorShape(35U, 35U, 384U), PoolingLayerInfo(PoolingType::AVG, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); + add_config(TensorShape(35U, 35U, 384U), + PoolingLayerInfo(PoolingType::AVG, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); // reduction_a_pool - add_config(TensorShape(35U, 35U, 384U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(35U, 35U, 384U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // inception_b1_pool_ave, inception_b2_pool_ave, inception_b3_pool_ave, inception_b4_pool_ave, inception_b5_pool_ave, inception_b6_pool_ave, inception_b7_pool_ave - add_config(TensorShape(17U, 17U, 1024U), PoolingLayerInfo(PoolingType::AVG, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); + add_config(TensorShape(17U, 17U, 1024U), + PoolingLayerInfo(PoolingType::AVG, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); // reduction_b_pool - add_config(TensorShape(17U, 17U, 1024U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(17U, 17U, 1024U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // inception_c1_pool_ave, inception_c2_pool_ave, inception_c3_pool_ave - add_config(TensorShape(8U, 8U, 1536U), PoolingLayerInfo(PoolingType::AVG, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); + add_config(TensorShape(8U, 8U, 1536U), + PoolingLayerInfo(PoolingType::AVG, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL))); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_POOLING_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_GOOGLENET_INCEPTIONV4_GOOGLENETINCEPTIONV4POOLINGLAYERDATASET_H diff --git a/tests/datasets/system_tests/lenet5/LeNet5ActivationLayerDataset.h b/tests/datasets/system_tests/lenet5/LeNet5ActivationLayerDataset.h index b587b00c29c..7082f492d46 100644 --- a/tests/datasets/system_tests/lenet5/LeNet5ActivationLayerDataset.h +++ b/tests/datasets/system_tests/lenet5/LeNet5ActivationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,32 +21,30 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_LENET5_ACTIVATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_LENET5_ACTIVATION_LAYER_DATASET - -#include "tests/framework/datasets/Datasets.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5ACTIVATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5ACTIVATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/framework/datasets/Datasets.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test { namespace datasets { -class LeNet5ActivationLayerDataset final : public - framework::dataset::CartesianProductDataset, framework::dataset::SingletonDataset> +class LeNet5ActivationLayerDataset final + : public framework::dataset::CartesianProductDataset, + framework::dataset::SingletonDataset> { public: LeNet5ActivationLayerDataset() - : CartesianProductDataset - { - framework::dataset::make("Shape", TensorShape(500U)), - framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)) - } + : CartesianProductDataset{ + framework::dataset::make("Shape", TensorShape(500U)), + framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))} { } LeNet5ActivationLayerDataset(LeNet5ActivationLayerDataset &&) = default; @@ -55,4 +53,4 @@ class LeNet5ActivationLayerDataset final : public } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_LENET5_ACTIVATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5ACTIVATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/lenet5/LeNet5ConvolutionLayerDataset.h b/tests/datasets/system_tests/lenet5/LeNet5ConvolutionLayerDataset.h index 06d9fc76302..988fddd2360 100644 --- a/tests/datasets/system_tests/lenet5/LeNet5ConvolutionLayerDataset.h +++ b/tests/datasets/system_tests/lenet5/LeNet5ConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_LENET5_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_LENET5_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5CONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5CONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -42,11 +41,13 @@ class LeNet5ConvolutionLayerDataset final : public ConvolutionLayerDataset public: LeNet5ConvolutionLayerDataset() { - add_config(TensorShape(28U, 28U, 1U), TensorShape(5U, 5U, 1U, 20U), TensorShape(20U), TensorShape(24U, 24U, 20U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(12U, 12U, 20U), TensorShape(5U, 5U, 20U, 50U), TensorShape(50U), TensorShape(8U, 8U, 50U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(28U, 28U, 1U), TensorShape(5U, 5U, 1U, 20U), TensorShape(20U), + TensorShape(24U, 24U, 20U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(12U, 12U, 20U), TensorShape(5U, 5U, 20U, 50U), TensorShape(50U), + TensorShape(8U, 8U, 50U), PadStrideInfo(1, 1, 0, 0)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_LENET5_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5CONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/lenet5/LeNet5FullyConnectedLayerDataset.h b/tests/datasets/system_tests/lenet5/LeNet5FullyConnectedLayerDataset.h index 07245588cf8..df5be769cf9 100644 --- a/tests/datasets/system_tests/lenet5/LeNet5FullyConnectedLayerDataset.h +++ b/tests/datasets/system_tests/lenet5/LeNet5FullyConnectedLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_LENET5_FULLYCONNECTED_LAYER_DATASET -#define ARM_COMPUTE_TEST_LENET5_FULLYCONNECTED_LAYER_DATASET - -#include "tests/datasets/FullyConnectedLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5FULLYCONNECTEDLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5FULLYCONNECTEDLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/FullyConnectedLayerDataset.h" +#include "utils/TypePrinter.h" + using namespace arm_compute; namespace arm_compute @@ -51,4 +50,4 @@ class LeNet5FullyConnectedLayerDataset final : public FullyConnectedLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_LENET5_FULLYCONNECTED_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5FULLYCONNECTEDLAYERDATASET_H diff --git a/tests/datasets/system_tests/lenet5/LeNet5PoolingLayerDataset.h b/tests/datasets/system_tests/lenet5/LeNet5PoolingLayerDataset.h index 713fa9ebdd8..df9ef066ca7 100644 --- a/tests/datasets/system_tests/lenet5/LeNet5PoolingLayerDataset.h +++ b/tests/datasets/system_tests/lenet5/LeNet5PoolingLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_LENET5_POOLING_LAYER_DATASET -#define ARM_COMPUTE_TEST_LENET5_POOLING_LAYER_DATASET - -#include "tests/datasets/PoolingLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5POOLINGLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5POOLINGLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/PoolingLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -49,4 +48,4 @@ class LeNet5PoolingLayerDataset final : public PoolingLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_LENET5_POOLING_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_LENET5_LENET5POOLINGLAYERDATASET_H diff --git a/tests/datasets/system_tests/mobilenet/MobileNetActivationLayerDataset.h b/tests/datasets/system_tests/mobilenet/MobileNetActivationLayerDataset.h index 90cc7552f61..9fc14595079 100644 --- a/tests/datasets/system_tests/mobilenet/MobileNetActivationLayerDataset.h +++ b/tests/datasets/system_tests/mobilenet/MobileNetActivationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,33 +21,35 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_MOBILENET_ACTIVATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_MOBILENET_ACTIVATION_LAYER_DATASET - -#include "tests/framework/datasets/Datasets.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETACTIVATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETACTIVATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/framework/datasets/Datasets.h" + namespace arm_compute { namespace test { namespace datasets { -class MobileNetActivationLayerDataset final : public - framework::dataset::CartesianProductDataset, framework::dataset::SingletonDataset> +class MobileNetActivationLayerDataset final + : public framework::dataset::CartesianProductDataset, + framework::dataset::SingletonDataset> { public: MobileNetActivationLayerDataset() - : CartesianProductDataset - { - framework::dataset::make("Shape", { - TensorShape(112U, 112U, 32U), TensorShape(112U, 112U, 64U), TensorShape(56U, 56U, 64U), TensorShape(56U, 56U, 128U), - TensorShape(28U, 28U, 128U), TensorShape(28U, 28U, 256U), TensorShape(14U, 14U, 256U), TensorShape(14U, 14U, 512U), - TensorShape(7U, 7U, 512U), TensorShape(7U, 7U, 1024U) }), - framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, 6.f)) - } + : CartesianProductDataset{ + framework::dataset::make("Shape", + {TensorShape(112U, 112U, 32U), TensorShape(112U, 112U, 64U), + TensorShape(56U, 56U, 64U), TensorShape(56U, 56U, 128U), + TensorShape(28U, 28U, 128U), TensorShape(28U, 28U, 256U), + TensorShape(14U, 14U, 256U), TensorShape(14U, 14U, 512U), + TensorShape(7U, 7U, 512U), TensorShape(7U, 7U, 1024U)}), + framework::dataset::make( + "Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, 6.f))} { } MobileNetActivationLayerDataset(MobileNetActivationLayerDataset &&) = default; @@ -56,4 +58,4 @@ class MobileNetActivationLayerDataset final : public } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_MOBILENET_ACTIVATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETACTIVATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/mobilenet/MobileNetBatchNormalizationLayerDataset.h b/tests/datasets/system_tests/mobilenet/MobileNetBatchNormalizationLayerDataset.h index 89945d6455b..217de04c4b9 100644 --- a/tests/datasets/system_tests/mobilenet/MobileNetBatchNormalizationLayerDataset.h +++ b/tests/datasets/system_tests/mobilenet/MobileNetBatchNormalizationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_MOBILENET_BATCHNORMALIZATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_MOBILENET_BATCHNORMALIZATION_LAYER_DATASET - -#include "tests/datasets/BatchNormalizationLayerDataset.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETBATCHNORMALIZATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETBATCHNORMALIZATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/BatchNormalizationLayerDataset.h" + namespace arm_compute { namespace test @@ -65,4 +65,4 @@ class MobileNetBatchNormalizationLayerDataset final : public BatchNormalizationL } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_MOBILENET_BATCHNORMALIZATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETBATCHNORMALIZATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/mobilenet/MobileNetConvolutionLayerDataset.h b/tests/datasets/system_tests/mobilenet/MobileNetConvolutionLayerDataset.h index cd229e8fc43..5aa3d4fcfe9 100644 --- a/tests/datasets/system_tests/mobilenet/MobileNetConvolutionLayerDataset.h +++ b/tests/datasets/system_tests/mobilenet/MobileNetConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_MOBILENET_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_MOBILENET_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETCONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETCONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -42,12 +41,15 @@ class MobileNetConvolutionLayerDataset final : public ConvolutionLayerDataset public: MobileNetConvolutionLayerDataset() { - add_config(TensorShape(10U, 10U, 384U), TensorShape(1U, 1U, 384U, 384U), TensorShape(384U), TensorShape(10U, 10U, 384U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(5U, 5U, 768U), TensorShape(1U, 1U, 768U, 768U), TensorShape(768U), TensorShape(5U, 5U, 768U), PadStrideInfo(1, 1, 0, 0)); - add_config(TensorShape(40U, 40U, 96U), TensorShape(1U, 1U, 96U, 96U), TensorShape(96U), TensorShape(40U, 40U, 96U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(10U, 10U, 384U), TensorShape(1U, 1U, 384U, 384U), TensorShape(384U), + TensorShape(10U, 10U, 384U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(5U, 5U, 768U), TensorShape(1U, 1U, 768U, 768U), TensorShape(768U), + TensorShape(5U, 5U, 768U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(40U, 40U, 96U), TensorShape(1U, 1U, 96U, 96U), TensorShape(96U), + TensorShape(40U, 40U, 96U), PadStrideInfo(1, 1, 0, 0)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_MOBILENET_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETCONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/mobilenet/MobileNetDepthwiseConvolutionLayerDataset.h b/tests/datasets/system_tests/mobilenet/MobileNetDepthwiseConvolutionLayerDataset.h index 8ef91cea260..36e082418c6 100644 --- a/tests/datasets/system_tests/mobilenet/MobileNetDepthwiseConvolutionLayerDataset.h +++ b/tests/datasets/system_tests/mobilenet/MobileNetDepthwiseConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_MOBILENET_DEPTHWISE_CONVOLUTION_DATASET -#define ARM_COMPUTE_TEST_MOBILENET_DEPTHWISE_CONVOLUTION_DATASET - -#include "tests/datasets/DepthwiseConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETDEPTHWISECONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETDEPTHWISECONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/DepthwiseConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,17 +42,21 @@ class MobileNetDepthwiseConvolutionLayerDataset final : public DepthwiseConvolut MobileNetDepthwiseConvolutionLayerDataset() { add_config(TensorShape(7U, 7U, 1024U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(14U, 14U, 512U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); + add_config(TensorShape(14U, 14U, 512U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); add_config(TensorShape(14U, 14U, 512U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(28U, 28U, 256U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); + add_config(TensorShape(28U, 28U, 256U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); add_config(TensorShape(28U, 28U, 256U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(56U, 56U, 128U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); + add_config(TensorShape(56U, 56U, 128U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); add_config(TensorShape(56U, 56U, 128U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 1)); - add_config(TensorShape(112U, 112U, 64U), Size2D(3U, 3U), PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); + add_config(TensorShape(112U, 112U, 64U), Size2D(3U, 3U), + PadStrideInfo(2, 2, 0, 1, 0, 1, DimensionRoundingType::FLOOR)); add_config(TensorShape(112U, 112U, 32U), Size2D(3U, 3U), PadStrideInfo(1, 1, 1, 1)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_MOBILENET_DEPTHWISE_CONVOLUTION_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_MOBILENET_MOBILENETDEPTHWISECONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/resnet12/ResNet12ConvolutionLayerDataset.h b/tests/datasets/system_tests/resnet12/ResNet12ConvolutionLayerDataset.h index 9c595bccefd..d482c09d27e 100644 --- a/tests/datasets/system_tests/resnet12/ResNet12ConvolutionLayerDataset.h +++ b/tests/datasets/system_tests/resnet12/ResNet12ConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Arm Limited. + * Copyright (c) 2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_RESNET12_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_RESNET12_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_RESNET12_RESNET12CONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_RESNET12_RESNET12CONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -42,10 +41,11 @@ class ResNet12FFTConvolutionLayerDataset final : public ConvolutionLayerDataset public: ResNet12FFTConvolutionLayerDataset() { - add_config(TensorShape(192U, 128U, 64U), TensorShape(9U, 9U, 64U, 3U), TensorShape(3U), TensorShape(192U, 128U, 3U), PadStrideInfo(1, 1, 4, 4)); + add_config(TensorShape(192U, 128U, 64U), TensorShape(9U, 9U, 64U, 3U), TensorShape(3U), + TensorShape(192U, 128U, 3U), PadStrideInfo(1, 1, 4, 4)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_RESNET12_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_RESNET12_RESNET12CONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/squeezenet/SqueezeNetActivationLayerDataset.h b/tests/datasets/system_tests/squeezenet/SqueezeNetActivationLayerDataset.h index 6fdd7919cf7..d0ae0c25be6 100644 --- a/tests/datasets/system_tests/squeezenet/SqueezeNetActivationLayerDataset.h +++ b/tests/datasets/system_tests/squeezenet/SqueezeNetActivationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,51 +21,51 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SQUEEZENET_ACTIVATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_SQUEEZENET_ACTIVATION_LAYER_DATASET - -#include "tests/framework/datasets/Datasets.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_SQUEEZENET_SQUEEZENETACTIVATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_SQUEEZENET_SQUEEZENETACTIVATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/framework/datasets/Datasets.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test { namespace datasets { -class SqueezeNetActivationLayerDataset final : public - framework::dataset::CartesianProductDataset, framework::dataset::SingletonDataset> +class SqueezeNetActivationLayerDataset final + : public framework::dataset::CartesianProductDataset, + framework::dataset::SingletonDataset> { public: SqueezeNetActivationLayerDataset() - : CartesianProductDataset - { - framework::dataset::make("Shape", { // relu_conv1 - TensorShape(111U, 111U, 64U), - // fire2/relu_squeeze1x1, fire3/relu_squeeze1x1 - TensorShape(55U, 55U, 16U), - // fire2/relu_expand1x1, fire2/relu_expand3x3, fire3/relu_expand1x1, fire3/relu_expand3x3 - TensorShape(55U, 55U, 64U), - // fire4/relu_squeeze1x1, fire5/relu_squeeze1x1 - TensorShape(27U, 27U, 32U), - // fire4/relu_expand1x1, fire4/relu_expand3x3, fire5/relu_expand1x1, fire5/relu_expand3x3 - TensorShape(27U, 27U, 128U), - // fire6/relu_squeeze1x1, fire7/relu_squeeze1x1 - TensorShape(13U, 13U, 48U), - // fire6/relu_expand1x1, fire6/relu_expand3x3, fire7/relu_expand1x1, fire7/relu_expand3x3 - TensorShape(13U, 13U, 192U), - // fire8/relu_squeeze1x1, fire9/relu_squeeze1x1 - TensorShape(13U, 13U, 64U), - // fire8/relu_expand1x1, fire8/relu_expand3x3, fire9/relu_expand1x1, fire9/relu_expand3x3 - TensorShape(13U, 13U, 256U), - // relu_conv10 - TensorShape(13U, 13U, 1000U) }), - framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)) - } + : CartesianProductDataset{ + framework::dataset::make( + "Shape", + {// relu_conv1 + TensorShape(111U, 111U, 64U), + // fire2/relu_squeeze1x1, fire3/relu_squeeze1x1 + TensorShape(55U, 55U, 16U), + // fire2/relu_expand1x1, fire2/relu_expand3x3, fire3/relu_expand1x1, fire3/relu_expand3x3 + TensorShape(55U, 55U, 64U), + // fire4/relu_squeeze1x1, fire5/relu_squeeze1x1 + TensorShape(27U, 27U, 32U), + // fire4/relu_expand1x1, fire4/relu_expand3x3, fire5/relu_expand1x1, fire5/relu_expand3x3 + TensorShape(27U, 27U, 128U), + // fire6/relu_squeeze1x1, fire7/relu_squeeze1x1 + TensorShape(13U, 13U, 48U), + // fire6/relu_expand1x1, fire6/relu_expand3x3, fire7/relu_expand1x1, fire7/relu_expand3x3 + TensorShape(13U, 13U, 192U), + // fire8/relu_squeeze1x1, fire9/relu_squeeze1x1 + TensorShape(13U, 13U, 64U), + // fire8/relu_expand1x1, fire8/relu_expand3x3, fire9/relu_expand1x1, fire9/relu_expand3x3 + TensorShape(13U, 13U, 256U), + // relu_conv10 + TensorShape(13U, 13U, 1000U)}), + framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))} { } SqueezeNetActivationLayerDataset(SqueezeNetActivationLayerDataset &&) = default; @@ -74,4 +74,4 @@ class SqueezeNetActivationLayerDataset final : public } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SQUEEZENET_ACTIVATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_SQUEEZENET_SQUEEZENETACTIVATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/squeezenet/SqueezeNetConvolutionLayerDataset.h b/tests/datasets/system_tests/squeezenet/SqueezeNetConvolutionLayerDataset.h index 867d199c1c9..2bcfe2b09ce 100644 --- a/tests/datasets/system_tests/squeezenet/SqueezeNetConvolutionLayerDataset.h +++ b/tests/datasets/system_tests/squeezenet/SqueezeNetConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SQUEEZENET_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_SQUEEZENET_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_SQUEEZENET_SQUEEZENETCONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_SQUEEZENET_SQUEEZENETCONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,13 +42,17 @@ class SqueezeNetWinogradLayerDataset final : public ConvolutionLayerDataset SqueezeNetWinogradLayerDataset() { // fire2/expand3x3, fire3/expand3x3 - add_config(TensorShape(55U, 55U, 16U), TensorShape(3U, 3U, 16U, 64U), TensorShape(64U), TensorShape(55U, 55U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(55U, 55U, 16U), TensorShape(3U, 3U, 16U, 64U), TensorShape(64U), + TensorShape(55U, 55U, 64U), PadStrideInfo(1, 1, 1, 1)); // fire4/expand3x3, fire5/expand3x3 - add_config(TensorShape(27U, 27U, 32U), TensorShape(3U, 3U, 32U, 128U), TensorShape(128U), TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(27U, 27U, 32U), TensorShape(3U, 3U, 32U, 128U), TensorShape(128U), + TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 1, 1)); // fire6/expand3x3, fire7/expand3x3 - add_config(TensorShape(13U, 13U, 48U), TensorShape(3U, 3U, 48U, 192U), TensorShape(192U), TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 48U), TensorShape(3U, 3U, 48U, 192U), TensorShape(192U), + TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); // fire8/expand3x3, fire9/expand3x3 - add_config(TensorShape(13U, 13U, 64U), TensorShape(3U, 3U, 64U, 256U), TensorShape(256U), TensorShape(13U, 13U, 256U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 64U), TensorShape(3U, 3U, 64U, 256U), TensorShape(256U), + TensorShape(13U, 13U, 256U), PadStrideInfo(1, 1, 1, 1)); } }; @@ -59,44 +62,62 @@ class SqueezeNetConvolutionLayerDataset final : public ConvolutionLayerDataset SqueezeNetConvolutionLayerDataset() { // conv1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(3U, 3U, 3U, 64U), TensorShape(64U), TensorShape(111U, 111U, 64U), PadStrideInfo(2, 2, 0, 0)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(3U, 3U, 3U, 64U), TensorShape(64U), + TensorShape(111U, 111U, 64U), PadStrideInfo(2, 2, 0, 0)); // fire2/squeeze1x1 - add_config(TensorShape(55U, 55U, 64U), TensorShape(1U, 1U, 64U, 16U), TensorShape(16U), TensorShape(55U, 55U, 16U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(55U, 55U, 64U), TensorShape(1U, 1U, 64U, 16U), TensorShape(16U), + TensorShape(55U, 55U, 16U), PadStrideInfo(1, 1, 0, 0)); // fire2/expand1x1, fire3/expand1x1 - add_config(TensorShape(55U, 55U, 16U), TensorShape(1U, 1U, 16U, 64U), TensorShape(64U), TensorShape(55U, 55U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(55U, 55U, 16U), TensorShape(1U, 1U, 16U, 64U), TensorShape(64U), + TensorShape(55U, 55U, 64U), PadStrideInfo(1, 1, 0, 0)); // fire2/expand3x3, fire3/expand3x3 - add_config(TensorShape(55U, 55U, 16U), TensorShape(3U, 3U, 16U, 64U), TensorShape(64U), TensorShape(55U, 55U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(55U, 55U, 16U), TensorShape(3U, 3U, 16U, 64U), TensorShape(64U), + TensorShape(55U, 55U, 64U), PadStrideInfo(1, 1, 1, 1)); // fire3/squeeze1x1 - add_config(TensorShape(55U, 55U, 128U), TensorShape(1U, 1U, 128U, 16U), TensorShape(16U), TensorShape(55U, 55U, 16U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(55U, 55U, 128U), TensorShape(1U, 1U, 128U, 16U), TensorShape(16U), + TensorShape(55U, 55U, 16U), PadStrideInfo(1, 1, 0, 0)); // fire4/squeeze1x1 - add_config(TensorShape(27U, 27U, 128U), TensorShape(1U, 1U, 128U, 32U), TensorShape(32U), TensorShape(27U, 27U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(27U, 27U, 128U), TensorShape(1U, 1U, 128U, 32U), TensorShape(32U), + TensorShape(27U, 27U, 32U), PadStrideInfo(1, 1, 0, 0)); // fire4/expand1x1, fire5/expand1x1 - add_config(TensorShape(27U, 27U, 32U), TensorShape(1U, 1U, 32U, 128U), TensorShape(128U), TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(27U, 27U, 32U), TensorShape(1U, 1U, 32U, 128U), TensorShape(128U), + TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 0, 0)); // fire4/expand3x3, fire5/expand3x3 - add_config(TensorShape(27U, 27U, 32U), TensorShape(3U, 3U, 32U, 128U), TensorShape(128U), TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(27U, 27U, 32U), TensorShape(3U, 3U, 32U, 128U), TensorShape(128U), + TensorShape(27U, 27U, 128U), PadStrideInfo(1, 1, 1, 1)); // fire5/squeeze1x1 - add_config(TensorShape(27U, 27U, 256U), TensorShape(1U, 1U, 256U, 32U), TensorShape(32U), TensorShape(27U, 27U, 32U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(27U, 27U, 256U), TensorShape(1U, 1U, 256U, 32U), TensorShape(32U), + TensorShape(27U, 27U, 32U), PadStrideInfo(1, 1, 0, 0)); // fire6/squeeze1x1 - add_config(TensorShape(13U, 13U, 256U), TensorShape(1U, 1U, 256U, 48U), TensorShape(48U), TensorShape(13U, 13U, 48U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(13U, 13U, 256U), TensorShape(1U, 1U, 256U, 48U), TensorShape(48U), + TensorShape(13U, 13U, 48U), PadStrideInfo(1, 1, 0, 0)); // fire6/expand1x1, fire7/expand1x1 - add_config(TensorShape(13U, 13U, 48U), TensorShape(1U, 1U, 48U, 192U), TensorShape(192U), TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(13U, 13U, 48U), TensorShape(1U, 1U, 48U, 192U), TensorShape(192U), + TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 0, 0)); // fire6/expand3x3, fire7/expand3x3 - add_config(TensorShape(13U, 13U, 48U), TensorShape(3U, 3U, 48U, 192U), TensorShape(192U), TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 48U), TensorShape(3U, 3U, 48U, 192U), TensorShape(192U), + TensorShape(13U, 13U, 192U), PadStrideInfo(1, 1, 1, 1)); // fire7/squeeze1x1 - add_config(TensorShape(13U, 13U, 384U), TensorShape(1U, 1U, 384U, 48U), TensorShape(48U), TensorShape(13U, 13U, 48U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(13U, 13U, 384U), TensorShape(1U, 1U, 384U, 48U), TensorShape(48U), + TensorShape(13U, 13U, 48U), PadStrideInfo(1, 1, 0, 0)); // fire8/squeeze1x1 - add_config(TensorShape(13U, 13U, 384U), TensorShape(1U, 1U, 384U, 64U), TensorShape(64U), TensorShape(13U, 13U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(13U, 13U, 384U), TensorShape(1U, 1U, 384U, 64U), TensorShape(64U), + TensorShape(13U, 13U, 64U), PadStrideInfo(1, 1, 0, 0)); // fire8/expand1x1, fire9/expand1x1 - add_config(TensorShape(13U, 13U, 64U), TensorShape(1U, 1U, 64U, 256U), TensorShape(256U), TensorShape(13U, 13U, 256U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(13U, 13U, 64U), TensorShape(1U, 1U, 64U, 256U), TensorShape(256U), + TensorShape(13U, 13U, 256U), PadStrideInfo(1, 1, 0, 0)); // fire8/expand3x3, fire9/expand3x3 - add_config(TensorShape(13U, 13U, 64U), TensorShape(3U, 3U, 64U, 256U), TensorShape(256U), TensorShape(13U, 13U, 256U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(13U, 13U, 64U), TensorShape(3U, 3U, 64U, 256U), TensorShape(256U), + TensorShape(13U, 13U, 256U), PadStrideInfo(1, 1, 1, 1)); // fire9/squeeze1x1 - add_config(TensorShape(13U, 13U, 512U), TensorShape(1U, 1U, 512U, 64U), TensorShape(64U), TensorShape(13U, 13U, 64U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(13U, 13U, 512U), TensorShape(1U, 1U, 512U, 64U), TensorShape(64U), + TensorShape(13U, 13U, 64U), PadStrideInfo(1, 1, 0, 0)); // conv10 - add_config(TensorShape(13U, 13U, 512U), TensorShape(1U, 1U, 512U, 1000U), TensorShape(1000U), TensorShape(13U, 13U, 1000U), PadStrideInfo(1, 1, 0, 0)); + add_config(TensorShape(13U, 13U, 512U), TensorShape(1U, 1U, 512U, 1000U), TensorShape(1000U), + TensorShape(13U, 13U, 1000U), PadStrideInfo(1, 1, 0, 0)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SQUEEZENET_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_SQUEEZENET_SQUEEZENETCONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/squeezenet/SqueezeNetPoolingLayerDataset.h b/tests/datasets/system_tests/squeezenet/SqueezeNetPoolingLayerDataset.h index 54b01bde3ac..8ae65494c15 100644 --- a/tests/datasets/system_tests/squeezenet/SqueezeNetPoolingLayerDataset.h +++ b/tests/datasets/system_tests/squeezenet/SqueezeNetPoolingLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SQUEEZENET_POOLING_LAYER_DATASET -#define ARM_COMPUTE_TEST_SQUEEZENET_POOLING_LAYER_DATASET - -#include "tests/datasets/PoolingLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_SQUEEZENET_SQUEEZENETPOOLINGLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_SQUEEZENET_SQUEEZENETPOOLINGLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/PoolingLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,15 +42,18 @@ class SqueezeNetPoolingLayerDataset final : public PoolingLayerDataset SqueezeNetPoolingLayerDataset() { // pool1 - add_config(TensorShape(111U, 111U, 64U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(111U, 111U, 64U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // pool3 - add_config(TensorShape(55U, 55U, 128U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(55U, 55U, 128U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // pool5 - add_config(TensorShape(27U, 27U, 256U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(27U, 27U, 256U), + PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); //FIXME: Add support for global pooling. } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SQUEEZENET_POOLING_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_SQUEEZENET_SQUEEZENETPOOLINGLAYERDATASET_H diff --git a/tests/datasets/system_tests/vgg/vgg16/VGG16ActivationLayerDataset.h b/tests/datasets/system_tests/vgg/vgg16/VGG16ActivationLayerDataset.h index 0b2433f82b8..b102ca453fe 100644 --- a/tests/datasets/system_tests/vgg/vgg16/VGG16ActivationLayerDataset.h +++ b/tests/datasets/system_tests/vgg/vgg16/VGG16ActivationLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,43 +21,42 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_VGG16_ACTIVATION_LAYER_DATASET -#define ARM_COMPUTE_TEST_VGG16_ACTIVATION_LAYER_DATASET - -#include "tests/framework/datasets/Datasets.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16ACTIVATIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16ACTIVATIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/framework/datasets/Datasets.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test { namespace datasets { -class VGG16ActivationLayerDataset final : public - framework::dataset::CartesianProductDataset, framework::dataset::SingletonDataset> +class VGG16ActivationLayerDataset final + : public framework::dataset::CartesianProductDataset, + framework::dataset::SingletonDataset> { public: VGG16ActivationLayerDataset() - : CartesianProductDataset - { - framework::dataset::make("Shape", { // relu1_1, relu1_2 - TensorShape(224U, 224U, 64U), - // relu2_1, relu2_2 - TensorShape(112U, 112U, 128U), - // relu3_1, relu3_2, relu3_3 - TensorShape(56U, 56U, 256U), - // relu4_1, relu4_2, relu4_3 - TensorShape(28U, 28U, 512U), - // relu5_1, relu5_2, relu5_3 - TensorShape(14U, 14U, 512U), - // relu6, relu7 - TensorShape(4096U) }), - framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)) - } + : CartesianProductDataset{ + framework::dataset::make("Shape", + {// relu1_1, relu1_2 + TensorShape(224U, 224U, 64U), + // relu2_1, relu2_2 + TensorShape(112U, 112U, 128U), + // relu3_1, relu3_2, relu3_3 + TensorShape(56U, 56U, 256U), + // relu4_1, relu4_2, relu4_3 + TensorShape(28U, 28U, 512U), + // relu5_1, relu5_2, relu5_3 + TensorShape(14U, 14U, 512U), + // relu6, relu7 + TensorShape(4096U)}), + framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))} { } VGG16ActivationLayerDataset(VGG16ActivationLayerDataset &&) = default; @@ -66,4 +65,4 @@ class VGG16ActivationLayerDataset final : public } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_VGG16_ACTIVATION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16ACTIVATIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/vgg/vgg16/VGG16ConvolutionLayerDataset.h b/tests/datasets/system_tests/vgg/vgg16/VGG16ConvolutionLayerDataset.h index 234beb1cf73..823b8ac64e9 100644 --- a/tests/datasets/system_tests/vgg/vgg16/VGG16ConvolutionLayerDataset.h +++ b/tests/datasets/system_tests/vgg/vgg16/VGG16ConvolutionLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_VGG16_CONVOLUTION_LAYER_DATASET -#define ARM_COMPUTE_TEST_VGG16_CONVOLUTION_LAYER_DATASET - -#include "tests/datasets/ConvolutionLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16CONVOLUTIONLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16CONVOLUTIONLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/ConvolutionLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,23 +42,32 @@ class VGG16ConvolutionLayerDataset final : public ConvolutionLayerDataset VGG16ConvolutionLayerDataset() { // conv1_1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(3U, 3U, 3U, 64U), TensorShape(64U), TensorShape(224U, 224U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(3U, 3U, 3U, 64U), TensorShape(64U), + TensorShape(224U, 224U, 64U), PadStrideInfo(1, 1, 1, 1)); // conv1_2 - add_config(TensorShape(224U, 224U, 64U), TensorShape(3U, 3U, 64U, 64U), TensorShape(64U), TensorShape(224U, 224U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(224U, 224U, 64U), TensorShape(3U, 3U, 64U, 64U), TensorShape(64U), + TensorShape(224U, 224U, 64U), PadStrideInfo(1, 1, 1, 1)); // conv2_1 - add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 3U, 64U, 128U), TensorShape(128U), TensorShape(112U, 112U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 3U, 64U, 128U), TensorShape(128U), + TensorShape(112U, 112U, 128U), PadStrideInfo(1, 1, 1, 1)); // conv2_2 - add_config(TensorShape(112U, 112U, 128U), TensorShape(3U, 3U, 128U, 128U), TensorShape(128U), TensorShape(112U, 112U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(112U, 112U, 128U), TensorShape(3U, 3U, 128U, 128U), TensorShape(128U), + TensorShape(112U, 112U, 128U), PadStrideInfo(1, 1, 1, 1)); // conv3_1 - add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), TensorShape(56U, 56U, 256U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), + TensorShape(56U, 56U, 256U), PadStrideInfo(1, 1, 1, 1)); // conv3_2, conv3_3 - add_config(TensorShape(56U, 56U, 256U), TensorShape(3U, 3U, 256U, 256U), TensorShape(256U), TensorShape(56U, 56U, 256U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(56U, 56U, 256U), TensorShape(3U, 3U, 256U, 256U), TensorShape(256U), + TensorShape(56U, 56U, 256U), PadStrideInfo(1, 1, 1, 1)); // conv4_1 - add_config(TensorShape(28U, 28U, 256U), TensorShape(3U, 3U, 256U, 512U), TensorShape(512U), TensorShape(28U, 28U, 512U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 256U), TensorShape(3U, 3U, 256U, 512U), TensorShape(512U), + TensorShape(28U, 28U, 512U), PadStrideInfo(1, 1, 1, 1)); // conv4_2, conv4_3 - add_config(TensorShape(28U, 28U, 512U), TensorShape(3U, 3U, 512U, 512U), TensorShape(512U), TensorShape(28U, 28U, 512U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 512U), TensorShape(3U, 3U, 512U, 512U), TensorShape(512U), + TensorShape(28U, 28U, 512U), PadStrideInfo(1, 1, 1, 1)); // conv5_1, conv5_2, conv5_3 - add_config(TensorShape(14U, 14U, 512U), TensorShape(3U, 3U, 512U, 512U), TensorShape(512U), TensorShape(14U, 14U, 512U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(3U, 3U, 512U, 512U), TensorShape(512U), + TensorShape(14U, 14U, 512U), PadStrideInfo(1, 1, 1, 1)); } }; @@ -69,26 +77,35 @@ class VGG16DirectConvolutionLayerDataset final : public ConvolutionLayerDataset VGG16DirectConvolutionLayerDataset() { // conv1_1 - add_config(TensorShape(224U, 224U, 3U), TensorShape(3U, 3U, 3U, 64U), TensorShape(64U), TensorShape(224U, 224U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(224U, 224U, 3U), TensorShape(3U, 3U, 3U, 64U), TensorShape(64U), + TensorShape(224U, 224U, 64U), PadStrideInfo(1, 1, 1, 1)); // conv1_2 - add_config(TensorShape(224U, 224U, 64U), TensorShape(3U, 3U, 64U, 64U), TensorShape(64U), TensorShape(224U, 224U, 64U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(224U, 224U, 64U), TensorShape(3U, 3U, 64U, 64U), TensorShape(64U), + TensorShape(224U, 224U, 64U), PadStrideInfo(1, 1, 1, 1)); // conv2_1 - add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 3U, 64U, 128U), TensorShape(128U), TensorShape(112U, 112U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(112U, 112U, 64U), TensorShape(3U, 3U, 64U, 128U), TensorShape(128U), + TensorShape(112U, 112U, 128U), PadStrideInfo(1, 1, 1, 1)); // conv2_2 - add_config(TensorShape(112U, 112U, 128U), TensorShape(3U, 3U, 128U, 128U), TensorShape(128U), TensorShape(112U, 112U, 128U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(112U, 112U, 128U), TensorShape(3U, 3U, 128U, 128U), TensorShape(128U), + TensorShape(112U, 112U, 128U), PadStrideInfo(1, 1, 1, 1)); // conv3_1 - add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), TensorShape(56U, 56U, 256U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(56U, 56U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), + TensorShape(56U, 56U, 256U), PadStrideInfo(1, 1, 1, 1)); // conv3_2, conv3_3 - add_config(TensorShape(56U, 56U, 256U), TensorShape(3U, 3U, 256U, 256U), TensorShape(256U), TensorShape(56U, 56U, 256U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(56U, 56U, 256U), TensorShape(3U, 3U, 256U, 256U), TensorShape(256U), + TensorShape(56U, 56U, 256U), PadStrideInfo(1, 1, 1, 1)); // conv4_1 - add_config(TensorShape(28U, 28U, 256U), TensorShape(3U, 3U, 256U, 512U), TensorShape(512U), TensorShape(28U, 28U, 512U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 256U), TensorShape(3U, 3U, 256U, 512U), TensorShape(512U), + TensorShape(28U, 28U, 512U), PadStrideInfo(1, 1, 1, 1)); // conv4_2, conv4_3 - add_config(TensorShape(28U, 28U, 512U), TensorShape(3U, 3U, 512U, 512U), TensorShape(512U), TensorShape(28U, 28U, 512U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(28U, 28U, 512U), TensorShape(3U, 3U, 512U, 512U), TensorShape(512U), + TensorShape(28U, 28U, 512U), PadStrideInfo(1, 1, 1, 1)); // conv5_1, conv5_2, conv5_3 - add_config(TensorShape(14U, 14U, 512U), TensorShape(3U, 3U, 512U, 512U), TensorShape(512U), TensorShape(14U, 14U, 512U), PadStrideInfo(1, 1, 1, 1)); + add_config(TensorShape(14U, 14U, 512U), TensorShape(3U, 3U, 512U, 512U), TensorShape(512U), + TensorShape(14U, 14U, 512U), PadStrideInfo(1, 1, 1, 1)); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_VGG16_CONVOLUTION_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16CONVOLUTIONLAYERDATASET_H diff --git a/tests/datasets/system_tests/vgg/vgg16/VGG16FullyConnectedLayerDataset.h b/tests/datasets/system_tests/vgg/vgg16/VGG16FullyConnectedLayerDataset.h index 16213d0209e..5232f2191de 100644 --- a/tests/datasets/system_tests/vgg/vgg16/VGG16FullyConnectedLayerDataset.h +++ b/tests/datasets/system_tests/vgg/vgg16/VGG16FullyConnectedLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_VGG16_FULLYCONNECTED_LAYER_DATASET -#define ARM_COMPUTE_TEST_VGG16_FULLYCONNECTED_LAYER_DATASET - -#include "tests/datasets/FullyConnectedLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16FULLYCONNECTEDLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16FULLYCONNECTEDLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/FullyConnectedLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -53,4 +52,4 @@ class VGG16FullyConnectedLayerDataset final : public FullyConnectedLayerDataset } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_VGG16_FULLYCONNECTED_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16FULLYCONNECTEDLAYERDATASET_H diff --git a/tests/datasets/system_tests/vgg/vgg16/VGG16PoolingLayerDataset.h b/tests/datasets/system_tests/vgg/vgg16/VGG16PoolingLayerDataset.h index a1ebfaae594..0f0f5445e2b 100644 --- a/tests/datasets/system_tests/vgg/vgg16/VGG16PoolingLayerDataset.h +++ b/tests/datasets/system_tests/vgg/vgg16/VGG16PoolingLayerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,16 +21,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_VGG16_POOLING_LAYER_DATASET -#define ARM_COMPUTE_TEST_VGG16_POOLING_LAYER_DATASET - -#include "tests/datasets/PoolingLayerDataset.h" - -#include "utils/TypePrinter.h" +#ifndef ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16POOLINGLAYERDATASET_H +#define ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16POOLINGLAYERDATASET_H #include "arm_compute/core/TensorShape.h" #include "arm_compute/core/Types.h" +#include "tests/datasets/PoolingLayerDataset.h" +#include "utils/TypePrinter.h" + namespace arm_compute { namespace test @@ -43,18 +42,23 @@ class VGG16PoolingLayerDataset final : public PoolingLayerDataset VGG16PoolingLayerDataset() { // pool1 - add_config(TensorShape(224U, 224U, 64U), PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(224U, 224U, 64U), + PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // pool2 - add_config(TensorShape(112U, 112U, 128U), PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(112U, 112U, 128U), + PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // pool3 - add_config(TensorShape(56U, 56U, 256U), PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(56U, 56U, 256U), + PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // pool4 - add_config(TensorShape(28U, 28U, 512U), PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(28U, 28U, 512U), + PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); // pool5 - add_config(TensorShape(14U, 14U, 512U), PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); + add_config(TensorShape(14U, 14U, 512U), + PoolingLayerInfo(PoolingType::MAX, 2, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL))); } }; } // namespace datasets } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_VGG16_POOLING_LAYER_DATASET */ +#endif // ACL_TESTS_DATASETS_SYSTEM_TESTS_VGG_VGG16_VGG16POOLINGLAYERDATASET_H diff --git a/tests/framework/Asserts.h b/tests/framework/Asserts.h index 7adfa8f2f3f..fb578592a30 100644 --- a/tests/framework/Asserts.h +++ b/tests/framework/Asserts.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2022 Arm Limited. + * Copyright (c) 2017-2022, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,17 +21,16 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_FRAMEWORK_ASSERTS -#define ARM_COMPUTE_TEST_FRAMEWORK_ASSERTS +#ifndef ACL_TESTS_FRAMEWORK_ASSERTS_H +#define ACL_TESTS_FRAMEWORK_ASSERTS_H + +#include "utils/TypePrinter.h" #include "Exceptions.h" #include "Framework.h" - #include #include -#include "utils/TypePrinter.h" - namespace arm_compute { namespace test @@ -78,28 +77,43 @@ inline void ARM_COMPUTE_PRINT_INFO() namespace detail { -#define ARM_COMPUTE_TEST_COMP_FACTORY(SEVERITY, SEVERITY_NAME, COMP, COMP_NAME, ERROR_CALL) \ - template \ - void ARM_COMPUTE_##SEVERITY##_##COMP_NAME##_IMPL(T &&x, U &&y, const std::string &x_str, const std::string &y_str, LogLevel level) \ - { \ - if(!(x COMP y)) \ - { \ - std::stringstream msg; \ - msg << #SEVERITY_NAME " '" << x_str << " " #COMP " " << y_str << "' failed. [" \ - << std::boolalpha << arm_compute::test::framework::make_printable(x) \ - << " " #COMP " " \ - << std::boolalpha << arm_compute::test::framework::make_printable(y) \ - << "]\n"; \ - arm_compute::test::framework::Framework::get().print_test_info(msg); \ - ERROR_CALL \ - } \ - arm_compute::test::framework::Framework::get().clear_test_info(); \ +#define ARM_COMPUTE_TEST_COMP_FACTORY(SEVERITY, SEVERITY_NAME, COMP, COMP_NAME, ERROR_CALL) \ + template \ + void ARM_COMPUTE_##SEVERITY##_##COMP_NAME##_IMPL(T &&x, U &&y, const std::string &x_str, const std::string &y_str, \ + LogLevel level) \ + { \ + if (!(x COMP y)) \ + { \ + std::stringstream msg; \ + msg << #SEVERITY_NAME " '" << x_str << " " #COMP " " << y_str << "' failed. [" << std::boolalpha \ + << arm_compute::test::framework::make_printable(x) << " " #COMP " " << std::boolalpha \ + << arm_compute::test::framework::make_printable(y) << "]\n"; \ + arm_compute::test::framework::Framework::get().print_test_info(msg); \ + ERROR_CALL \ + } \ + arm_compute::test::framework::Framework::get().clear_test_info(); \ } -ARM_COMPUTE_TEST_COMP_FACTORY(EXPECT, Expectation, ==, EQUAL, arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), level));) -ARM_COMPUTE_TEST_COMP_FACTORY(EXPECT, Expectation, !=, NOT_EQUAL, arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), level));) -ARM_COMPUTE_TEST_COMP_FACTORY(ASSERT, Assertion, ==, EQUAL, throw arm_compute::test::framework::TestError(msg.str(), level);) -ARM_COMPUTE_TEST_COMP_FACTORY(ASSERT, Assertion, !=, NOT_EQUAL, throw arm_compute::test::framework::TestError(msg.str(), level);) +ARM_COMPUTE_TEST_COMP_FACTORY(EXPECT, + Expectation, + ==, + EQUAL, + arm_compute::test::framework::Framework::get().log_failed_expectation( + arm_compute::test::framework::TestError(msg.str(), level));) +ARM_COMPUTE_TEST_COMP_FACTORY(EXPECT, + Expectation, + !=, + NOT_EQUAL, + arm_compute::test::framework::Framework::get().log_failed_expectation( + arm_compute::test::framework::TestError(msg.str(), level));) +ARM_COMPUTE_TEST_COMP_FACTORY(ASSERT, + Assertion, + == + , EQUAL, throw arm_compute::test::framework::TestError(msg.str(), level);) +ARM_COMPUTE_TEST_COMP_FACTORY(ASSERT, + Assertion, + != + , NOT_EQUAL, throw arm_compute::test::framework::TestError(msg.str(), level);) } // namespace detail #define ARM_COMPUTE_ASSERT_NOT_EQUAL(X, Y) \ @@ -118,7 +132,7 @@ ARM_COMPUTE_TEST_COMP_FACTORY(ASSERT, Assertion, !=, NOT_EQUAL, throw arm_comput do \ { \ const auto &x = X; \ - if(!x) \ + if (!x) \ { \ std::stringstream msg; \ msg << "Assertion '" #X "' failed.\n"; \ @@ -126,63 +140,66 @@ ARM_COMPUTE_TEST_COMP_FACTORY(ASSERT, Assertion, !=, NOT_EQUAL, throw arm_comput throw arm_compute::test::framework::TestError(msg.str(), arm_compute::test::framework::LogLevel::ERRORS); \ } \ arm_compute::test::framework::Framework::get().clear_test_info(); \ - } while(false) - -#define ARM_COMPUTE_EXPECT(X, LEVEL) \ - do \ - { \ - const auto &x = X; \ - if(!x) \ - { \ - std::stringstream msg; \ - msg << "Expectation '" #X "' failed.\n"; \ - arm_compute::test::framework::Framework::get().print_test_info(msg); \ - arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ - } \ - arm_compute::test::framework::Framework::get().clear_test_info(); \ - } while(false) - -#define ARM_COMPUTE_EXPECT_NO_THROW(X, LEVEL) \ - do \ - { \ - try \ - { \ - const auto &x = X; \ - (void)x; \ - } \ - catch(...) \ - { \ - std::stringstream msg; \ - msg << "Expectation '" #X "' to not throw failed.\n"; \ - arm_compute::test::framework::Framework::get().print_test_info(msg); \ - arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ - } \ - arm_compute::test::framework::Framework::get().clear_test_info(); \ - } while(false) + } while (false) + +#define ARM_COMPUTE_EXPECT(X, LEVEL) \ + do \ + { \ + const auto &x = X; \ + if (!x) \ + { \ + std::stringstream msg; \ + msg << "Expectation '" #X "' failed.\n"; \ + arm_compute::test::framework::Framework::get().print_test_info(msg); \ + arm_compute::test::framework::Framework::get().log_failed_expectation( \ + arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ + } \ + arm_compute::test::framework::Framework::get().clear_test_info(); \ + } while (false) + +#define ARM_COMPUTE_EXPECT_NO_THROW(X, LEVEL) \ + do \ + { \ + try \ + { \ + const auto &x = X; \ + (void)x; \ + } \ + catch (...) \ + { \ + std::stringstream msg; \ + msg << "Expectation '" #X "' to not throw failed.\n"; \ + arm_compute::test::framework::Framework::get().print_test_info(msg); \ + arm_compute::test::framework::Framework::get().log_failed_expectation( \ + arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ + } \ + arm_compute::test::framework::Framework::get().clear_test_info(); \ + } while (false) #if defined(ARM_COMPUTE_ASSERTS_ENABLED) -#define ARM_COMPUTE_EXPECT_THROW(X, LEVEL) \ - do \ - { \ - bool exception_caught = false; \ - try \ - { \ - const auto &x = X; \ - (void)x; \ - } \ - catch(...) \ - { \ - exception_caught = true; \ - } \ - if(!exception_caught) \ - { \ - std::stringstream msg; \ - msg << "Expectation '" #X "' to throw failed.\n"; \ - arm_compute::test::framework::Framework::get().print_test_info(msg); \ - arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ - } \ - arm_compute::test::framework::Framework::get().clear_test_info(); \ - } while(false) +#define ARM_COMPUTE_EXPECT_THROW(X, LEVEL) \ + do \ + { \ + bool exception_caught = false; \ + try \ + { \ + const auto &x = X; \ + (void)x; \ + } \ + catch (...) \ + { \ + exception_caught = true; \ + } \ + if (!exception_caught) \ + { \ + std::stringstream msg; \ + msg << "Expectation '" #X "' to throw failed.\n"; \ + arm_compute::test::framework::Framework::get().print_test_info(msg); \ + arm_compute::test::framework::Framework::get().log_failed_expectation( \ + arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ + } \ + arm_compute::test::framework::Framework::get().clear_test_info(); \ + } while (false) #else // defined(ARM_COMPUTE_ASSERTS_ENABLED) #define ARM_COMPUTE_EXPECT_THROW(X, LEVEL) \ do \ @@ -192,7 +209,7 @@ ARM_COMPUTE_TEST_COMP_FACTORY(ASSERT, Assertion, !=, NOT_EQUAL, throw arm_comput arm_compute::test::framework::Framework::get().print_test_info(msg); \ arm_compute::test::framework::Framework::get().log_info(msg.str()); \ arm_compute::test::framework::Framework::get().clear_test_info(); \ - } while(false) + } while (false) #endif // defined(ARM_COMPUTE_ASSERTS_ENABLED) #define ARM_COMPUTE_ASSERT_FAIL(MSG) \ @@ -203,18 +220,19 @@ ARM_COMPUTE_TEST_COMP_FACTORY(ASSERT, Assertion, !=, NOT_EQUAL, throw arm_comput arm_compute::test::framework::Framework::get().print_test_info(msg); \ throw arm_compute::test::framework::TestError(msg.str(), arm_compute::test::framework::LogLevel::ERRORS); \ arm_compute::test::framework::Framework::get().clear_test_info(); \ - } while(false) - -#define ARM_COMPUTE_EXPECT_FAIL(MSG, LEVEL) \ - do \ - { \ - std::stringstream msg; \ - msg << "Expectation '" << MSG << "' failed.\n"; \ - arm_compute::test::framework::Framework::get().print_test_info(msg); \ - arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ - arm_compute::test::framework::Framework::get().clear_test_info(); \ - } while(false) + } while (false) + +#define ARM_COMPUTE_EXPECT_FAIL(MSG, LEVEL) \ + do \ + { \ + std::stringstream msg; \ + msg << "Expectation '" << MSG << "' failed.\n"; \ + arm_compute::test::framework::Framework::get().print_test_info(msg); \ + arm_compute::test::framework::Framework::get().log_failed_expectation( \ + arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ + arm_compute::test::framework::Framework::get().clear_test_info(); \ + } while (false) } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_FRAMEWORK_ASSERTS */ +#endif // ACL_TESTS_FRAMEWORK_ASSERTS_H diff --git a/tests/framework/DatasetModes.cpp b/tests/framework/DatasetModes.cpp index 5acc792628f..d5b5a65e736 100644 --- a/tests/framework/DatasetModes.cpp +++ b/tests/framework/DatasetModes.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,7 +24,6 @@ #include "DatasetModes.h" #include "Utils.h" - #include namespace arm_compute @@ -35,19 +34,18 @@ namespace framework { DatasetMode dataset_mode_from_name(const std::string &name) { - static const std::map modes = - { - { "all", DatasetMode::ALL }, - { "disabled", DatasetMode::DISABLED }, - { "precommit", DatasetMode::PRECOMMIT }, - { "nightly", DatasetMode::NIGHTLY }, + static const std::map modes = { + {"all", DatasetMode::ALL}, + {"disabled", DatasetMode::DISABLED}, + {"precommit", DatasetMode::PRECOMMIT}, + {"nightly", DatasetMode::NIGHTLY}, }; try { return modes.at(tolower(name)); } - catch(const std::out_of_range &) + catch (const std::out_of_range &) { throw std::invalid_argument(name); } diff --git a/tests/framework/DatasetModes.h b/tests/framework/DatasetModes.h index 19a3cb483cd..220059f4712 100644 --- a/tests/framework/DatasetModes.h +++ b/tests/framework/DatasetModes.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DATASET_MODES -#define ARM_COMPUTE_TEST_DATASET_MODES +#ifndef ACL_TESTS_FRAMEWORK_DATASETMODES_H +#define ACL_TESTS_FRAMEWORK_DATASETMODES_H #include #include @@ -76,7 +76,7 @@ inline ::std::istream &operator>>(::std::istream &stream, DatasetMode &mode) inline ::std::ostream &operator<<(::std::ostream &stream, DatasetMode mode) { - switch(mode) + switch (mode) { case DatasetMode::DISABLED: stream << "DISABLED"; @@ -106,4 +106,4 @@ inline std::string to_string(DatasetMode mode) } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DATASET_MODES */ +#endif // ACL_TESTS_FRAMEWORK_DATASETMODES_H diff --git a/tests/framework/Exceptions.cpp b/tests/framework/Exceptions.cpp index 54936124a3c..c0355ed4489 100644 --- a/tests/framework/Exceptions.cpp +++ b/tests/framework/Exceptions.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,7 +24,6 @@ #include "Exceptions.h" #include "Utils.h" - #include #include @@ -36,22 +35,17 @@ namespace framework { LogLevel log_level_from_name(const std::string &name) { - static const std::map levels = - { - { "none", LogLevel::NONE }, - { "config", LogLevel::CONFIG }, - { "tests", LogLevel::TESTS }, - { "errors", LogLevel::ERRORS }, - { "debug", LogLevel::DEBUG }, - { "measurements", LogLevel::MEASUREMENTS }, - { "all", LogLevel::ALL }, + static const std::map levels = { + {"none", LogLevel::NONE}, {"config", LogLevel::CONFIG}, {"tests", LogLevel::TESTS}, + {"errors", LogLevel::ERRORS}, {"debug", LogLevel::DEBUG}, {"measurements", LogLevel::MEASUREMENTS}, + {"all", LogLevel::ALL}, }; try { return levels.at(tolower(name)); } - catch(const std::out_of_range &) + catch (const std::out_of_range &) { throw std::invalid_argument(name); } @@ -67,7 +61,7 @@ ::std::istream &operator>>(::std::istream &stream, LogLevel &level) ::std::ostream &operator<<(::std::ostream &stream, LogLevel level) { - switch(level) + switch (level) { case LogLevel::NONE: stream << "NONE"; @@ -104,15 +98,14 @@ std::string to_string(LogLevel level) return stream.str(); } -FileNotFound::FileNotFound(const std::string &msg) - : std::runtime_error{ msg } +FileNotFound::FileNotFound(const std::string &msg) : std::runtime_error{msg} { } TestError::TestError(const std::string &msg, LogLevel level, std::string context) - : std::runtime_error{ msg }, _level{ level }, _msg{ msg }, _context{ std::move(context) }, _combined{ "ERROR: " + msg } + : std::runtime_error{msg}, _level{level}, _msg{msg}, _context{std::move(context)}, _combined{"ERROR: " + msg} { - if(!_context.empty()) + if (!_context.empty()) { _combined += "\nCONTEXT:\n" + _context; } diff --git a/tests/framework/Exceptions.h b/tests/framework/Exceptions.h index 75de6838578..1d5e302c57e 100644 --- a/tests/framework/Exceptions.h +++ b/tests/framework/Exceptions.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_EXCEPTIONS -#define ARM_COMPUTE_TEST_EXCEPTIONS +#ifndef ACL_TESTS_FRAMEWORK_EXCEPTIONS_H +#define ACL_TESTS_FRAMEWORK_EXCEPTIONS_H #include #include @@ -58,10 +58,10 @@ enum class LogLevel ALL, }; -LogLevel log_level_from_name(const std::string &name); +LogLevel log_level_from_name(const std::string &name); ::std::istream &operator>>(::std::istream &stream, LogLevel &level); ::std::ostream &operator<<(::std::ostream &stream, LogLevel level); -std::string to_string(LogLevel level); +std::string to_string(LogLevel level); /** Error class for when some external assets are missing */ class FileNotFound : public std::runtime_error @@ -101,7 +101,7 @@ class TestError : public std::runtime_error const char *what() const noexcept override; private: - LogLevel _level{ LogLevel::ERRORS }; + LogLevel _level{LogLevel::ERRORS}; std::string _msg{}; std::string _context{}; std::string _combined{}; @@ -109,4 +109,4 @@ class TestError : public std::runtime_error } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_EXCEPTIONS */ +#endif // ACL_TESTS_FRAMEWORK_EXCEPTIONS_H diff --git a/tests/framework/Fixture.h b/tests/framework/Fixture.h index 7692bca21ec..bdb6bc4ff26 100644 --- a/tests/framework/Fixture.h +++ b/tests/framework/Fixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_FIXTURE -#define ARM_COMPUTE_TEST_FIXTURE +#ifndef ACL_TESTS_FRAMEWORK_FIXTURE_H +#define ACL_TESTS_FRAMEWORK_FIXTURE_H namespace arm_compute { @@ -45,13 +45,13 @@ class Fixture * * The function is called before the test case is executed. */ - void setup() {}; + void setup(){}; /** Teardown function. * * The function is called after the test case finished. */ - void teardown() {}; + void teardown(){}; protected: Fixture() = default; @@ -60,4 +60,4 @@ class Fixture } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_FIXTURE */ +#endif // ACL_TESTS_FRAMEWORK_FIXTURE_H diff --git a/tests/framework/Framework.cpp b/tests/framework/Framework.cpp index 7edde7af656..d9d257d9ffe 100644 --- a/tests/framework/Framework.cpp +++ b/tests/framework/Framework.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021, 2023-2024 Arm Limited. + * Copyright (c) 2017-2021, 2023-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,6 +24,7 @@ #include "Framework.h" #include "arm_compute/runtime/Scheduler.h" + #include "tests/framework/ParametersLibrary.h" #include "tests/framework/TestFilter.h" @@ -49,49 +50,94 @@ namespace framework { std::unique_ptr instruments_info; -Framework::Framework() - : _test_filter(nullptr) -{ - _available_instruments.emplace(std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::NONE), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::TIME_MS), - Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::TIME_S), - Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::NONE), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::TIME_MS), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::TIME_S), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::NONE), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::TIME_MS), - Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::TIME_S), - Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::NONE), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::TIME_MS), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::TIME_S), Instrument::make_instrument); +Framework::Framework() : _test_filter(nullptr) +{ + _available_instruments.emplace( + std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::NONE), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::TIME_MS), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::TIME_S), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::NONE), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::TIME_MS), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::TIME_S), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::NONE), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::TIME_MS), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::TIME_S), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::NONE), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::TIME_MS), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::TIME_S), + Instrument::make_instrument); #ifdef PMU_ENABLED - _available_instruments.emplace(std::pair(InstrumentType::PMU, ScaleFactor::NONE), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::PMU, ScaleFactor::SCALE_1K), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::PMU, ScaleFactor::SCALE_1M), Instrument::make_instrument); + _available_instruments.emplace(std::pair(InstrumentType::PMU, ScaleFactor::NONE), + Instrument::make_instrument); + _available_instruments.emplace(std::pair(InstrumentType::PMU, ScaleFactor::SCALE_1K), + Instrument::make_instrument); + _available_instruments.emplace(std::pair(InstrumentType::PMU, ScaleFactor::SCALE_1M), + Instrument::make_instrument); #endif /* PMU_ENABLED */ #ifdef MALI_ENABLED - _available_instruments.emplace(std::pair(InstrumentType::MALI, ScaleFactor::NONE), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::MALI, ScaleFactor::SCALE_1K), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::MALI, ScaleFactor::SCALE_1M), Instrument::make_instrument); + _available_instruments.emplace(std::pair(InstrumentType::MALI, ScaleFactor::NONE), + Instrument::make_instrument); + _available_instruments.emplace(std::pair(InstrumentType::MALI, ScaleFactor::SCALE_1K), + Instrument::make_instrument); + _available_instruments.emplace(std::pair(InstrumentType::MALI, ScaleFactor::SCALE_1M), + Instrument::make_instrument); #endif /* MALI_ENABLED */ #ifdef ARM_COMPUTE_CL - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::NONE), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_US), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_MS), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_S), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::NONE), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_US), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_MS), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_S), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::NONE), Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::SCALE_1K), - Instrument::make_instrument); - _available_instruments.emplace(std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::SCALE_1M), - Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::NONE), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_US), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_MS), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_S), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::NONE), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_US), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_MS), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_S), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::NONE), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::SCALE_1K), + Instrument::make_instrument); + _available_instruments.emplace( + std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::SCALE_1M), + Instrument::make_instrument); #endif /* ARM_COMPUTE_CL */ instruments_info = std::make_unique(); @@ -101,7 +147,7 @@ std::set Framework::available_instruments() const { std::set types; - for(const auto &instrument : _available_instruments) + for (const auto &instrument : _available_instruments) { types.emplace(instrument.first); } @@ -113,7 +159,7 @@ std::map Framework::count_test_results() const { std::map counts; - for(const auto &test : _test_results) + for (const auto &test : _test_results) { ++counts[test.second.status]; } @@ -130,14 +176,15 @@ Framework &Framework::get() void Framework::init(const FrameworkConfig &config) { _test_filter.reset(new TestFilter(config.mode, config.name_filter, config.id_filter)); - _num_iterations = config.num_iterations; - _log_level = config.log_level; - _cooldown_sec = config.cooldown_sec; - _configure_only = config.configure_only; - _print_rerun_cmd = config.print_rerun_cmd; - _seed = config.seed; + _num_iterations = config.num_iterations; + _log_level = config.log_level; + _cooldown_sec = config.cooldown_sec; + _configure_only = config.configure_only; + _print_rerun_cmd = config.print_rerun_cmd; + _seed = config.seed; _print_iterations = config.print_iterations; - _instruments = std::set(std::begin(config.instruments), std::end(config.instruments)); + _instruments = + std::set(std::begin(config.instruments), std::end(config.instruments)); } std::string Framework::current_suite_name() const @@ -172,11 +219,11 @@ bool Framework::has_test_info() const void Framework::print_test_info(std::ostream &os) const { - if(!_test_info.empty()) + if (!_test_info.empty()) { os << "CONTEXT:\n"; - for(const auto &str : _test_info) + for (const auto &str : _test_info) { os << " " << str << "\n"; } @@ -191,12 +238,9 @@ void Framework::func_on_all_printers(F &&func) void Framework::log_test_start(const TestInfo &info) { - if(_log_level >= LogLevel::TESTS) + if (_log_level >= LogLevel::TESTS) { - func_on_all_printers([&](Printer * p) - { - p->print_test_header(info); - }); + func_on_all_printers([&](Printer *p) { p->print_test_header(info); }); } } @@ -207,21 +251,19 @@ void Framework::log_test_skipped(const TestInfo &info) void Framework::log_test_end(const TestInfo &info) { - if(_log_level >= LogLevel::MEASUREMENTS) + if (_log_level >= LogLevel::MEASUREMENTS) { - func_on_all_printers([&](Printer * p) - { - p->print_profiler_header(_test_results.at(info).header_data); - p->print_measurements(_test_results.at(info).measurements); - }); + func_on_all_printers( + [&](Printer *p) + { + p->print_profiler_header(_test_results.at(info).header_data); + p->print_measurements(_test_results.at(info).measurements); + }); } - if(_log_level >= LogLevel::TESTS) + if (_log_level >= LogLevel::TESTS) { - func_on_all_printers([](Printer * p) - { - p->print_test_footer(); - }); + func_on_all_printers([](Printer *p) { p->print_test_footer(); }); } } @@ -232,12 +274,9 @@ void Framework::log_failed_expectation(const TestError &error) const bool is_expected_failure = _current_test_info->status == TestCaseFactory::Status::EXPECTED_FAILURE; - if(_log_level >= error.level()) + if (_log_level >= error.level()) { - func_on_all_printers([&](Printer * p) - { - p->print_error(error, is_expected_failure); - }); + func_on_all_printers([&](Printer *p) { p->print_error(error, is_expected_failure); }); } _current_test_result->status = TestResult::Status::FAILED; @@ -245,12 +284,9 @@ void Framework::log_failed_expectation(const TestError &error) void Framework::log_info(const std::string &info) { - if(_log_level >= LogLevel::DEBUG) + if (_log_level >= LogLevel::DEBUG) { - func_on_all_printers([&](Printer * p) - { - p->print_info(info); - }); + func_on_all_printers([&](Printer *p) { p->print_info(info); }); } } @@ -296,7 +332,7 @@ bool Framework::error_on_missing_assets() const TestResult::Status Framework::run_test(const TestInfo &info, TestCaseFactory &test_factory) { - if(test_factory.status() == TestCaseFactory::Status::DISABLED) + if (test_factory.status() == TestCaseFactory::Status::DISABLED) { log_test_skipped(info); set_test_result(info, TestResult(TestResult::Status::DISABLED)); @@ -311,12 +347,9 @@ TestResult::Status Framework::run_test(const TestInfo &info, TestCaseFactory &te _current_test_info = &info; _current_test_result = &result; - if(_log_level >= LogLevel::ERRORS) + if (_log_level >= LogLevel::ERRORS) { - func_on_all_printers([](Printer * p) - { - p->print_errors_header(); - }); + func_on_all_printers([](Printer *p) { p->print_errors_header(); }); } const bool is_expected_failure = info.status == TestCaseFactory::Status::EXPECTED_FAILURE; @@ -331,7 +364,7 @@ TestResult::Status Framework::run_test(const TestInfo &info, TestCaseFactory &te test_case->do_setup(); - for(int i = 0; i < _num_iterations; ++i) + for (int i = 0; i < _num_iterations; ++i) { //Start the profiler if: //- there is only one iteration @@ -339,7 +372,7 @@ TestResult::Status Framework::run_test(const TestInfo &info, TestCaseFactory &te // //Reason: if the CLTuner is enabled then the first run will be really messy //as each kernel will be executed several times, messing up the instruments like OpenCL timers. - if(_num_iterations == 1 || i != 0) + if (_num_iterations == 1 || i != 0) { profiler.start(); } @@ -349,9 +382,9 @@ TestResult::Status Framework::run_test(const TestInfo &info, TestCaseFactory &te } test_case->do_run(); test_case->do_sync(); - if(_num_iterations == 1 || i != 0) + if (_num_iterations == 1 || i != 0) { - profiler.stop(_print_iterations?i:-1); + profiler.stop(_print_iterations ? i : -1); } } @@ -360,180 +393,155 @@ TestResult::Status Framework::run_test(const TestInfo &info, TestCaseFactory &te profiler.test_stop(); // Change status to success if no error has happend - if(result.status == TestResult::Status::NOT_RUN) + if (result.status == TestResult::Status::NOT_RUN) { result.status = TestResult::Status::SUCCESS; } } - catch(const FileNotFound &error) + catch (const FileNotFound &error) { profiler.test_stop(); - if(_error_on_missing_assets) + if (_error_on_missing_assets) { - if(_log_level >= LogLevel::ERRORS) + if (_log_level >= LogLevel::ERRORS) { TestError test_error(error.what(), LogLevel::ERRORS); - func_on_all_printers([&](Printer * p) - { - p->print_error(test_error, is_expected_failure); - }); + func_on_all_printers([&](Printer *p) { p->print_error(test_error, is_expected_failure); }); } result.status = TestResult::Status::FAILED; - if(_throw_errors) + if (_throw_errors) { throw; } } else { - if(_log_level >= LogLevel::DEBUG) + if (_log_level >= LogLevel::DEBUG) { - func_on_all_printers([&](Printer * p) - { - p->print_info(error.what()); - }); + func_on_all_printers([&](Printer *p) { p->print_info(error.what()); }); } result.status = TestResult::Status::NOT_RUN; } } - catch(const TestError &error) + catch (const TestError &error) { profiler.test_stop(); - if(_log_level >= error.level()) + if (_log_level >= error.level()) { - func_on_all_printers([&](Printer * p) - { - p->print_error(error, is_expected_failure); - }); + func_on_all_printers([&](Printer *p) { p->print_error(error, is_expected_failure); }); } result.status = TestResult::Status::FAILED; - if(_throw_errors) + if (_throw_errors) { throw; } } #ifdef ARM_COMPUTE_CL - catch(const ::cl::Error &error) + catch (const ::cl::Error &error) { profiler.test_stop(); - if(_log_level >= LogLevel::ERRORS) + if (_log_level >= LogLevel::ERRORS) { std::stringstream stream; stream << "Error code: " << error.err(); TestError test_error(error.what(), LogLevel::ERRORS, stream.str()); - func_on_all_printers([&](Printer * p) - { - p->print_error(test_error, is_expected_failure); - }); + func_on_all_printers([&](Printer *p) { p->print_error(test_error, is_expected_failure); }); } result.status = TestResult::Status::FAILED; - if(_throw_errors) + if (_throw_errors) { throw; } } #endif /* ARM_COMPUTE_CL */ - catch(const std::exception &error) + catch (const std::exception &error) { profiler.test_stop(); - if(_log_level >= LogLevel::ERRORS) + if (_log_level >= LogLevel::ERRORS) { - func_on_all_printers([&](Printer * p) - { - p->print_error(error, is_expected_failure); - }); + func_on_all_printers([&](Printer *p) { p->print_error(error, is_expected_failure); }); } result.status = TestResult::Status::CRASHED; - if(_throw_errors) + if (_throw_errors) { throw; } } - catch(...) + catch (...) { profiler.test_stop(); - if(_log_level >= LogLevel::ERRORS) + if (_log_level >= LogLevel::ERRORS) { - func_on_all_printers([&](Printer * p) - { - p->print_error(TestError("Received unknown exception"), is_expected_failure); - }); + func_on_all_printers([&](Printer *p) + { p->print_error(TestError("Received unknown exception"), is_expected_failure); }); } result.status = TestResult::Status::CRASHED; - if(_throw_errors) + if (_throw_errors) { throw; } } } - catch(const std::exception &error) + catch (const std::exception &error) { - if(_log_level >= LogLevel::ERRORS) + if (_log_level >= LogLevel::ERRORS) { - func_on_all_printers([&](Printer * p) - { - p->print_error(error, is_expected_failure); - }); + func_on_all_printers([&](Printer *p) { p->print_error(error, is_expected_failure); }); } result.status = TestResult::Status::CRASHED; - if(_throw_errors) + if (_throw_errors) { throw; } } - catch(...) + catch (...) { - if(_log_level >= LogLevel::ERRORS) + if (_log_level >= LogLevel::ERRORS) { - func_on_all_printers([&](Printer * p) - { - p->print_error(TestError("Received unknown exception"), is_expected_failure); - }); + func_on_all_printers([&](Printer *p) + { p->print_error(TestError("Received unknown exception"), is_expected_failure); }); } result.status = TestResult::Status::CRASHED; - if(_throw_errors) + if (_throw_errors) { throw; } } - if(_log_level >= LogLevel::ERRORS) + if (_log_level >= LogLevel::ERRORS) { - func_on_all_printers([](Printer * p) - { - p->print_errors_footer(); - }); + func_on_all_printers([](Printer *p) { p->print_errors_footer(); }); } _current_test_info = nullptr; _current_test_result = nullptr; - if(result.status == TestResult::Status::FAILED) + if (result.status == TestResult::Status::FAILED) { - if(info.status == TestCaseFactory::Status::EXPECTED_FAILURE) + if (info.status == TestCaseFactory::Status::EXPECTED_FAILURE) { result.status = TestResult::Status::EXPECTED_FAILURE; } } - if(result.status == TestResult::Status::FAILED || result.status == TestResult::Status::CRASHED) + if (result.status == TestResult::Status::FAILED || result.status == TestResult::Status::CRASHED) { - if(_stop_on_error) + if (_stop_on_error) { throw std::runtime_error("Abandon on first error."); } @@ -552,12 +560,9 @@ bool Framework::run() // Clear old test results _test_results.clear(); - if(_log_level >= LogLevel::TESTS) + if (_log_level >= LogLevel::TESTS) { - func_on_all_printers([](Printer * p) - { - p->print_run_header(); - }); + func_on_all_printers([](Printer *p) { p->print_run_header(); }); } const std::chrono::time_point start = std::chrono::high_resolution_clock::now(); @@ -566,22 +571,23 @@ bool Framework::run() int id_run_test = 0; ARM_COMPUTE_UNUSED(id_run_test); // Not used if ARM_COMPUTE_CL is not defined - for(auto &test_factory : _test_factories) + for (auto &test_factory : _test_factories) { const std::string test_case_name = test_factory->name(); - const TestInfo test_info{ id, test_case_name, test_factory->mode(), test_factory->status() }; + const TestInfo test_info{id, test_case_name, test_factory->mode(), test_factory->status()}; - if(_test_filter->is_selected(test_info)) + if (_test_filter->is_selected(test_info)) { #ifdef ARM_COMPUTE_CL // Every 100 tests, reset the OpenCL context to release the allocated memory - if(opencl_is_available() && (id_run_test % 100) == 0) + if (opencl_is_available() && (id_run_test % 100) == 0) { auto ctx_properties = CLScheduler::get().context().getInfo(nullptr); auto queue_properties = CLScheduler::get().queue().getInfo(nullptr); - cl::Context new_ctx = cl::Context(CL_DEVICE_TYPE_DEFAULT, ctx_properties.data()); - cl::CommandQueue new_queue = cl::CommandQueue(new_ctx, CLKernelLibrary::get().get_device(), queue_properties); + cl::Context new_ctx = cl::Context(CL_DEVICE_TYPE_DEFAULT, ctx_properties.data()); + cl::CommandQueue new_queue = + cl::CommandQueue(new_ctx, CLKernelLibrary::get().get_device(), queue_properties); CLKernelLibrary::get().clear_programs_cache(); CLScheduler::get().set_context(new_ctx); @@ -589,9 +595,10 @@ bool Framework::run() } #endif // ARM_COMPUTE_CL TestResult::Status result = run_test(test_info, *test_factory); - if((_print_rerun_cmd) && (result == TestResult::Status::CRASHED || result == TestResult::Status::FAILED)) + if ((_print_rerun_cmd) && (result == TestResult::Status::CRASHED || result == TestResult::Status::FAILED)) { - std::cout << "Rerun command: ./arm_compute_validation --filter='^" << test_info.name << "$' --seed=" << _seed << std::endl; + std::cout << "Rerun command: ./arm_compute_validation --filter='^" << test_info.name + << "$' --seed=" << _seed << std::endl; } ++id_run_test; @@ -604,28 +611,25 @@ bool Framework::run() const std::chrono::time_point end = std::chrono::high_resolution_clock::now(); - if(_log_level >= LogLevel::TESTS) + if (_log_level >= LogLevel::TESTS) { - func_on_all_printers([](Printer * p) - { - p->print_run_footer(); - }); + func_on_all_printers([](Printer *p) { p->print_run_footer(); }); } - auto runtime = std::chrono::duration_cast(end - start); + auto runtime = std::chrono::duration_cast(end - start); std::map results = count_test_results(); - if(_log_level > LogLevel::NONE) + if (_log_level > LogLevel::NONE) { - std::cout << "Executed " << _test_results.size() << " test(s) (" - << results[TestResult::Status::SUCCESS] << " passed, " - << results[TestResult::Status::EXPECTED_FAILURE] << " expected failures, " - << results[TestResult::Status::FAILED] << " failed, " - << results[TestResult::Status::CRASHED] << " crashed, " - << results[TestResult::Status::DISABLED] << " disabled) in " << runtime.count() << " second(s)\n"; + std::cout << "Executed " << _test_results.size() << " test(s) (" << results[TestResult::Status::SUCCESS] + << " passed, " << results[TestResult::Status::EXPECTED_FAILURE] << " expected failures, " + << results[TestResult::Status::FAILED] << " failed, " << results[TestResult::Status::CRASHED] + << " crashed, " << results[TestResult::Status::DISABLED] << " disabled) in " << runtime.count() + << " second(s)\n"; } - int num_successful_tests = results[TestResult::Status::SUCCESS] + results[TestResult::Status::EXPECTED_FAILURE] + results[TestResult::Status::DISABLED]; + int num_successful_tests = results[TestResult::Status::SUCCESS] + results[TestResult::Status::EXPECTED_FAILURE] + + results[TestResult::Status::DISABLED]; return (static_cast(num_successful_tests) == _test_results.size()); } @@ -639,7 +643,7 @@ void Framework::print_test_results(Printer &printer) const { printer.print_run_header(); - for(const auto &test : _test_results) + for (const auto &test : _test_results) { printer.print_test_header(test.first); printer.print_profiler_header(test.second.header_data); @@ -654,23 +658,24 @@ Profiler Framework::get_profiler() const { Profiler profiler; - const bool all_instruments = std::any_of( - _instruments.begin(), - _instruments.end(), - [](InstrumentsDescription type) -> bool { return type.first == InstrumentType::ALL; }); + const bool all_instruments = + std::any_of(_instruments.begin(), _instruments.end(), + [](InstrumentsDescription type) -> bool { return type.first == InstrumentType::ALL; }); auto is_selected = [&](InstrumentsDescription instrument) -> bool { - return std::find_if(_instruments.begin(), _instruments.end(), [&](InstrumentsDescription type) -> bool { - const auto group = static_cast(static_cast(type.first) & 0xFF00); - return (group == instrument.first) && (instrument.second == type.second); - }) - != _instruments.end(); + return std::find_if(_instruments.begin(), _instruments.end(), + [&](InstrumentsDescription type) -> bool + { + const auto group = + static_cast(static_cast(type.first) & 0xFF00); + return (group == instrument.first) && (instrument.second == type.second); + }) != _instruments.end(); }; - for(const auto &instrument : _available_instruments) + for (const auto &instrument : _available_instruments) { - if(all_instruments || is_selected(instrument.first)) + if (all_instruments || is_selected(instrument.first)) { profiler.add(instrument.second()); } @@ -690,11 +695,11 @@ std::vector Framework::test_infos() const int id = 0; - for(const auto &factory : _test_factories) + for (const auto &factory : _test_factories) { - const TestInfo test_info{ id, factory->name(), factory->mode(), factory->status() }; + const TestInfo test_info{id, factory->name(), factory->mode(), factory->status()}; - if(_test_filter->is_selected(test_info)) + if (_test_filter->is_selected(test_info)) { ids.emplace_back(std::move(test_info)); } diff --git a/tests/framework/Framework.h b/tests/framework/Framework.h index d2f893698cf..c284f6008ec 100644 --- a/tests/framework/Framework.h +++ b/tests/framework/Framework.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021, 2023-2024 Arm Limited. + * Copyright (c) 2017-2021, 2023-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -26,14 +26,13 @@ #include "DatasetModes.h" #include "Exceptions.h" +#include "instruments/Instruments.h" +#include "printers/Printer.h" #include "Profiler.h" #include "TestCase.h" #include "TestCaseFactory.h" #include "TestResult.h" #include "Utils.h" -#include "instruments/Instruments.h" -#include "printers/Printer.h" - #include #include #include @@ -56,17 +55,18 @@ class TestFilter; /** Framework configuration structure */ struct FrameworkConfig { - std::vector instruments{}; /**< Instrument types that will be used for benchmarking. */ - std::string name_filter{}; /**< Regular expression to filter tests by name. Only matching tests will be executed. */ - std::string id_filter{}; /**< String to match selected test ids. Only matching tests will be executed. */ - DatasetMode mode{ DatasetMode::ALL }; /**< Dataset mode. */ - int num_iterations{ 1 }; /**< Number of iterations per test. */ - float cooldown_sec{ -1.f }; /**< Delay between tests in seconds. */ - LogLevel log_level{ LogLevel::NONE }; /**< Verbosity of the output. */ - bool configure_only{ false }; /**< Only configure kernels */ - bool print_rerun_cmd{ false }; /**< Print the command to rerun the failed testcase */ - unsigned int seed{ 0 }; /**< The seed that is used to fill tensors with random values.*/ - bool print_iterations{false}; /**< Print the time taken by each iteration.*/ + std::vector + instruments{}; /**< Instrument types that will be used for benchmarking. */ + std::string name_filter{}; /**< Regular expression to filter tests by name. Only matching tests will be executed. */ + std::string id_filter{}; /**< String to match selected test ids. Only matching tests will be executed. */ + DatasetMode mode{DatasetMode::ALL}; /**< Dataset mode. */ + int num_iterations{1}; /**< Number of iterations per test. */ + float cooldown_sec{-1.f}; /**< Delay between tests in seconds. */ + LogLevel log_level{LogLevel::NONE}; /**< Verbosity of the output. */ + bool configure_only{false}; /**< Only configure kernels */ + bool print_rerun_cmd{false}; /**< Print the command to rerun the failed testcase */ + unsigned int seed{0}; /**< The seed that is used to fill tensors with random values.*/ + bool print_iterations{false}; /**< Print the time taken by each iteration.*/ }; /** Information about a test case. @@ -152,7 +152,8 @@ class Framework final * @param[in] data Data that will be used as input to the test. */ template - void add_data_test_case(std::string test_name, DatasetMode mode, TestCaseFactory::Status status, std::string description, D &&data); + void add_data_test_case( + std::string test_name, DatasetMode mode, TestCaseFactory::Status status, std::string description, D &&data); /** Add info string for the next expectation/assertion. * @@ -353,10 +354,10 @@ class Framework final Framework(); ~Framework() = default; - Framework(const Framework &) = delete; + Framework(const Framework &) = delete; Framework &operator=(const Framework &) = delete; - TestResult::Status run_test(const TestInfo &info, TestCaseFactory &test_factory); + TestResult::Status run_test(const TestInfo &info, TestCaseFactory &test_factory); std::map count_test_results() const; /** Returns the current test suite name. @@ -375,45 +376,49 @@ class Framework final std::vector _test_suite_name{}; std::vector> _test_factories{}; - std::map _test_results{}; - int _num_iterations{ 1 }; - float _cooldown_sec{ -1.f }; - bool _throw_errors{ false }; - bool _stop_on_error{ false }; - bool _error_on_missing_assets{ false }; - std::vector _printers{}; - bool _configure_only{ false }; - bool _new_fixture_call{ false }; - bool _print_rerun_cmd{ false }; - unsigned int _seed{ 0 }; - PrepareFunc _prepare_function{}; - bool _print_iterations{false}; + std::map _test_results{}; + int _num_iterations{1}; + float _cooldown_sec{-1.f}; + bool _throw_errors{false}; + bool _stop_on_error{false}; + bool _error_on_missing_assets{false}; + std::vector _printers{}; + bool _configure_only{false}; + bool _new_fixture_call{false}; + bool _print_rerun_cmd{false}; + unsigned int _seed{0}; + PrepareFunc _prepare_function{}; + bool _print_iterations{false}; using create_function = std::unique_ptr(); std::map _available_instruments{}; - std::set _instruments{ std::pair(InstrumentType::NONE, ScaleFactor::NONE) }; - std::unique_ptr _test_filter; - LogLevel _log_level{ LogLevel::ALL }; - const TestInfo *_current_test_info{ nullptr }; - TestResult *_current_test_result{ nullptr }; - std::vector _test_info{}; + std::set _instruments{ + std::pair(InstrumentType::NONE, ScaleFactor::NONE)}; + std::unique_ptr _test_filter; + LogLevel _log_level{LogLevel::ALL}; + const TestInfo *_current_test_info{nullptr}; + TestResult *_current_test_result{nullptr}; + std::vector _test_info{}; }; template inline void Framework::add_test_case(std::string test_name, DatasetMode mode, TestCaseFactory::Status status) { - _test_factories.emplace_back(std::make_unique>(current_suite_name(), std::move(test_name), mode, status)); + _test_factories.emplace_back( + std::make_unique>(current_suite_name(), std::move(test_name), mode, status)); } template -inline void Framework::add_data_test_case(std::string test_name, DatasetMode mode, TestCaseFactory::Status status, std::string description, D &&data) +inline void Framework::add_data_test_case( + std::string test_name, DatasetMode mode, TestCaseFactory::Status status, std::string description, D &&data) { // WORKAROUND for GCC 4.9 // The function should get *it which is tuple but that seems to trigger a // bug in the compiler. - auto tmp = std::unique_ptr())>>(new DataTestCaseFactory())>(current_suite_name(), std::move(test_name), mode, status, - std::move(description), *data)); + auto tmp = std::unique_ptr())>>( + new DataTestCaseFactory())>(current_suite_name(), std::move(test_name), mode, + status, std::move(description), *data)); _test_factories.emplace_back(std::move(tmp)); } } // namespace framework diff --git a/tests/framework/Macros.h b/tests/framework/Macros.h index dc636b968fe..9fd3d1d7d16 100644 --- a/tests/framework/Macros.h +++ b/tests/framework/Macros.h @@ -34,7 +34,7 @@ #define TEST_SUITE(SUITE_NAME) \ namespace SUITE_NAME##Suite \ { \ - static arm_compute::test::framework::detail::TestSuiteRegistrar SUITE_NAME##Suite_reg{ #SUITE_NAME }; + static arm_compute::test::framework::detail::TestSuiteRegistrar SUITE_NAME##Suite_reg{#SUITE_NAME}; #define TEST_SUITE_END() \ static arm_compute::test::framework::detail::TestSuiteRegistrar Suite_end; \ @@ -50,7 +50,7 @@ #define CONCAT(ARG0, ARG1) ARG0##ARG1 #define VARIADIC_SIZE_IMPL(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, size, ...) size -#define VARIADIC_SIZE(...) VARIADIC_SIZE_IMPL(__VA_ARGS__, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +#define VARIADIC_SIZE(...) VARIADIC_SIZE_IMPL(__VA_ARGS__, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) #define JOIN_PARAM1(OP, param) OP(0, param) #define JOIN_PARAM2(OP, param, ...) \ @@ -102,22 +102,21 @@ CONCAT(JOIN_PARAM, NUM) \ (OP, __VA_ARGS__) -#define MAKE_TYPE_PARAM(i, name) typename T##i -#define MAKE_ARG_PARAM(i, name) const T##i &name +#define MAKE_TYPE_PARAM(i, name) typename T##i +#define MAKE_ARG_PARAM(i, name) const T##i &name #define MAKE_NON_CONST_ARG_PARAM(i, name) T##i &name -#define MAKE_TYPE_PARAMS(...) JOIN_PARAM(MAKE_TYPE_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) -#define MAKE_ARG_PARAMS(...) JOIN_PARAM(MAKE_ARG_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) -#define MAKE_NON_CONST_ARG_PARAMS(...) JOIN_PARAM(MAKE_NON_CONST_ARG_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) +#define MAKE_TYPE_PARAMS(...) JOIN_PARAM(MAKE_TYPE_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) +#define MAKE_ARG_PARAMS(...) JOIN_PARAM(MAKE_ARG_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) +#define MAKE_NON_CONST_ARG_PARAMS(...) JOIN_PARAM(MAKE_NON_CONST_ARG_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) // // TEST CASE MACROS // -#define TEST_CASE_CONSTRUCTOR(TEST_NAME) \ - TEST_NAME() = default; -#define DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ - template \ - explicit TEST_NAME(D &&data) : DataTestCase{ std::forward(data) } \ - { \ +#define TEST_CASE_CONSTRUCTOR(TEST_NAME) TEST_NAME() = default; +#define DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ + template \ + explicit TEST_NAME(D &&data) : DataTestCase{std::forward(data)} \ + { \ } #define FIXTURE_SETUP(FIXTURE) \ void do_setup() override \ @@ -129,7 +128,7 @@ void do_setup() override \ { \ framework::Framework::get().set_new_fixture_call(false); \ - apply(this, &FIXTURE::setup, _data); \ + apply(this, &FIXTURE::setup, _data); \ } #define FIXTURE_DATA_SETUP_NEW(FIXTURE) \ void do_setup() override \ @@ -137,10 +136,10 @@ framework::Framework::get().set_new_fixture_call(true); \ apply(this, &FIXTURE::setup, _data); \ \ - if(!_skip_test) \ + if (!_skip_test) \ { \ configure_target(); \ - if(!framework::Framework::get().configure_only()) \ + if (!framework::Framework::get().configure_only()) \ { \ allocate_and_run_target(); \ compute_reference(); \ @@ -165,18 +164,18 @@ #define TEST_REGISTRAR(TEST_NAME, MODE, STATUS) \ static arm_compute::test::framework::detail::TestCaseRegistrar TEST_NAME##_reg \ { \ - #TEST_NAME, MODE, STATUS \ +#TEST_NAME, MODE, STATUS \ } #define DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET) \ static arm_compute::test::framework::detail::TestCaseRegistrar> TEST_NAME##_reg \ { \ - #TEST_NAME, MODE, STATUS, DATASET \ +#TEST_NAME, MODE, STATUS, DATASET \ } #define TEST_CASE_IMPL(TEST_NAME, MODE, STATUS) \ class TEST_NAME : public arm_compute::test::framework::TestCase \ { \ - public: \ + public: \ TEST_CASE_CONSTRUCTOR(TEST_NAME) \ void do_run() override; \ }; \ @@ -196,7 +195,7 @@ template \ class TEST_NAME> : public arm_compute::test::framework::DataTestCase \ { \ - public: \ + public: \ DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ void do_run() override \ { \ @@ -210,58 +209,62 @@ template \ void TEST_NAME>::run(MAKE_ARG_PARAMS(__VA_ARGS__)) -#define NON_CONST_DATA_TEST_CASE_IMPL(TEST_NAME, MODE, STATUS, DATASET, ...) \ +#define NON_CONST_DATA_TEST_CASE_IMPL(TEST_NAME, MODE, STATUS, DATASET, ...) \ template \ class TEST_NAME; \ template \ class TEST_NAME> : public arm_compute::test::framework::DataTestCase \ { \ - public: \ + public: \ DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ void do_run() override \ { \ arm_compute::test::framework::apply(this, &TEST_NAME::run, _data); \ } \ template \ - void run(MAKE_NON_CONST_ARG_PARAMS(__VA_ARGS__)); \ + void run(MAKE_NON_CONST_ARG_PARAMS(__VA_ARGS__)); \ }; \ DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \ template \ template \ void TEST_NAME>::run(MAKE_NON_CONST_ARG_PARAMS(__VA_ARGS__)) -#define NON_CONST_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ - NON_CONST_DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET, __VA_ARGS__) +#define NON_CONST_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ + NON_CONST_DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, \ + DATASET, __VA_ARGS__) -#define DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ - DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET, __VA_ARGS__) -#define EXPECTED_FAILURE_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ - DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET, __VA_ARGS__) -#define DISABLED_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ - DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET, __VA_ARGS__) +#define DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ + DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET, \ + __VA_ARGS__) +#define EXPECTED_FAILURE_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ + DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, \ + DATASET, __VA_ARGS__) +#define DISABLED_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ + DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET, \ + __VA_ARGS__) -#define VALIDATION_FIXTURE_RUN() \ - void do_run() override \ - { \ - if (_iteration != 0) \ - { \ - do_setup(); \ - } \ - do_validate(); \ - ++_iteration; \ +#define VALIDATION_FIXTURE_RUN() \ + void do_run() override \ + { \ + if (_iteration != 0) \ + { \ + do_setup(); \ + } \ + do_validate(); \ + ++_iteration; \ } #define FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS) \ class TEST_NAME : public arm_compute::test::framework::TestCase, public FIXTURE \ { \ - public: \ + public: \ TEST_CASE_CONSTRUCTOR(TEST_NAME) \ FIXTURE_SETUP(FIXTURE) \ VALIDATION_FIXTURE_RUN() \ void do_validate(); \ FIXTURE_TEARDOWN(FIXTURE) \ private: \ - unsigned int _iteration {0}; \ + unsigned int _iteration{0}; \ }; \ TEST_REGISTRAR(TEST_NAME, MODE, STATUS); \ void TEST_NAME::do_validate() @@ -269,7 +272,8 @@ #define FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE) #define EXPECTED_FAILURE_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ - FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) + FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) #define DISABLED_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED) @@ -278,62 +282,70 @@ { \ } -#define FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ - template \ - class TEST_NAME; \ - template \ - class TEST_NAME> : public arm_compute::test::framework::DataTestCase, public FIXTURE \ - { \ - public: \ - DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ - FIXTURE_DATA_SETUP(FIXTURE) \ - VALIDATION_FIXTURE_RUN() \ - void do_validate(); \ - FIXTURE_TEARDOWN(FIXTURE) \ - private: \ - unsigned int _iteration {0}; \ - }; \ - DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \ - template \ +#define FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ + template \ + class TEST_NAME; \ + template \ + class TEST_NAME> : public arm_compute::test::framework::DataTestCase, \ + public FIXTURE \ + { \ + public: \ + DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ + FIXTURE_DATA_SETUP(FIXTURE) \ + VALIDATION_FIXTURE_RUN() \ + void do_validate(); \ + FIXTURE_TEARDOWN(FIXTURE) \ + private: \ + unsigned int _iteration{0}; \ + }; \ + DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \ + template \ void TEST_NAME>::do_validate() #define FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ - FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) + FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) #define EXPECTED_FAILURE_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ - FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) + FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) #define DISABLED_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ - FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET) + FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET) -#define FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ - template \ - class TEST_NAME; \ - template \ - class TEST_NAME> : public arm_compute::test::framework::DataTestCase, public FIXTURE \ - { \ - public: \ - DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ - FIXTURE_DATA_SETUP_NEW(FIXTURE) \ - VALIDATION_FIXTURE_RUN() \ - void do_validate(); \ - FIXTURE_TEARDOWN(FIXTURE) \ - private: \ - unsigned int _iteration {0}; \ - }; \ - DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \ - template \ +#define FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ + template \ + class TEST_NAME; \ + template \ + class TEST_NAME> : public arm_compute::test::framework::DataTestCase, \ + public FIXTURE \ + { \ + public: \ + DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ + FIXTURE_DATA_SETUP_NEW(FIXTURE) \ + VALIDATION_FIXTURE_RUN() \ + void do_validate(); \ + FIXTURE_TEARDOWN(FIXTURE) \ + private: \ + unsigned int _iteration{0}; \ + }; \ + DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \ + template \ void TEST_NAME>::do_validate() #define FIXTURE_DATA_TEST_CASE_NEW(TEST_NAME, FIXTURE, MODE, DATASET) \ - FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) + FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) #define EXPECTED_FAILURE_FIXTURE_DATA_TEST_CASE_NEW(TEST_NAME, FIXTURE, MODE, DATASET) \ - FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) + FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) #define DISABLED_FIXTURE_DATA_TEST_CASE_NEW(TEST_NAME, FIXTURE, MODE, DATASET) \ - FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET) + FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET) #define REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS) \ class TEST_NAME : public arm_compute::test::framework::TestCase, public FIXTURE \ { \ - public: \ + public: \ TEST_CASE_CONSTRUCTOR(TEST_NAME) \ FIXTURE_SETUP(FIXTURE) \ FIXTURE_RUN(FIXTURE) \ @@ -342,34 +354,41 @@ }; \ TEST_REGISTRAR(TEST_NAME, MODE, STATUS) -#define REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ - REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE) +#define REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ + REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::ACTIVE) #define EXPECTED_FAILURE_REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ - REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) + REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) #define DISABLED_REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ - REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED) + REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::DISABLED) -#define REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ - template \ - class TEST_NAME; \ - template \ - class TEST_NAME> : public arm_compute::test::framework::DataTestCase, public FIXTURE \ - { \ - public: \ - DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ - FIXTURE_DATA_SETUP(FIXTURE) \ - FIXTURE_RUN(FIXTURE) \ - FIXTURE_SYNC(FIXTURE) \ - FIXTURE_TEARDOWN(FIXTURE) \ - }; \ +#define REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ + template \ + class TEST_NAME; \ + template \ + class TEST_NAME> : public arm_compute::test::framework::DataTestCase, \ + public FIXTURE \ + { \ + public: \ + DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ + FIXTURE_DATA_SETUP(FIXTURE) \ + FIXTURE_RUN(FIXTURE) \ + FIXTURE_SYNC(FIXTURE) \ + FIXTURE_TEARDOWN(FIXTURE) \ + }; \ DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET) #define REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ - REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) + REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) #define EXPECTED_FAILURE_REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ - REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) + REGISTER_FIXTURE_DATA_TEST_CASE_IMPL( \ + TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) #define DISABLED_REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ - REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET) + REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, \ + arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET) // // TEST CASE MACROS END // diff --git a/tests/framework/ParametersLibrary.h b/tests/framework/ParametersLibrary.h index d3677726ad6..016a86d757d 100644 --- a/tests/framework/ParametersLibrary.h +++ b/tests/framework/ParametersLibrary.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2021 Arm Limited. + * Copyright (c) 2019-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_PARAMETERS_LIBRARY_H -#define ARM_COMPUTE_TEST_PARAMETERS_LIBRARY_H +#ifndef ACL_TESTS_FRAMEWORK_PARAMETERSLIBRARY_H +#define ACL_TESTS_FRAMEWORK_PARAMETERSLIBRARY_H #include "arm_compute/runtime/IRuntimeContext.h" #include "arm_compute/runtime/Tensor.h" @@ -91,10 +91,10 @@ class ParametersLibrary final } private: - std::unique_ptr _cpu_ctx{ nullptr }; - std::unique_ptr _cl_ctx{ nullptr }; - std::unique_ptr _gc_ctx{ nullptr }; + std::unique_ptr _cpu_ctx{nullptr}; + std::unique_ptr _cl_ctx{nullptr}; + std::unique_ptr _gc_ctx{nullptr}; }; } // namespace test } // namespace arm_compute -#endif //ARM_COMPUTE_TEST_PARAMETERS_LIBRARY_H +#endif // ACL_TESTS_FRAMEWORK_PARAMETERSLIBRARY_H diff --git a/tests/framework/Profiler.cpp b/tests/framework/Profiler.cpp index 067d12d599a..2f5fc108509 100644 --- a/tests/framework/Profiler.cpp +++ b/tests/framework/Profiler.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018,2021, 2024 Arm Limited. + * Copyright (c) 2017-2018,2021, 2024-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -39,7 +39,7 @@ void Profiler::add(std::unique_ptr instrument) void Profiler::test_start() { - for(auto &instrument : _instruments) + for (auto &instrument : _instruments) { instrument->test_start(); } @@ -47,7 +47,7 @@ void Profiler::test_start() void Profiler::start() { - for(auto &instrument : _instruments) + for (auto &instrument : _instruments) { instrument->start(); } @@ -55,21 +55,24 @@ void Profiler::start() void Profiler::stop(int32_t iteration) { - for(auto instrument = _instruments.rbegin(); instrument != _instruments.rend(); instrument++) + for (auto instrument = _instruments.rbegin(); instrument != _instruments.rend(); instrument++) { (*instrument)->stop(); } - for(const auto &instrument : _instruments) + for (const auto &instrument : _instruments) { - for(const auto &measurement : instrument->measurements()) + for (const auto &measurement : instrument->measurements()) { - if(iteration < 0) // do not append "Iteration-X" prefix, we do not wish to print the figures for the invidivual iterations + if (iteration < + 0) // do not append "Iteration-X" prefix, we do not wish to print the figures for the invidivual iterations { _measurements[instrument->id() + "/" + measurement.first].push_back(measurement.second); } else { - _measurements["Iteration-" + std::to_string(iteration) + " " + instrument->id() + "/" + measurement.first].push_back(measurement.second); + _measurements["Iteration-" + std::to_string(iteration) + " " + instrument->id() + "/" + + measurement.first] + .push_back(measurement.second); } } } @@ -77,14 +80,14 @@ void Profiler::stop(int32_t iteration) void Profiler::test_stop() { - for(auto instrument = _instruments.rbegin(); instrument != _instruments.rend(); instrument++) + for (auto instrument = _instruments.rbegin(); instrument != _instruments.rend(); instrument++) { (*instrument)->test_stop(); } - for(const auto &instrument : _instruments) + for (const auto &instrument : _instruments) { - for(const auto &measurement : instrument->test_measurements()) + for (const auto &measurement : instrument->test_measurements()) { _measurements[instrument->id() + "/" + measurement.first].push_back(measurement.second); } diff --git a/tests/framework/Profiler.h b/tests/framework/Profiler.h index 631f5c7a71c..4b7d06893ab 100644 --- a/tests/framework/Profiler.h +++ b/tests/framework/Profiler.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018,2021, 2024 Arm Limited. + * Copyright (c) 2017-2018,2021, 2024-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -26,7 +26,6 @@ #include "instruments/Instrument.h" #include "instruments/Measurement.h" - #include #include #include diff --git a/tests/framework/Registrars.h b/tests/framework/Registrars.h index c22177c9e66..dd610f65100 100644 --- a/tests/framework/Registrars.h +++ b/tests/framework/Registrars.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_FRAMEWORK_REGISTRARS -#define ARM_COMPUTE_TEST_FRAMEWORK_REGISTRARS +#ifndef ACL_TESTS_FRAMEWORK_REGISTRARS_H +#define ACL_TESTS_FRAMEWORK_REGISTRARS_H #include "DatasetModes.h" #include "Framework.h" - #include #include @@ -84,11 +83,14 @@ inline TestCaseRegistrar::TestCaseRegistrar(std::string test_name, DatasetMod template template -inline TestCaseRegistrar::TestCaseRegistrar(std::string test_name, DatasetMode mode, TestCaseFactory::Status status, D &&dataset) +inline TestCaseRegistrar::TestCaseRegistrar(std::string test_name, + DatasetMode mode, + TestCaseFactory::Status status, + D &&dataset) { auto it = dataset.begin(); - for(int i = 0; i < dataset.size(); ++i, ++it) + for (int i = 0; i < dataset.size(); ++i, ++it) { // WORKAROUND for GCC 4.9 // The last argument should be *it to pass just the data and not the @@ -110,4 +112,4 @@ inline TestSuiteRegistrar::TestSuiteRegistrar(std::string name) } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_FRAMEWORK_REGISTRARS */ +#endif // ACL_TESTS_FRAMEWORK_REGISTRARS_H diff --git a/tests/framework/TestCase.h b/tests/framework/TestCase.h index 7424fe7989e..28da922097f 100644 --- a/tests/framework/TestCase.h +++ b/tests/framework/TestCase.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_TESTCASE -#define ARM_COMPUTE_TEST_TESTCASE +#ifndef ACL_TESTS_FRAMEWORK_TESTCASE_H +#define ACL_TESTS_FRAMEWORK_TESTCASE_H #include #include @@ -41,13 +41,13 @@ class TestCase { public: /** Setup the test */ - virtual void do_setup() {}; + virtual void do_setup(){}; /** Run the test */ - virtual void do_run() {}; + virtual void do_run(){}; /** Sync the test */ - virtual void do_sync() {}; + virtual void do_sync(){}; /** Teardown the test */ - virtual void do_teardown() {}; + virtual void do_teardown(){}; /** Default destructor. */ virtual ~TestCase() = default; @@ -67,8 +67,7 @@ class DataTestCase : public TestCase * * @param[in] data Test data. */ - explicit DataTestCase(T data) - : _data{ std::move(data) } + explicit DataTestCase(T data) : _data{std::move(data)} { } @@ -77,4 +76,4 @@ class DataTestCase : public TestCase } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_TESTCASE */ +#endif // ACL_TESTS_FRAMEWORK_TESTCASE_H diff --git a/tests/framework/TestCaseFactory.h b/tests/framework/TestCaseFactory.h index a41226af245..bd2376c1248 100644 --- a/tests/framework/TestCaseFactory.h +++ b/tests/framework/TestCaseFactory.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_TEST_CASE_FACTORY -#define ARM_COMPUTE_TEST_TEST_CASE_FACTORY +#ifndef ACL_TESTS_FRAMEWORK_TESTCASEFACTORY_H +#define ACL_TESTS_FRAMEWORK_TESTCASEFACTORY_H #include "DatasetModes.h" #include "TestCase.h" - #include #include @@ -61,7 +60,8 @@ class TestCaseFactory * @param[in] status Status of the test case. * @param[in] description Description of data arguments. */ - TestCaseFactory(std::string suite_name, std::string name, DatasetMode mode, Status status, std::string description = ""); + TestCaseFactory( + std::string suite_name, std::string name, DatasetMode mode, Status status, std::string description = ""); /** Default destructor. */ virtual ~TestCaseFactory() = default; @@ -94,8 +94,8 @@ class TestCaseFactory const std::string _suite_name; const std::string _test_name; const std::string _data_description; - const DatasetMode _mode{ DatasetMode::ALL }; - const Status _status{ Status::ACTIVE }; + const DatasetMode _mode{DatasetMode::ALL}; + const Status _status{Status::ACTIVE}; }; /** Implementation of a test case factory to create non-data test cases. */ @@ -123,7 +123,12 @@ class DataTestCaseFactory final : public TestCaseFactory * @param[in] description Description of data arguments. * @param[in] data Input data for the test case. */ - DataTestCaseFactory(std::string suite_name, std::string test_name, DatasetMode mode, Status status, std::string description, const D &data); + DataTestCaseFactory(std::string suite_name, + std::string test_name, + DatasetMode mode, + Status status, + std::string description, + const D &data); std::unique_ptr make() const override; @@ -131,8 +136,13 @@ class DataTestCaseFactory final : public TestCaseFactory D _data; }; -inline TestCaseFactory::TestCaseFactory(std::string suite_name, std::string test_name, DatasetMode mode, Status status, std::string description) - : _suite_name{ std::move(suite_name) }, _test_name{ std::move(test_name) }, _data_description{ std::move(description) }, _mode{ mode }, _status{ status } +inline TestCaseFactory::TestCaseFactory( + std::string suite_name, std::string test_name, DatasetMode mode, Status status, std::string description) + : _suite_name{std::move(suite_name)}, + _test_name{std::move(test_name)}, + _data_description{std::move(description)}, + _mode{mode}, + _status{status} { } @@ -141,7 +151,7 @@ inline std::string TestCaseFactory::name() const { std::string name = _suite_name + "/" + _test_name; - if(!_data_description.empty()) + if (!_data_description.empty()) { name += "@" + _data_description; } @@ -161,7 +171,7 @@ inline TestCaseFactory::Status TestCaseFactory::status() const inline ::std::ostream &operator<<(::std::ostream &stream, TestCaseFactory::Status status) { - switch(status) + switch (status) { case TestCaseFactory::Status::ACTIVE: stream << "ACTIVE"; @@ -186,8 +196,13 @@ inline std::unique_ptr SimpleTestCaseFactory::make() const } template -inline DataTestCaseFactory::DataTestCaseFactory(std::string suite_name, std::string test_name, DatasetMode mode, Status status, std::string description, const D &data) - : TestCaseFactory{ std::move(suite_name), std::move(test_name), mode, status, std::move(description) }, _data{ data } +inline DataTestCaseFactory::DataTestCaseFactory(std::string suite_name, + std::string test_name, + DatasetMode mode, + Status status, + std::string description, + const D &data) + : TestCaseFactory{std::move(suite_name), std::move(test_name), mode, status, std::move(description)}, _data{data} { } @@ -199,4 +214,4 @@ inline std::unique_ptr DataTestCaseFactory::make() const } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_TEST_CASE_FACTORY */ +#endif // ACL_TESTS_FRAMEWORK_TESTCASEFACTORY_H diff --git a/tests/framework/TestFilter.cpp b/tests/framework/TestFilter.cpp index f3127f330f2..d13a15c576e 100644 --- a/tests/framework/TestFilter.cpp +++ b/tests/framework/TestFilter.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -23,9 +23,9 @@ */ #include "TestFilter.h" -#include "Framework.h" #include "support/StringSupport.h" +#include "Framework.h" #include #include @@ -36,37 +36,37 @@ namespace test namespace framework { TestFilter::TestFilter(DatasetMode mode, const std::string &name_filter, const std::string &id_filter) - : _dataset_mode{ mode }, _name_filter{ name_filter }, _id_filter{ parse_id_filter(id_filter) } + : _dataset_mode{mode}, _name_filter{name_filter}, _id_filter{parse_id_filter(id_filter)} { } bool TestFilter::is_selected(const TestInfo &info) const { const bool include_disabled = (info.mode == _dataset_mode) && (_dataset_mode == DatasetMode::DISABLED); - if((info.mode & _dataset_mode) == DatasetMode::DISABLED && !include_disabled) + if ((info.mode & _dataset_mode) == DatasetMode::DISABLED && !include_disabled) { return false; } - if(!std::regex_search(info.name, _name_filter)) + if (!std::regex_search(info.name, _name_filter)) { return false; } - if(!_id_filter.empty()) + if (!_id_filter.empty()) { bool found = false; - for(const auto &range : _id_filter) + for (const auto &range : _id_filter) { - if(range.first <= info.id && info.id <= range.second) + if (range.first <= info.id && info.id <= range.second) { found = true; break; } } - if(!found) + if (!found) { return false; } @@ -89,12 +89,12 @@ TestFilter::Ranges TestFilter::parse_id_filter(const std::string &id_filter) con // Get first value std::getline(stream, str, ','); - if(stream.fail()) + if (stream.fail()) { return ranges; } - if(str.find("...") != std::string::npos) + if (str.find("...") != std::string::npos) { in_range = true; } @@ -104,16 +104,16 @@ TestFilter::Ranges TestFilter::parse_id_filter(const std::string &id_filter) con end = start; } - while(!stream.eof()) + while (!stream.eof()) { std::getline(stream, str, ','); - if(stream.fail()) + if (stream.fail()) { break; } - if(str.find("...") != std::string::npos) + if (str.find("...") != std::string::npos) { end = std::numeric_limits::max(); in_range = true; @@ -122,7 +122,7 @@ TestFilter::Ranges TestFilter::parse_id_filter(const std::string &id_filter) con { value = support::cpp11::stoi(str); - if(in_range || end == value - 1) + if (in_range || end == value - 1) { end = value; in_range = false; diff --git a/tests/framework/TestFilter.h b/tests/framework/TestFilter.h index 97bce7a4d54..090b7fd7c5b 100644 --- a/tests/framework/TestFilter.h +++ b/tests/framework/TestFilter.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_TESTFILTER -#define ARM_COMPUTE_TEST_TESTFILTER +#ifndef ACL_TESTS_FRAMEWORK_TESTFILTER_H +#define ACL_TESTS_FRAMEWORK_TESTFILTER_H #include "DatasetModes.h" - #include #include #include @@ -74,11 +73,11 @@ class TestFilter final using Ranges = std::vector>; Ranges parse_id_filter(const std::string &id_filter) const; - DatasetMode _dataset_mode{ DatasetMode::ALL }; - std::regex _name_filter{ ".*" }; + DatasetMode _dataset_mode{DatasetMode::ALL}; + std::regex _name_filter{".*"}; Ranges _id_filter{}; }; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_TESTFILTER */ +#endif // ACL_TESTS_FRAMEWORK_TESTFILTER_H diff --git a/tests/framework/TestResult.h b/tests/framework/TestResult.h index 18e54343dc4..ef36eb677c1 100644 --- a/tests/framework/TestResult.h +++ b/tests/framework/TestResult.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018,2021 Arm Limited. + * Copyright (c) 2017-2018,2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_TESTRESULT -#define ARM_COMPUTE_TEST_TESTRESULT +#ifndef ACL_TESTS_FRAMEWORK_TESTRESULT_H +#define ACL_TESTS_FRAMEWORK_TESTRESULT_H #include "Profiler.h" @@ -56,8 +56,7 @@ struct TestResult * * @param[in] status Execution status. */ - TestResult(Status status) - : status{ status } + TestResult(Status status) : status{status} { } @@ -67,15 +66,15 @@ struct TestResult * @param[in] measurements Profiling information. */ TestResult(Status status, const Profiler::MeasurementsMap &measurements) - : status{ status }, measurements{ measurements } + : status{status}, measurements{measurements} { } - Status status{ Status::NOT_RUN }; /**< Execution status */ - Profiler::MeasurementsMap measurements{}; /**< Profiling information */ - std::string header_data{}; /**< Test header data */ + Status status{Status::NOT_RUN}; /**< Execution status */ + Profiler::MeasurementsMap measurements{}; /**< Profiling information */ + std::string header_data{}; /**< Test header data */ }; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_TESTRESULT */ +#endif // ACL_TESTS_FRAMEWORK_TESTRESULT_H diff --git a/tests/framework/Utils.cpp b/tests/framework/Utils.cpp index 1e25893d934..e5791938518 100644 --- a/tests/framework/Utils.cpp +++ b/tests/framework/Utils.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2020 Arm Limited. + * Copyright (c) 2019-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -38,7 +38,7 @@ namespace framework void sleep_in_seconds(float seconds) { // Early return on non-positive input - if(seconds <= 0.f) + if (seconds <= 0.f) { return; } diff --git a/tests/framework/Utils.h b/tests/framework/Utils.h index 69dd67fd7b6..233bc80c984 100644 --- a/tests/framework/Utils.h +++ b/tests/framework/Utils.h @@ -60,7 +60,7 @@ struct sequence_generator<0, Ns...> }; template -struct sequence_generator : sequence_generator < N - 1, N - 1, Ns... > +struct sequence_generator : sequence_generator { }; @@ -79,7 +79,7 @@ void apply_impl(O *obj, F &&func, std::tuple &args, detail::sequence*func)(std::get(args)...); } -} // namespace +} // namespace detail template void apply(O *obj, F &&func, const std::tuple &args) @@ -104,10 +104,9 @@ void apply(O *obj, F &&func, std::tuple &args) template ::value, int>::type = 0> std::string join(T first, T last, const std::string &separator) { - return std::accumulate(std::next(first), last, *first, [&separator](const std::string & base, const std::string & suffix) - { - return base + separator + suffix; - }); + return std::accumulate(std::next(first), last, *first, + [&separator](const std::string &base, const std::string &suffix) + { return base + separator + suffix; }); } /** Helper function to concatenate multiple values. @@ -128,10 +127,9 @@ std::string join(T first, T last, const std::string &separator) template std::string join(T &&first, T &&last, const std::string &separator, UnaryOp &&op) { - return std::accumulate(std::next(first), last, op(*first), [&separator, &op](const std::string & base, const typename T::value_type & suffix) - { - return base + separator + op(suffix); - }); + return std::accumulate(std::next(first), last, op(*first), + [&separator, &op](const std::string &base, const typename T::value_type &suffix) + { return base + separator + op(suffix); }); } /** Helper function to concatenate multiple values. @@ -145,7 +143,7 @@ std::string join(T &&first, T &&last, const std::string &separator, UnaryOp &&op * @return String containing all elements joined by @p separator. */ template ::value, int>::type = 0> -std::string join(T && first, T && last, const std::string &separator) +std::string join(T &&first, T &&last, const std::string &separator) { return join(std::forward(first), std::forward(last), separator, support::cpp11::to_string); } @@ -158,10 +156,7 @@ std::string join(T && first, T && last, const std::string &separator) */ inline std::string tolower(std::string string) { - std::transform(string.begin(), string.end(), string.begin(), [](unsigned char c) - { - return std::tolower(c); - }); + std::transform(string.begin(), string.end(), string.begin(), [](unsigned char c) { return std::tolower(c); }); return string; } diff --git a/tests/framework/command_line/CommonOptions.cpp b/tests/framework/command_line/CommonOptions.cpp index e6f1929bb1c..847bbe46dda 100644 --- a/tests/framework/command_line/CommonOptions.cpp +++ b/tests/framework/command_line/CommonOptions.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020,2024 Arm Limited. + * Copyright (c) 2018-2020,2024-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -46,48 +46,44 @@ CommonOptions::CommonOptions(CommandLineParser &parser) log_level(), throw_errors(parser.add_option("throw-errors")), #if !defined(_WIN64) - color_output(parser.add_option("color-output", isatty(STDOUT_FILENO))), // Only enable colors by default if we're running in a terminal -#else // !defined(_WIN64) - color_output(parser.add_option("color-output", 0)), -#endif // !defined(_WIN64) + color_output(parser.add_option( + "color-output", isatty(STDOUT_FILENO))), // Only enable colors by default if we're running in a terminal +#else // !defined(_WIN64) + color_output(parser.add_option("color-output", 0)), +#endif // !defined(_WIN64) pretty_console(parser.add_option("pretty-console", false)), json_file(parser.add_option>("json-file")), pretty_file(parser.add_option>("pretty-file")), log_streams() { Framework &framework = Framework::get(); - std::set allowed_instruments - { + std::set allowed_instruments{ std::pair(InstrumentType::ALL, ScaleFactor::NONE), std::pair(InstrumentType::NONE, ScaleFactor::NONE), }; - for(const auto &type : framework.available_instruments()) + for (const auto &type : framework.available_instruments()) { allowed_instruments.insert(type); } - std::set supported_log_formats - { + std::set supported_log_formats{ LogFormat::NONE, LogFormat::PRETTY, LogFormat::JSON, }; - std::set supported_log_levels - { - LogLevel::NONE, - LogLevel::CONFIG, - LogLevel::TESTS, - LogLevel::ERRORS, - LogLevel::DEBUG, - LogLevel::MEASUREMENTS, - LogLevel::ALL, + std::set supported_log_levels{ + LogLevel::NONE, LogLevel::CONFIG, LogLevel::TESTS, LogLevel::ERRORS, + LogLevel::DEBUG, LogLevel::MEASUREMENTS, LogLevel::ALL, }; - instruments = parser.add_option>("instruments", allowed_instruments, std::initializer_list { std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::NONE) }); - log_format = parser.add_option>("log-format", supported_log_formats, LogFormat::PRETTY); - log_level = parser.add_option>("log-level", supported_log_levels, LogLevel::ALL); + instruments = parser.add_option>( + "instruments", allowed_instruments, + std::initializer_list{ + std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::NONE)}); + log_format = parser.add_option>("log-format", supported_log_formats, LogFormat::PRETTY); + log_level = parser.add_option>("log-level", supported_log_levels, LogLevel::ALL); help->set_help("Show this help message"); instruments->set_help("Set the profiling instruments to use"); @@ -105,7 +101,7 @@ std::vector> CommonOptions::create_printers() { std::vector> printers; - if(pretty_console->value() && (log_file->is_set() || log_format->value() != LogFormat::PRETTY)) + if (pretty_console->value() && (log_file->is_set() || log_format->value() != LogFormat::PRETTY)) { auto pretty_printer = std::make_unique(); pretty_printer->set_color_output(color_output->value()); @@ -113,7 +109,7 @@ std::vector> CommonOptions::create_printers() } std::unique_ptr printer; - switch(log_format->value()) + switch (log_format->value()) { case LogFormat::JSON: printer = std::make_unique(); @@ -129,28 +125,28 @@ std::vector> CommonOptions::create_printers() break; } - if(log_file->is_set()) + if (log_file->is_set()) { log_streams.push_back(std::make_shared(log_file->value())); - if(printer != nullptr) + if (printer != nullptr) { printer->set_stream(*log_streams.back().get()); } } - if(printer != nullptr) + if (printer != nullptr) { printers.push_back(std::move(printer)); } - if(json_file->is_set()) + if (json_file->is_set()) { printers.push_back(std::make_unique()); log_streams.push_back(std::make_shared(json_file->value())); printers.back()->set_stream(*log_streams.back().get()); } - if(pretty_file->is_set()) + if (pretty_file->is_set()) { printers.push_back(std::make_unique()); log_streams.push_back(std::make_shared(pretty_file->value())); diff --git a/tests/framework/command_line/CommonOptions.h b/tests/framework/command_line/CommonOptions.h index e332d5f3a4b..d5b009e715c 100644 --- a/tests/framework/command_line/CommonOptions.h +++ b/tests/framework/command_line/CommonOptions.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_COMMONOPTIONS -#define ARM_COMPUTE_TEST_COMMONOPTIONS - -#include "../instruments/Instruments.h" +#ifndef ACL_TESTS_FRAMEWORK_COMMAND_LINE_COMMONOPTIONS_H +#define ACL_TESTS_FRAMEWORK_COMMAND_LINE_COMMONOPTIONS_H #include "utils/command_line/CommandLineOptions.h" #include "utils/command_line/CommandLineParser.h" +#include "../instruments/Instruments.h" #include namespace arm_compute @@ -88,4 +87,4 @@ class CommonOptions } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_COMMONOPTIONS */ +#endif // ACL_TESTS_FRAMEWORK_COMMAND_LINE_COMMONOPTIONS_H diff --git a/tests/framework/datasets/CartesianProductDataset.h b/tests/framework/datasets/CartesianProductDataset.h index 7b3ff120474..17f35b92a0e 100644 --- a/tests/framework/datasets/CartesianProductDataset.h +++ b/tests/framework/datasets/CartesianProductDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018, 2023 Arm Limited. + * Copyright (c) 2017-2018, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DATASET_CARTESIAN_PRODUCT -#define ARM_COMPUTE_TEST_DATASET_CARTESIAN_PRODUCT +#ifndef ACL_TESTS_FRAMEWORK_DATASETS_CARTESIANPRODUCTDATASET_H +#define ACL_TESTS_FRAMEWORK_DATASETS_CARTESIANPRODUCTDATASET_H #include "Dataset.h" - #include #include #include @@ -59,8 +58,7 @@ class CartesianProductDataset : public Dataset * @param[in] dataset2 Second dataset. */ CartesianProductDataset(T &&dataset1, U &&dataset2) - : _dataset1{ std::forward(dataset1) }, - _dataset2{ std::forward(dataset2) } + : _dataset1{std::forward(dataset1)}, _dataset2{std::forward(dataset2)} { } @@ -79,9 +77,7 @@ class CartesianProductDataset : public Dataset * @param[in] dataset2 Dataset 2. */ iterator(const T_noref *dataset1, const U_noref *dataset2) - : _iter1{ dataset1->begin() }, - _dataset2{ dataset2 }, - _iter2{ dataset2->begin() } + : _iter1{dataset1->begin()}, _dataset2{dataset2}, _iter2{dataset2->begin()} { } @@ -123,7 +119,7 @@ class CartesianProductDataset : public Dataset { ++_second_pos; - if(_second_pos < _dataset2->size()) + if (_second_pos < _dataset2->size()) { ++_iter2; } @@ -142,8 +138,8 @@ class CartesianProductDataset : public Dataset iter1_type _iter1; const U_noref *_dataset2; iter2_type _iter2; - int _first_pos{ 0 }; - int _second_pos{ 0 }; + int _first_pos{0}; + int _second_pos{0}; }; /** Iterator pointing at the begin of the dataset. @@ -191,7 +187,8 @@ CartesianProductDataset combine(T &&dataset1, U &&dataset2) * @return A grid dataset. */ template -auto combine(T1 &&dataset1, T2 &&dataset2, Ts &&... datasets) -> decltype(combine(std::forward(dataset1), combine(std::forward(dataset2), std::forward(datasets)...))) +auto combine(T1 &&dataset1, T2 &&dataset2, Ts &&...datasets) + -> decltype(combine(std::forward(dataset1), combine(std::forward(dataset2), std::forward(datasets)...))) { return combine(std::forward(dataset1), combine(std::forward(dataset2), std::forward(datasets)...)); } @@ -204,8 +201,7 @@ auto combine(T1 &&dataset1, T2 &&dataset2, Ts &&... datasets) -> decltype(combin * @return A grid dataset. */ template -CartesianProductDataset -operator*(T &&dataset1, U &&dataset2) +CartesianProductDataset operator*(T &&dataset1, U &&dataset2) { return CartesianProductDataset(std::forward(dataset1), std::forward(dataset2)); } @@ -214,4 +210,4 @@ operator*(T &&dataset1, U &&dataset2) } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DATASET_CARTESIAN_PRODUCT */ +#endif // ACL_TESTS_FRAMEWORK_DATASETS_CARTESIANPRODUCTDATASET_H diff --git a/tests/framework/datasets/ContainerDataset.h b/tests/framework/datasets/ContainerDataset.h index de77cb24d6d..fb22b140032 100644 --- a/tests/framework/datasets/ContainerDataset.h +++ b/tests/framework/datasets/ContainerDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DATASET_CONTAINER -#define ARM_COMPUTE_TEST_DATASET_CONTAINER +#ifndef ACL_TESTS_FRAMEWORK_DATASETS_CONTAINERDATASET_H +#define ACL_TESTS_FRAMEWORK_DATASETS_CONTAINERDATASET_H -#include "Dataset.h" #include "support/StringSupport.h" +#include "Dataset.h" #include #include #include @@ -68,7 +68,7 @@ class ContainerDataset : public NamedDataset * @param[in] container Values for the dataset. */ ContainerDataset(std::string name, T &&container) - : NamedDataset{ std::move(name) }, _container(std::forward(container)) + : NamedDataset{std::move(name)}, _container(std::forward(container)) { } @@ -88,8 +88,7 @@ class ContainerDataset : public NamedDataset * @param[in] name Description of the values. * @param[in] iterator Iterator for the values. */ - iterator(std::string name, container_const_iterator iterator) - : _name{ name }, _iterator{ iterator } + iterator(std::string name, container_const_iterator iterator) : _name{name}, _iterator{iterator} { } @@ -165,4 +164,4 @@ typename std::enable_if::value, ContainerDataset>::type make( } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DATASET_CONTAINER */ +#endif // ACL_TESTS_FRAMEWORK_DATASETS_CONTAINERDATASET_H diff --git a/tests/framework/datasets/Dataset.h b/tests/framework/datasets/Dataset.h index aea3e09381e..84de1a30214 100644 --- a/tests/framework/datasets/Dataset.h +++ b/tests/framework/datasets/Dataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DATASET -#define ARM_COMPUTE_TEST_DATASET +#ifndef ACL_TESTS_FRAMEWORK_DATASETS_DATASET_H +#define ACL_TESTS_FRAMEWORK_DATASETS_DATASET_H #include #include @@ -60,8 +60,7 @@ class NamedDataset : public Dataset * * @param[in] name Description of the values. */ - explicit NamedDataset(std::string name) - : _name{ std::move(name) } + explicit NamedDataset(std::string name) : _name{std::move(name)} { } @@ -88,4 +87,4 @@ class NamedDataset : public Dataset } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DATASET */ +#endif // ACL_TESTS_FRAMEWORK_DATASETS_DATASET_H diff --git a/tests/framework/datasets/InitializerListDataset.h b/tests/framework/datasets/InitializerListDataset.h index 87aae5f3083..a8bd0d3eb2b 100644 --- a/tests/framework/datasets/InitializerListDataset.h +++ b/tests/framework/datasets/InitializerListDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DATASET_LIST -#define ARM_COMPUTE_TEST_DATASET_LIST +#ifndef ACL_TESTS_FRAMEWORK_DATASETS_INITIALIZERLISTDATASET_H +#define ACL_TESTS_FRAMEWORK_DATASETS_INITIALIZERLISTDATASET_H -#include "Dataset.h" #include "utils/TypePrinter.h" +#include "Dataset.h" #include #include #include @@ -55,7 +55,7 @@ class InitializerListDataset final : public NamedDataset * @param[in] list Values for the dataset. */ InitializerListDataset(std::string name, std::initializer_list &&list) - : NamedDataset{ std::move(name) }, _data(std::forward>(list)) + : NamedDataset{std::move(name)}, _data(std::forward>(list)) { } @@ -73,8 +73,7 @@ class InitializerListDataset final : public NamedDataset * @param[in] name Name of the dataset. * @param[in] iterator Iterator of the dataset values. */ - iterator(std::string name, data_const_iterator iterator) - : _name{ name }, _iterator{ iterator } + iterator(std::string name, data_const_iterator iterator) : _name{name}, _iterator{iterator} { } @@ -149,4 +148,4 @@ InitializerListDataset make(std::string name, std::initializer_list &&list } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DATASET_LIST */ +#endif // ACL_TESTS_FRAMEWORK_DATASETS_INITIALIZERLISTDATASET_H diff --git a/tests/framework/datasets/JoinDataset.h b/tests/framework/datasets/JoinDataset.h index 55707765512..aa9b384d8d4 100644 --- a/tests/framework/datasets/JoinDataset.h +++ b/tests/framework/datasets/JoinDataset.h @@ -25,7 +25,6 @@ #define ACL_TESTS_FRAMEWORK_DATASETS_JOINDATASET_H #include "Dataset.h" - #include #include #include @@ -59,9 +58,7 @@ class JoinDataset : public Dataset * @param[in] dataset1 First dataset. * @param[in] dataset2 Second dataset. */ - JoinDataset(T &&dataset1, U &&dataset2) - : _dataset1{ std::forward(dataset1) }, - _dataset2{ std::forward(dataset2) } + JoinDataset(T &&dataset1, U &&dataset2) : _dataset1{std::forward(dataset1)}, _dataset2{std::forward(dataset2)} { } @@ -80,7 +77,7 @@ class JoinDataset : public Dataset * @param[in] dataset2 Dataset 2. */ iterator(const T_noref *dataset1, const U_noref *dataset2) - : _iter1{ dataset1->begin() }, _iter2{ dataset2->begin() }, _first_size{ dataset1->size() } + : _iter1{dataset1->begin()}, _iter2{dataset2->begin()}, _first_size{dataset1->size()} { } @@ -108,7 +105,7 @@ class JoinDataset : public Dataset */ iterator &operator++() { - if(_first_size > 0) + if (_first_size > 0) { --_first_size; ++_iter1; @@ -164,13 +161,12 @@ JoinDataset concat(T &&dataset1, U &&dataset2) } template -auto concat(T &&dataset1, U &&dataset2, V &&dataset3, Rest &&... rest) +auto concat(T &&dataset1, U &&dataset2, V &&dataset3, Rest &&...rest) -> decltype(concat(concat(std::forward(dataset1), std::forward(dataset2)), std::forward(dataset3), std::forward(rest)...)) { - return concat(concat(std::forward(dataset1), std::forward(dataset2)), - std::forward(dataset3), + return concat(concat(std::forward(dataset1), std::forward(dataset2)), std::forward(dataset3), std::forward(rest)...); } } // namespace dataset diff --git a/tests/framework/datasets/RangeDataset.h b/tests/framework/datasets/RangeDataset.h index 7935b4cfce1..8f320229f46 100644 --- a/tests/framework/datasets/RangeDataset.h +++ b/tests/framework/datasets/RangeDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DATASET_RANGE -#define ARM_COMPUTE_TEST_DATASET_RANGE +#ifndef ACL_TESTS_FRAMEWORK_DATASETS_RANGEDATASET_H +#define ACL_TESTS_FRAMEWORK_DATASETS_RANGEDATASET_H -#include "Dataset.h" #include "support/StringSupport.h" +#include "Dataset.h" #include #include #include @@ -56,7 +56,7 @@ class RangeDataset final : public NamedDataset * @param[in] step Step size. */ RangeDataset(std::string name, T start, T end, T step = 1) - : NamedDataset{ std::move(name) }, _start{ start }, _end{ end }, _step{ step } + : NamedDataset{std::move(name)}, _start{start}, _end{end}, _step{step} { } @@ -75,8 +75,7 @@ class RangeDataset final : public NamedDataset * @param[in] start Dataset start value. * @param[in] step Dataset step size. */ - iterator(std::string name, T start, T step) - : _name{ name }, _value{ start }, _step{ step } + iterator(std::string name, T start, T step) : _name{name}, _value{start}, _step{step} { } @@ -157,4 +156,4 @@ RangeDataset make(std::string name, T start, T end, T step = 1) } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DATASET_RANGE */ +#endif // ACL_TESTS_FRAMEWORK_DATASETS_RANGEDATASET_H diff --git a/tests/framework/datasets/SingletonDataset.h b/tests/framework/datasets/SingletonDataset.h index a9b71877580..5dd0fd6a302 100644 --- a/tests/framework/datasets/SingletonDataset.h +++ b/tests/framework/datasets/SingletonDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DATASET_SINGLETON -#define ARM_COMPUTE_TEST_DATASET_SINGLETON +#ifndef ACL_TESTS_FRAMEWORK_DATASETS_SINGLETONDATASET_H +#define ACL_TESTS_FRAMEWORK_DATASETS_SINGLETONDATASET_H -#include "ContainerDataset.h" -#include "Dataset.h" #include "support/StringSupport.h" +#include "ContainerDataset.h" +#include "Dataset.h" #include #include #include @@ -51,8 +51,7 @@ class SingletonDataset : public NamedDataset * @param[in] name Description of the value. * @param[in] value Value for the dataset. */ - SingletonDataset(std::string name, T &&value) - : NamedDataset{ std::move(name) }, _value{ std::forward(value) } + SingletonDataset(std::string name, T &&value) : NamedDataset{std::move(name)}, _value{std::forward(value)} { } @@ -70,8 +69,7 @@ class SingletonDataset : public NamedDataset * @param[in] name Name of the dataset. * @param[in] value The singleton value. */ - iterator(std::string name, const T *value) - : _name{ name }, _value{ value } + iterator(std::string name, const T *value) : _name{name}, _value{value} { } @@ -150,7 +148,7 @@ class SingletonDataset : public NamedDataset * @return A singleton dataset. */ template -typename std::enable_if < !is_container::value, SingletonDataset>::type make(std::string name, T &&value) +typename std::enable_if::value, SingletonDataset>::type make(std::string name, T &&value) { return SingletonDataset(std::move(name), std::forward(value)); } @@ -158,4 +156,4 @@ typename std::enable_if < !is_container::value, SingletonDataset>::type m } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DATASET_SINGLETON */ +#endif // ACL_TESTS_FRAMEWORK_DATASETS_SINGLETONDATASET_H diff --git a/tests/framework/datasets/ZipDataset.h b/tests/framework/datasets/ZipDataset.h index 0b963484c5f..57a4646aabb 100644 --- a/tests/framework/datasets/ZipDataset.h +++ b/tests/framework/datasets/ZipDataset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018, 2023 Arm Limited. + * Copyright (c) 2017-2018, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_DATASET_ZIP -#define ARM_COMPUTE_TEST_DATASET_ZIP +#ifndef ACL_TESTS_FRAMEWORK_DATASETS_ZIPDATASET_H +#define ACL_TESTS_FRAMEWORK_DATASETS_ZIPDATASET_H #include "Dataset.h" - #include #include #include @@ -56,9 +55,7 @@ class ZipDataset : public Dataset * @param[in] dataset1 First dataset. * @param[in] dataset2 Second dataset. */ - ZipDataset(T &&dataset1, U &&dataset2) - : _dataset1{ std::forward(dataset1) }, - _dataset2{ std::forward(dataset2) } + ZipDataset(T &&dataset1, U &&dataset2) : _dataset1{std::forward(dataset1)}, _dataset2{std::forward(dataset2)} { } @@ -76,8 +73,7 @@ class ZipDataset : public Dataset * @param[in] iter1 Iterator 1. * @param[in] iter2 Iterator 2. */ - iterator(iter1_type iter1, iter2_type iter2) - : _iter1{ std::move(iter1) }, _iter2{ std::move(iter2) } + iterator(iter1_type iter1, iter2_type iter2) : _iter1{std::move(iter1)}, _iter2{std::move(iter2)} { } @@ -160,7 +156,8 @@ ZipDataset zip(T &&dataset1, U &&dataset2) * @return A zip dataset. */ template -auto zip(T1 &&dataset1, T2 &&dataset2, Ts &&... datasets) -> decltype(zip(std::forward(dataset1), zip(std::forward(dataset2), std::forward(datasets)...))) +auto zip(T1 &&dataset1, T2 &&dataset2, Ts &&...datasets) + -> decltype(zip(std::forward(dataset1), zip(std::forward(dataset2), std::forward(datasets)...))) { return zip(std::forward(dataset1), zip(std::forward(dataset2), std::forward(datasets)...)); } @@ -168,4 +165,4 @@ auto zip(T1 &&dataset1, T2 &&dataset2, Ts &&... datasets) -> decltype(zip(std::f } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_DATASET_ZIP */ +#endif // ACL_TESTS_FRAMEWORK_DATASETS_ZIPDATASET_H diff --git a/tests/framework/instruments/Instrument.h b/tests/framework/instruments/Instrument.h index 1770a492ace..1e06e0257a8 100644 --- a/tests/framework/instruments/Instrument.h +++ b/tests/framework/instruments/Instrument.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_INSTRUMENT -#define ARM_COMPUTE_TEST_INSTRUMENT +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_INSTRUMENT_H +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_INSTRUMENT_H #include "../Utils.h" #include "Measurement.h" - #include #include #include @@ -148,4 +147,4 @@ inline std::unique_ptr Instrument::make_instrument() } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_INSTRUMENT */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_INSTRUMENT_H diff --git a/tests/framework/instruments/Instruments.cpp b/tests/framework/instruments/Instruments.cpp index 7834feaa44f..d23477b506e 100644 --- a/tests/framework/instruments/Instruments.cpp +++ b/tests/framework/instruments/Instruments.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,7 +24,6 @@ #include "Instruments.h" #include "../Utils.h" - #include #include @@ -36,49 +35,67 @@ namespace framework { InstrumentsDescription instrument_type_from_name(const std::string &name) { - static const std::map types = - { - { "all", std::pair(InstrumentType::ALL, ScaleFactor::NONE) }, - { "none", std::pair(InstrumentType::NONE, ScaleFactor::NONE) }, - { "wall_clock", std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::NONE) }, - { "wall_clock_timer", std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::NONE) }, - { "wall_clock_timer_ms", std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::TIME_MS) }, - { "wall_clock_timer_s", std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::TIME_S) }, - { "wall_clock_timestamps", std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::NONE) }, - { "wall_clock_timestamps_ms", std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::TIME_MS) }, - { "wall_clock_timestamps_s", std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::TIME_S) }, - { "scheduler_timestamps", std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::NONE) }, - { "scheduler_timestamps_ms", std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::TIME_MS) }, - { "scheduler_timestamps_s", std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::TIME_S) }, - { "scheduler_timer", std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::NONE) }, - { "scheduler_timer_ms", std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::TIME_MS) }, - { "scheduler_timer_s", std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::TIME_S) }, - { "pmu", std::pair(InstrumentType::PMU, ScaleFactor::NONE) }, - { "pmu_k", std::pair(InstrumentType::PMU, ScaleFactor::SCALE_1K) }, - { "pmu_m", std::pair(InstrumentType::PMU, ScaleFactor::SCALE_1M) }, - { "pmu_cycles", std::pair(InstrumentType::PMU_CYCLE_COUNTER, ScaleFactor::NONE) }, - { "pmu_instructions", std::pair(InstrumentType::PMU_INSTRUCTION_COUNTER, ScaleFactor::NONE) }, - { "mali", std::pair(InstrumentType::MALI, ScaleFactor::NONE) }, - { "mali_k", std::pair(InstrumentType::MALI, ScaleFactor::SCALE_1K) }, - { "mali_m", std::pair(InstrumentType::MALI, ScaleFactor::SCALE_1M) }, - { "opencl_timestamps", std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::NONE) }, - { "opencl_timestamps_us", std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_US) }, - { "opencl_timestamps_ms", std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_MS) }, - { "opencl_timestamps_s", std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_S) }, - { "opencl_timer", std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::NONE) }, - { "opencl_timer_us", std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_US) }, - { "opencl_timer_ms", std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_MS) }, - { "opencl_timer_s", std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_S) }, - { "opencl_memory_usage", std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::NONE) }, - { "opencl_memory_usage_k", std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::SCALE_1K) }, - { "opencl_memory_usage_m", std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::SCALE_1M) }, + static const std::map types = { + {"all", std::pair(InstrumentType::ALL, ScaleFactor::NONE)}, + {"none", std::pair(InstrumentType::NONE, ScaleFactor::NONE)}, + {"wall_clock", std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::NONE)}, + {"wall_clock_timer", + std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::NONE)}, + {"wall_clock_timer_ms", + std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::TIME_MS)}, + {"wall_clock_timer_s", + std::pair(InstrumentType::WALL_CLOCK_TIMER, ScaleFactor::TIME_S)}, + {"wall_clock_timestamps", + std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::NONE)}, + {"wall_clock_timestamps_ms", + std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::TIME_MS)}, + {"wall_clock_timestamps_s", + std::pair(InstrumentType::WALL_CLOCK_TIMESTAMPS, ScaleFactor::TIME_S)}, + {"scheduler_timestamps", + std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::NONE)}, + {"scheduler_timestamps_ms", + std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::TIME_MS)}, + {"scheduler_timestamps_s", + std::pair(InstrumentType::SCHEDULER_TIMESTAMPS, ScaleFactor::TIME_S)}, + {"scheduler_timer", std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::NONE)}, + {"scheduler_timer_ms", + std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::TIME_MS)}, + {"scheduler_timer_s", + std::pair(InstrumentType::SCHEDULER_TIMER, ScaleFactor::TIME_S)}, + {"pmu", std::pair(InstrumentType::PMU, ScaleFactor::NONE)}, + {"pmu_k", std::pair(InstrumentType::PMU, ScaleFactor::SCALE_1K)}, + {"pmu_m", std::pair(InstrumentType::PMU, ScaleFactor::SCALE_1M)}, + {"pmu_cycles", std::pair(InstrumentType::PMU_CYCLE_COUNTER, ScaleFactor::NONE)}, + {"pmu_instructions", + std::pair(InstrumentType::PMU_INSTRUCTION_COUNTER, ScaleFactor::NONE)}, + {"mali", std::pair(InstrumentType::MALI, ScaleFactor::NONE)}, + {"mali_k", std::pair(InstrumentType::MALI, ScaleFactor::SCALE_1K)}, + {"mali_m", std::pair(InstrumentType::MALI, ScaleFactor::SCALE_1M)}, + {"opencl_timestamps", + std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::NONE)}, + {"opencl_timestamps_us", + std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_US)}, + {"opencl_timestamps_ms", + std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_MS)}, + {"opencl_timestamps_s", + std::pair(InstrumentType::OPENCL_TIMESTAMPS, ScaleFactor::TIME_S)}, + {"opencl_timer", std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::NONE)}, + {"opencl_timer_us", std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_US)}, + {"opencl_timer_ms", std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_MS)}, + {"opencl_timer_s", std::pair(InstrumentType::OPENCL_TIMER, ScaleFactor::TIME_S)}, + {"opencl_memory_usage", + std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::NONE)}, + {"opencl_memory_usage_k", + std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::SCALE_1K)}, + {"opencl_memory_usage_m", + std::pair(InstrumentType::OPENCL_MEMORY_USAGE, ScaleFactor::SCALE_1M)}, }; try { return types.at(tolower(name)); } - catch(const std::out_of_range &) + catch (const std::out_of_range &) { throw std::invalid_argument(name); } diff --git a/tests/framework/instruments/Instruments.h b/tests/framework/instruments/Instruments.h index d5d6398b449..e69dcb1fd91 100644 --- a/tests/framework/instruments/Instruments.h +++ b/tests/framework/instruments/Instruments.h @@ -32,7 +32,6 @@ #endif /* !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) */ #include "SchedulerTimer.h" #include "WallClockTimer.h" - #include #include #include @@ -80,10 +79,10 @@ inline ::std::stringstream &operator>>(::std::stringstream &stream, InstrumentsD inline ::std::stringstream &operator<<(::std::stringstream &stream, InstrumentsDescription instrument) { - switch(instrument.first) + switch (instrument.first) { case InstrumentType::WALL_CLOCK_TIMESTAMPS: - switch(instrument.second) + switch (instrument.second) { case ScaleFactor::NONE: stream << "WALL_CLOCK_TIMESTAMPS"; @@ -99,7 +98,7 @@ inline ::std::stringstream &operator<<(::std::stringstream &stream, InstrumentsD } break; case InstrumentType::WALL_CLOCK_TIMER: - switch(instrument.second) + switch (instrument.second) { case ScaleFactor::NONE: stream << "WALL_CLOCK_TIMER"; @@ -115,7 +114,7 @@ inline ::std::stringstream &operator<<(::std::stringstream &stream, InstrumentsD } break; case InstrumentType::SCHEDULER_TIMESTAMPS: - switch(instrument.second) + switch (instrument.second) { case ScaleFactor::NONE: stream << "SCHEDULER_TIMESTAMPS"; @@ -131,7 +130,7 @@ inline ::std::stringstream &operator<<(::std::stringstream &stream, InstrumentsD } break; case InstrumentType::SCHEDULER_TIMER: - switch(instrument.second) + switch (instrument.second) { case ScaleFactor::NONE: stream << "SCHEDULER_TIMER"; @@ -147,7 +146,7 @@ inline ::std::stringstream &operator<<(::std::stringstream &stream, InstrumentsD } break; case InstrumentType::PMU: - switch(instrument.second) + switch (instrument.second) { case ScaleFactor::NONE: stream << "PMU"; @@ -169,7 +168,7 @@ inline ::std::stringstream &operator<<(::std::stringstream &stream, InstrumentsD stream << "PMU_INSTRUCTION_COUNTER"; break; case InstrumentType::MALI: - switch(instrument.second) + switch (instrument.second) { case ScaleFactor::NONE: stream << "MALI"; @@ -185,7 +184,7 @@ inline ::std::stringstream &operator<<(::std::stringstream &stream, InstrumentsD } break; case InstrumentType::OPENCL_TIMESTAMPS: - switch(instrument.second) + switch (instrument.second) { case ScaleFactor::NONE: stream << "OPENCL_TIMESTAMPS"; @@ -204,7 +203,7 @@ inline ::std::stringstream &operator<<(::std::stringstream &stream, InstrumentsD } break; case InstrumentType::OPENCL_TIMER: - switch(instrument.second) + switch (instrument.second) { case ScaleFactor::NONE: stream << "OPENCL_TIMER"; @@ -223,7 +222,7 @@ inline ::std::stringstream &operator<<(::std::stringstream &stream, InstrumentsD } break; case InstrumentType::OPENCL_MEMORY_USAGE: - switch(instrument.second) + switch (instrument.second) { case ScaleFactor::NONE: stream << "OPENCL_MEMORY_USAGE"; diff --git a/tests/framework/instruments/InstrumentsStats.cpp b/tests/framework/instruments/InstrumentsStats.cpp index 2bb9eed97d7..7a3d032b31f 100644 --- a/tests/framework/instruments/InstrumentsStats.cpp +++ b/tests/framework/instruments/InstrumentsStats.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -22,6 +22,7 @@ * SOFTWARE. */ #include "InstrumentsStats.h" + #include "arm_compute/core/utils/misc/Utility.h" namespace arm_compute @@ -31,12 +32,13 @@ namespace test namespace framework { InstrumentsStats::InstrumentsStats(const std::vector &measurements) - : _min(nullptr), _max(nullptr), _median(nullptr), _mean(measurements.begin()->value().is_floating_point), _stddev(0.0) + : _min(nullptr), + _max(nullptr), + _median(nullptr), + _mean(measurements.begin()->value().is_floating_point), + _stddev(0.0) { - auto add_measurements = [](Measurement::Value a, const Measurement & b) - { - return a + b.value(); - }; + auto add_measurements = [](Measurement::Value a, const Measurement &b) { return a + b.value(); }; //Calculate min, max & median values auto indices = arm_compute::utility::sort_indices(measurements); @@ -44,16 +46,17 @@ InstrumentsStats::InstrumentsStats(const std::vector &measurements) _min = &measurements[indices[0]]; _max = &measurements[indices[measurements.size() - 1]]; - Measurement::Value sum_values = std::accumulate(measurements.begin(), measurements.end(), Measurement::Value(_min->value().is_floating_point), add_measurements); + Measurement::Value sum_values = + std::accumulate(measurements.begin(), measurements.end(), Measurement::Value(_min->value().is_floating_point), + add_measurements); // Calculate the relative standard deviation _mean = sum_values / measurements.size(); std::vector diff(measurements.size(), _min->value().is_floating_point); - std::transform(measurements.begin(), measurements.end(), diff.begin(), [&](const Measurement & x) - { - return x.value() - _mean; - }); - auto sq_sum = std::inner_product(diff.begin(), diff.end(), diff.begin(), Measurement::Value(_min->value().is_floating_point)); + std::transform(measurements.begin(), measurements.end(), diff.begin(), + [&](const Measurement &x) { return x.value() - _mean; }); + auto sq_sum = + std::inner_product(diff.begin(), diff.end(), diff.begin(), Measurement::Value(_min->value().is_floating_point)); auto variance = sq_sum / measurements.size(); _stddev = Measurement::Value::relative_standard_deviation(variance, _mean); } diff --git a/tests/framework/instruments/InstrumentsStats.h b/tests/framework/instruments/InstrumentsStats.h index aa2008ace38..60bc1ac9aff 100644 --- a/tests/framework/instruments/InstrumentsStats.h +++ b/tests/framework/instruments/InstrumentsStats.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_INSTRUMENTSMAP -#define ARM_COMPUTE_TEST_INSTRUMENTSMAP +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_INSTRUMENTSSTATS_H +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_INSTRUMENTSSTATS_H #include "Measurement.h" - #include namespace arm_compute @@ -86,4 +85,4 @@ class InstrumentsStats } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_INSTRUMENTSMAP */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_INSTRUMENTSSTATS_H diff --git a/tests/framework/instruments/MaliCounter.cpp b/tests/framework/instruments/MaliCounter.cpp index a7557fc94c3..da6c7c501bf 100644 --- a/tests/framework/instruments/MaliCounter.cpp +++ b/tests/framework/instruments/MaliCounter.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -46,7 +46,7 @@ MaliHWInfo get_mali_hw_info(const char *path) { int fd = open(path, O_RDWR); // NOLINT - if(fd < 0) + if (fd < 0) { ARM_COMPUTE_ERROR("Failed to get HW info."); } @@ -57,7 +57,7 @@ MaliHWInfo get_mali_hw_info(const char *path) version_check_args.major = 10; version_check_args.minor = 2; - if(mali_userspace::mali_ioctl(fd, version_check_args) != 0) + if (mali_userspace::mali_ioctl(fd, version_check_args) != 0) { ARM_COMPUTE_ERROR("Failed to check version."); close(fd); @@ -70,7 +70,7 @@ MaliHWInfo get_mali_hw_info(const char *path) flags.header.id = mali_userspace::KBASE_FUNC_SET_FLAGS; // NOLINT flags.create_flags = mali_userspace::BASE_CONTEXT_CREATE_KERNEL_FLAGS; - if(mali_userspace::mali_ioctl(fd, flags) != 0) + if (mali_userspace::mali_ioctl(fd, flags) != 0) { ARM_COMPUTE_ERROR("Failed settings flags ioctl."); close(fd); @@ -81,7 +81,7 @@ MaliHWInfo get_mali_hw_info(const char *path) mali_userspace::kbase_uk_gpuprops props; // NOLINT props.header.id = mali_userspace::KBASE_FUNC_GPU_PROPS_REG_DUMP; // NOLINT - if(mali_ioctl(fd, props) != 0) + if (mali_ioctl(fd, props) != 0) { ARM_COMPUTE_ERROR("Failed settings flags ioctl."); close(fd); @@ -93,7 +93,7 @@ MaliHWInfo get_mali_hw_info(const char *path) hw_info.r_value = props.props.core_props.major_revision; hw_info.p_value = props.props.core_props.minor_revision; - for(unsigned int i = 0; i < props.props.coherency_info.num_core_groups; ++i) + for (unsigned int i = 0; i < props.props.coherency_info.num_core_groups; ++i) { hw_info.core_mask |= props.props.coherency_info.group[i].core_mask; } @@ -109,21 +109,19 @@ MaliHWInfo get_mali_hw_info(const char *path) MaliCounter::MaliCounter(ScaleFactor scale_factor) { - _counters = - { - { "GPU_ACTIVE", Measurement(0, "cycles") }, + _counters = { + {"GPU_ACTIVE", Measurement(0, "cycles")}, }; - _core_counters = - { - { "ARITH_WORDS", { "Arithmetic pipe", std::map(), "instructions" } }, - { "LS_ISSUE", { "LS pipe", std::map(), "instructions" } }, - { "TEX_ISSUE", { "Texture pipe", std::map(), "instructions" } }, - { "COMPUTE_ACTIVE", { "Compute core", std::map(), "cycles" } }, - { "FRAG_ACTIVE", { "Fragment core", std::map(), "cycles" } }, + _core_counters = { + {"ARITH_WORDS", {"Arithmetic pipe", std::map(), "instructions"}}, + {"LS_ISSUE", {"LS pipe", std::map(), "instructions"}}, + {"TEX_ISSUE", {"Texture pipe", std::map(), "instructions"}}, + {"COMPUTE_ACTIVE", {"Compute core", std::map(), "cycles"}}, + {"FRAG_ACTIVE", {"Fragment core", std::map(), "cycles"}}, }; - switch(scale_factor) + switch (scale_factor) { case ScaleFactor::NONE: _scale_factor = 1; @@ -159,7 +157,7 @@ void MaliCounter::init() _fd = open(_device, O_RDWR | O_CLOEXEC | O_NONBLOCK); // NOLINT - if(_fd < 0) + if (_fd < 0) { ARM_COMPUTE_ERROR("Failed to open /dev/mali0."); } @@ -168,11 +166,11 @@ void MaliCounter::init() mali_userspace::kbase_uk_hwcnt_reader_version_check_args check; // NOLINT memset(&check, 0, sizeof(check)); - if(mali_userspace::mali_ioctl(_fd, check) != 0) + if (mali_userspace::mali_ioctl(_fd, check) != 0) { ARM_COMPUTE_ERROR("Failed to get ABI version."); } - else if(check.major < 10) + else if (check.major < 10) { ARM_COMPUTE_ERROR("Unsupported ABI version 10."); } @@ -184,7 +182,7 @@ void MaliCounter::init() flags.header.id = mali_userspace::KBASE_FUNC_SET_FLAGS; // NOLINT flags.create_flags = mali_userspace::BASE_CONTEXT_CREATE_KERNEL_FLAGS; - if(mali_userspace::mali_ioctl(_fd, flags) != 0) + if (mali_userspace::mali_ioctl(_fd, flags) != 0) { ARM_COMPUTE_ERROR("Failed settings flags ioctl."); } @@ -201,7 +199,7 @@ void MaliCounter::init() setup.mmu_l2_bm = -1; setup.fd = -1; - if(mali_userspace::mali_ioctl(_fd, setup) != 0) + if (mali_userspace::mali_ioctl(_fd, setup) != 0) { ARM_COMPUTE_ERROR("Failed setting hwcnt reader ioctl."); } @@ -212,44 +210,45 @@ void MaliCounter::init() { uint32_t api_version = ~mali_userspace::HWCNT_READER_API; - if(ioctl(_hwc_fd, mali_userspace::KBASE_HWCNT_READER_GET_API_VERSION, &api_version) != 0) // NOLINT + if (ioctl(_hwc_fd, mali_userspace::KBASE_HWCNT_READER_GET_API_VERSION, &api_version) != 0) // NOLINT { ARM_COMPUTE_ERROR("Could not determine hwcnt reader API."); } - else if(api_version != mali_userspace::HWCNT_READER_API) + else if (api_version != mali_userspace::HWCNT_READER_API) { ARM_COMPUTE_ERROR("Invalid API version."); } } - if(ioctl(_hwc_fd, static_cast(mali_userspace::KBASE_HWCNT_READER_GET_BUFFER_SIZE), &_buffer_size) != 0) // NOLINT + if (ioctl(_hwc_fd, static_cast(mali_userspace::KBASE_HWCNT_READER_GET_BUFFER_SIZE), &_buffer_size) != + 0) // NOLINT { ARM_COMPUTE_ERROR("Failed to get buffer size."); } - if(ioctl(_hwc_fd, static_cast(mali_userspace::KBASE_HWCNT_READER_GET_HWVER), &_hw_ver) != 0) // NOLINT + if (ioctl(_hwc_fd, static_cast(mali_userspace::KBASE_HWCNT_READER_GET_HWVER), &_hw_ver) != 0) // NOLINT { ARM_COMPUTE_ERROR("Could not determine HW version."); } - if(_hw_ver < 5) + if (_hw_ver < 5) { ARM_COMPUTE_ERROR("Unsupported HW version."); } - _sample_data = static_cast(mmap(nullptr, _buffer_count * _buffer_size, PROT_READ, MAP_PRIVATE, _hwc_fd, 0)); + _sample_data = + static_cast(mmap(nullptr, _buffer_count * _buffer_size, PROT_READ, MAP_PRIVATE, _hwc_fd, 0)); - if(_sample_data == MAP_FAILED) // NOLINT + if (_sample_data == MAP_FAILED) // NOLINT { ARM_COMPUTE_ERROR("Failed to map sample data."); } - auto product = std::find_if(std::begin(mali_userspace::products), std::end(mali_userspace::products), [&](const mali_userspace::CounterMapping & cm) - { - return (cm.product_mask & hw_info.gpu_id) == cm.product_id; - }); + auto product = std::find_if(std::begin(mali_userspace::products), std::end(mali_userspace::products), + [&](const mali_userspace::CounterMapping &cm) + { return (cm.product_mask & hw_info.gpu_id) == cm.product_id; }); - if(product != std::end(mali_userspace::products)) + if (product != std::end(mali_userspace::products)) { _names_lut = product->names_lut; } @@ -266,7 +265,7 @@ void MaliCounter::init() unsigned int mask = hw_info.core_mask; - while(mask != 0) + while (mask != 0) { unsigned int bit = __builtin_ctz(mask); _core_index_remap.push_back(bit); @@ -276,19 +275,19 @@ void MaliCounter::init() void MaliCounter::term() { - if(_sample_data != nullptr) + if (_sample_data != nullptr) { munmap(_sample_data, _buffer_count * _buffer_size); _sample_data = nullptr; } - if(_hwc_fd >= 0) + if (_hwc_fd >= 0) { close(_hwc_fd); _hwc_fd = -1; } - if(_fd >= 0) + if (_fd >= 0) { close(_fd); _fd = -1; @@ -297,7 +296,7 @@ void MaliCounter::term() void MaliCounter::sample_counters() { - if(ioctl(_hwc_fd, mali_userspace::KBASE_HWCNT_READER_DUMP, 0) != 0) + if (ioctl(_hwc_fd, mali_userspace::KBASE_HWCNT_READER_DUMP, 0) != 0) { ARM_COMPUTE_ERROR("Could not sample hardware counters."); } @@ -311,16 +310,16 @@ void MaliCounter::wait_next_event() const int count = poll(&poll_fd, 1, -1); - if(count < 0) + if (count < 0) { ARM_COMPUTE_ERROR("poll() failed."); } - if((poll_fd.revents & POLLIN) != 0) + if ((poll_fd.revents & POLLIN) != 0) { mali_userspace::kbase_hwcnt_reader_metadata meta; // NOLINT - if(ioctl(_hwc_fd, static_cast(mali_userspace::KBASE_HWCNT_READER_GET_BUFFER), &meta) != 0) // NOLINT + if (ioctl(_hwc_fd, static_cast(mali_userspace::KBASE_HWCNT_READER_GET_BUFFER), &meta) != 0) // NOLINT { ARM_COMPUTE_ERROR("Failed READER_GET_BUFFER."); } @@ -328,12 +327,12 @@ void MaliCounter::wait_next_event() memcpy(_raw_counter_buffer.data(), _sample_data + _buffer_size * meta.buffer_idx, _buffer_size); _timestamp = meta.timestamp; - if(ioctl(_hwc_fd, mali_userspace::KBASE_HWCNT_READER_PUT_BUFFER, &meta) != 0) // NOLINT + if (ioctl(_hwc_fd, mali_userspace::KBASE_HWCNT_READER_PUT_BUFFER, &meta) != 0) // NOLINT { ARM_COMPUTE_ERROR("Failed READER_PUT_BUFFER."); } } - else if((poll_fd.revents & POLLHUP) != 0) + else if ((poll_fd.revents & POLLHUP) != 0) { ARM_COMPUTE_ERROR("HWC hung up."); } @@ -346,7 +345,7 @@ const uint32_t *MaliCounter::get_counters() const const uint32_t *MaliCounter::get_counters(mali_userspace::MaliCounterBlockName block, int core) const { - switch(block) + switch (block) { case mali_userspace::MALI_NAME_BLOCK_JM: return _raw_counter_buffer.data() + mali_userspace::MALI_NAME_BLOCK_SIZE * 0; @@ -355,7 +354,7 @@ const uint32_t *MaliCounter::get_counters(mali_userspace::MaliCounterBlockName b case mali_userspace::MALI_NAME_BLOCK_TILER: return _raw_counter_buffer.data() + mali_userspace::MALI_NAME_BLOCK_SIZE * 1; default: - if(core < 0) + if (core < 0) { ARM_COMPUTE_ERROR("Invalid core number."); } @@ -368,9 +367,9 @@ int MaliCounter::find_counter_index_by_name(mali_userspace::MaliCounterBlockName { const char *const *names = &_names_lut[mali_userspace::MALI_NAME_BLOCK_SIZE * block]; - for(int i = 0; i < mali_userspace::MALI_NAME_BLOCK_SIZE; ++i) + for (int i = 0; i < mali_userspace::MALI_NAME_BLOCK_SIZE; ++i) { - if(strstr(names[i], name) != nullptr) + if (strstr(names[i], name) != nullptr) { return i; } @@ -391,8 +390,10 @@ void MaliCounter::stop() sample_counters(); wait_next_event(); - const uint32_t *counter = get_counters(mali_userspace::MALI_NAME_BLOCK_JM); - _counters.at("GPU_ACTIVE") = Measurement(counter[find_counter_index_by_name(mali_userspace::MALI_NAME_BLOCK_JM, "GPU_ACTIVE")], _counters.at("GPU_ACTIVE").unit()); + const uint32_t *counter = get_counters(mali_userspace::MALI_NAME_BLOCK_JM); + _counters.at("GPU_ACTIVE") = + Measurement(counter[find_counter_index_by_name(mali_userspace::MALI_NAME_BLOCK_JM, "GPU_ACTIVE")], + _counters.at("GPU_ACTIVE").unit()); const int arith_index = find_counter_index_by_name(mali_userspace::MALI_NAME_BLOCK_SHADER, "ARITH_WORDS"); const int ls_index = find_counter_index_by_name(mali_userspace::MALI_NAME_BLOCK_SHADER, "LS_ISSUE"); @@ -401,7 +402,7 @@ void MaliCounter::stop() const int frag_index = find_counter_index_by_name(mali_userspace::MALI_NAME_BLOCK_SHADER, "FRAG_ACTIVE"); // Shader core counters can be averaged if desired, but here we don't. - for(uint32_t core = 0; core < _num_cores; ++core) + for (uint32_t core = 0; core < _num_cores; ++core) { const uint32_t *sc_counter = get_counters(mali_userspace::MALI_NAME_BLOCK_SHADER, core); @@ -422,19 +423,20 @@ std::string MaliCounter::id() const Instrument::MeasurementsMap MaliCounter::measurements() const { - Measurement counters((_counters.at("GPU_ACTIVE").value() / _scale_factor).v.floating_point, _unit + _counters.at("GPU_ACTIVE").unit()); //NOLINT + Measurement counters((_counters.at("GPU_ACTIVE").value() / _scale_factor).v.floating_point, + _unit + _counters.at("GPU_ACTIVE").unit()); //NOLINT - MeasurementsMap measurements - { - { "Timespan", Measurement(_stop_time - _start_time, "ns") }, - { "GPU active", counters }, + MeasurementsMap measurements{ + {"Timespan", Measurement(_stop_time - _start_time, "ns")}, + {"GPU active", counters}, }; - for(const auto &counter : _core_counters) + for (const auto &counter : _core_counters) { - for(const auto &core : counter.second.values) + for (const auto &core : counter.second.values) { - measurements.emplace(counter.second.name + " #" + support::cpp11::to_string(core.first), Measurement(core.second / _scale_factor, _unit + counter.second.unit)); + measurements.emplace(counter.second.name + " #" + support::cpp11::to_string(core.first), + Measurement(core.second / _scale_factor, _unit + counter.second.unit)); } } diff --git a/tests/framework/instruments/MaliCounter.h b/tests/framework/instruments/MaliCounter.h index c2d18494239..16d0e521b86 100644 --- a/tests/framework/instruments/MaliCounter.h +++ b/tests/framework/instruments/MaliCounter.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_MALI_COUNTER -#define ARM_COMPUTE_TEST_MALI_COUNTER +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_MALICOUNTER_H +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_MALICOUNTER_H +#include "hwc.hpp" #include "Instrument.h" #include "Measurement.h" -#include "hwc.hpp" - #include #include @@ -68,41 +67,36 @@ class MaliCounter : public Instrument void wait_next_event(); const uint32_t *get_counters() const; const uint32_t *get_counters(mali_userspace::MaliCounterBlockName block, int core = -1) const; - int find_counter_index_by_name(mali_userspace::MaliCounterBlockName block, const char *name); + int find_counter_index_by_name(mali_userspace::MaliCounterBlockName block, const char *name); std::map _counters{}; struct core_counters { - std::string name; + std::string name; std::map values; - std::string unit; + std::string unit; }; std::map _core_counters{}; - uint64_t _start_time{ 0 }; - uint64_t _stop_time{ 0 }; + uint64_t _start_time{0}; + uint64_t _stop_time{0}; - const char *const _device - { "/dev/mali0" - }; - uint32_t _num_cores{ 0 }; - uint32_t _hw_ver{ 0 }; - int _buffer_count{ 16 }; - size_t _buffer_size{ 0 }; - uint8_t *_sample_data{ nullptr }; - uint64_t _timestamp{ 0 }; - const char *const *_names_lut - { - nullptr - }; + const char *const _device{"/dev/mali0"}; + uint32_t _num_cores{0}; + uint32_t _hw_ver{0}; + int _buffer_count{16}; + size_t _buffer_size{0}; + uint8_t *_sample_data{nullptr}; + uint64_t _timestamp{0}; + const char *const *_names_lut{nullptr}; std::vector _raw_counter_buffer{}; std::vector _core_index_remap{}; - int _fd{ -1 }; - int _hwc_fd{ -1 }; + int _fd{-1}; + int _hwc_fd{-1}; int _scale_factor{}; }; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_MALI_COUNTER */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_MALICOUNTER_H diff --git a/tests/framework/instruments/Measurement.h b/tests/framework/instruments/Measurement.h index 2ec68d424bd..c19b8f72b80 100644 --- a/tests/framework/instruments/Measurement.h +++ b/tests/framework/instruments/Measurement.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018,2021 Arm Limited. + * Copyright (c) 2017-2018,2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,12 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_MEASUREMENT -#define ARM_COMPUTE_TEST_MEASUREMENT +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_MEASUREMENT_H +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_MEASUREMENT_H -#include "../Utils.h" #include "arm_compute/core/Error.h" +#include "../Utils.h" #include #include #include @@ -47,8 +47,7 @@ struct Measurement * * @param[in] is_floating Will the value stored be floating point ? */ - Value(bool is_floating) - : v{ 0 }, is_floating_point(is_floating) + Value(bool is_floating) : v{0}, is_floating_point(is_floating) { } @@ -56,7 +55,7 @@ struct Measurement */ friend std::ostream &operator<<(std::ostream &os, const Value &value) { - if(value.is_floating_point) + if (value.is_floating_point) { os << arithmetic_to_string(value.v.floating_point, 4); } @@ -82,7 +81,7 @@ struct Measurement */ Value operator+(Value b) const { - if(is_floating_point) + if (is_floating_point) { b.v.floating_point += v.floating_point; } @@ -101,7 +100,7 @@ struct Measurement */ Value operator-(Value b) const { - if(is_floating_point) + if (is_floating_point) { b.v.floating_point -= v.floating_point; } @@ -120,7 +119,7 @@ struct Measurement */ Value operator*(Value b) const { - if(is_floating_point) + if (is_floating_point) { b.v.floating_point *= v.floating_point; } @@ -140,7 +139,7 @@ struct Measurement Value operator/(int b) const { Value res(is_floating_point); - if(is_floating_point) + if (is_floating_point) { res.v.floating_point = v.floating_point / b; } @@ -159,7 +158,7 @@ struct Measurement */ Value &operator-=(const Value &b) { - if(is_floating_point) + if (is_floating_point) { v.floating_point -= b.v.floating_point; } @@ -178,7 +177,7 @@ struct Measurement */ bool operator<(const Value &b) const { - if(is_floating_point) + if (is_floating_point) { return v.floating_point < b.v.floating_point; } @@ -197,7 +196,7 @@ struct Measurement */ static double relative_standard_deviation(const Value &variance, const Value &mean) { - if(variance.is_floating_point) + if (variance.is_floating_point) { return 100.0 * sqrt(variance.v.floating_point) / mean.v.floating_point; } @@ -248,14 +247,14 @@ struct Measurement * @param[in] unit Unit of @p v * @param[in] raw (Optional) The raw value(s) @p was generated from. */ - template < typename Floating, typename std::enable_if < !std::is_integral::value, int >::type = 0 > + template ::value, int>::type = 0> Measurement(Floating v, std::string unit, std::list raw = {}) : _unit(unit), _raw_data(std::move(raw)), _value(true) { _value.v.floating_point = static_cast(v); - if(_raw_data.empty()) + if (_raw_data.empty()) { - _raw_data = { _value.to_string() }; + _raw_data = {_value.to_string()}; } } @@ -270,9 +269,9 @@ struct Measurement : _unit(unit), _raw_data(std::move(raw)), _value(false) { _value.v.integer = static_cast(v); - if(_raw_data.empty()) + if (_raw_data.empty()) { - _raw_data = { _value.to_string() }; + _raw_data = {_value.to_string()}; } } @@ -312,4 +311,4 @@ struct Measurement } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_MEASUREMENT */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_MEASUREMENT_H diff --git a/tests/framework/instruments/OpenCLMemoryUsage.cpp b/tests/framework/instruments/OpenCLMemoryUsage.cpp index 5ed2013f3de..6c12e5b20de 100644 --- a/tests/framework/instruments/OpenCLMemoryUsage.cpp +++ b/tests/framework/instruments/OpenCLMemoryUsage.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 Arm Limited. + * Copyright (c) 2018-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -44,10 +44,18 @@ std::string OpenCLMemoryUsage::id() const } OpenCLMemoryUsage::OpenCLMemoryUsage(ScaleFactor scale_factor) - : real_clCreateBuffer(CLSymbols::get().clCreateBuffer_ptr), real_clRetainMemObject(CLSymbols::get().clRetainMemObject_ptr), real_clReleaseMemObject(CLSymbols::get().clReleaseMemObject_ptr), - real_clSVMAlloc(CLSymbols::get().clSVMAlloc_ptr), real_clSVMFree(CLSymbols::get().clSVMFree_ptr), _allocations(), _svm_allocations(), _start(), _end(), _now() + : real_clCreateBuffer(CLSymbols::get().clCreateBuffer_ptr), + real_clRetainMemObject(CLSymbols::get().clRetainMemObject_ptr), + real_clReleaseMemObject(CLSymbols::get().clReleaseMemObject_ptr), + real_clSVMAlloc(CLSymbols::get().clSVMAlloc_ptr), + real_clSVMFree(CLSymbols::get().clSVMFree_ptr), + _allocations(), + _svm_allocations(), + _start(), + _end(), + _now() { - switch(scale_factor) + switch (scale_factor) { case ScaleFactor::NONE: _scale_factor = 1; @@ -71,15 +79,11 @@ void OpenCLMemoryUsage::test_start() _now = Stats(); ARM_COMPUTE_ERROR_ON(CLSymbols::get().clCreateBuffer_ptr == nullptr); - CLSymbols::get().clCreateBuffer_ptr = [this]( - cl_context context, - cl_mem_flags flags, - size_t size, - void *host_ptr, - cl_int * errcode_ret) + CLSymbols::get().clCreateBuffer_ptr = + [this](cl_context context, cl_mem_flags flags, size_t size, void *host_ptr, cl_int *errcode_ret) { cl_mem retval = this->real_clCreateBuffer(context, flags, size, host_ptr, errcode_ret); - if(host_ptr != nullptr) + if (host_ptr != nullptr) { // If it's an SVM / external allocation; size = 0; @@ -89,7 +93,7 @@ void OpenCLMemoryUsage::test_start() _now.num_allocations++; _now.in_use += size; _now.total_allocated += size; - if(_now.in_use > _now.max_in_use) + if (_now.in_use > _now.max_in_use) { _now.max_in_use = _now.in_use; } @@ -109,7 +113,7 @@ void OpenCLMemoryUsage::test_start() { cl_int retval = this->real_clRetainMemObject(memobj); Allocation &alloc = this->_allocations[memobj]; - if(--alloc.refcount == 0) + if (--alloc.refcount == 0) { _now.in_use -= alloc.size; } @@ -117,18 +121,19 @@ void OpenCLMemoryUsage::test_start() }; //Only intercept the function if it exists: - if(CLSymbols::get().clSVMAlloc_ptr != nullptr) + if (CLSymbols::get().clSVMAlloc_ptr != nullptr) { - CLSymbols::get().clSVMAlloc_ptr = [this](cl_context context, cl_svm_mem_flags flags, size_t size, cl_uint alignment) + CLSymbols::get().clSVMAlloc_ptr = + [this](cl_context context, cl_svm_mem_flags flags, size_t size, cl_uint alignment) { void *retval = this->real_clSVMAlloc(context, flags, size, alignment); - if(retval != nullptr) + if (retval != nullptr) { _svm_allocations[retval] = size; _now.num_allocations++; _now.in_use += size; _now.total_allocated += size; - if(_now.in_use > _now.max_in_use) + if (_now.in_use > _now.max_in_use) { _now.max_in_use = _now.in_use; } @@ -138,13 +143,13 @@ void OpenCLMemoryUsage::test_start() } //Only intercept the function if it exists: - if(CLSymbols::get().clSVMFree_ptr != nullptr) + if (CLSymbols::get().clSVMFree_ptr != nullptr) { CLSymbols::get().clSVMFree_ptr = [this](cl_context context, void *svm_pointer) { this->real_clSVMFree(context, svm_pointer); auto iterator = _svm_allocations.find(svm_pointer); - if(iterator != _svm_allocations.end()) + if (iterator != _svm_allocations.end()) { size_t size = iterator->second; _svm_allocations.erase(iterator); @@ -176,8 +181,10 @@ void OpenCLMemoryUsage::test_stop() Instrument::MeasurementsMap OpenCLMemoryUsage::measurements() const { MeasurementsMap measurements; - measurements.emplace("Num buffers allocated per run", Measurement(_end.num_allocations - _start.num_allocations, "")); - measurements.emplace("Total memory allocated per run", Measurement((_end.total_allocated - _start.total_allocated) / _scale_factor, _unit)); + measurements.emplace("Num buffers allocated per run", + Measurement(_end.num_allocations - _start.num_allocations, "")); + measurements.emplace("Total memory allocated per run", + Measurement((_end.total_allocated - _start.total_allocated) / _scale_factor, _unit)); measurements.emplace("Memory in use at start of run", Measurement(_start.in_use / _scale_factor, _unit)); return measurements; @@ -192,7 +199,7 @@ Instrument::MeasurementsMap OpenCLMemoryUsage::test_measurements() const size_t num_programs = CLKernelLibrary::get().get_built_programs().size(); size_t total_size = 0; - for(auto const &it : CLKernelLibrary::get().get_built_programs()) + for (auto const &it : CLKernelLibrary::get().get_built_programs()) { std::vector binary_sizes = it.second.getInfo(); total_size = std::accumulate(binary_sizes.begin(), binary_sizes.end(), total_size); diff --git a/tests/framework/instruments/OpenCLMemoryUsage.h b/tests/framework/instruments/OpenCLMemoryUsage.h index 07b6544f51d..268f51a99da 100644 --- a/tests/framework/instruments/OpenCLMemoryUsage.h +++ b/tests/framework/instruments/OpenCLMemoryUsage.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Arm Limited. + * Copyright (c) 2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_OPENCL_MEMORY_USAGE -#define ARM_COMPUTE_TEST_OPENCL_MEMORY_USAGE +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_OPENCLMEMORYUSAGE_H +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_OPENCLMEMORYUSAGE_H #include "Instrument.h" @@ -66,25 +66,24 @@ class OpenCLMemoryUsage : public Instrument struct Allocation { Allocation() = default; - Allocation(size_t alloc_size) - : size(alloc_size) + Allocation(size_t alloc_size) : size(alloc_size) { } - size_t size{ 0 }; - int refcount{ 1 }; + size_t size{0}; + int refcount{1}; }; std::map _allocations; std::map _svm_allocations; struct Stats { - size_t total_allocated{ 0 }; - size_t max_in_use{ 0 }; - size_t in_use{ 0 }; - size_t num_allocations{ 0 }; + size_t total_allocated{0}; + size_t max_in_use{0}; + size_t in_use{0}; + size_t num_allocations{0}; } _start, _end, _now; #endif /* ARM_COMPUTE_CL */ }; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_OPENCL_MEMORY_USAGE */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_OPENCLMEMORYUSAGE_H diff --git a/tests/framework/instruments/OpenCLTimer.cpp b/tests/framework/instruments/OpenCLTimer.cpp index e9f945bd95f..fccce5b7cc8 100644 --- a/tests/framework/instruments/OpenCLTimer.cpp +++ b/tests/framework/instruments/OpenCLTimer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019, 2021 Arm Limited. + * Copyright (c) 2017-2019, 2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -23,12 +23,12 @@ */ #include "OpenCLTimer.h" -#include "../Framework.h" -#include "../Utils.h" - #include "arm_compute/graph/INode.h" #include "arm_compute/runtime/CL/CLScheduler.h" +#include "../Framework.h" +#include "../Utils.h" + #ifndef ARM_COMPUTE_CL #error "You can't use OpenCLTimer without OpenCL" #endif /* ARM_COMPUTE_CL */ @@ -40,9 +40,9 @@ namespace test namespace framework { template -std::string OpenCLClock::id() const +std::string OpenCLClock::id() const { - if(output_timestamps) + if (output_timestamps) { return "OpenCLTimestamps"; } @@ -64,12 +64,12 @@ OpenCLClock::OpenCLClock(ScaleFactor scale_factor) { auto q = CLScheduler::get().queue(); cl_command_queue_properties props = q.getInfo(); - if((props & CL_QUEUE_PROFILING_ENABLE) == 0) + if ((props & CL_QUEUE_PROFILING_ENABLE) == 0) { CLScheduler::get().set_queue(cl::CommandQueue(CLScheduler::get().context(), props | CL_QUEUE_PROFILING_ENABLE)); } - switch(scale_factor) + switch (scale_factor) { case ScaleFactor::NONE: _scale_factor = 1.f; @@ -93,43 +93,37 @@ OpenCLClock::OpenCLClock(ScaleFactor scale_factor) } template -void OpenCLClock::test_start() +void OpenCLClock::test_start() { // Start intercepting enqueues: ARM_COMPUTE_ERROR_ON(_real_function != nullptr); _real_function = CLSymbols::get().clEnqueueNDRangeKernel_ptr; - auto interceptor = [this]( - cl_command_queue command_queue, - cl_kernel kernel, - cl_uint work_dim, - const size_t *gwo, - const size_t *gws, - const size_t *lws, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) + auto interceptor = [this](cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, const size_t *gwo, + const size_t *gws, const size_t *lws, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event) { - if(this->_timer_enabled) + if (this->_timer_enabled) { kernel_info info; cl::Kernel cpp_kernel(kernel, true); std::stringstream ss; ss << this->_prefix << cpp_kernel.getInfo(); - if(gws != nullptr) + if (gws != nullptr) { ss << " GWS[" << gws[0] << "," << gws[1] << "," << gws[2] << "]"; } - if(lws != nullptr) + if (lws != nullptr) { ss << " LWS[" << lws[0] << "," << lws[1] << "," << lws[2] << "]"; } info.name = ss.str(); cl_event tmp; - cl_int retval = this->_real_function(command_queue, kernel, work_dim, gwo, gws, lws, num_events_in_wait_list, event_wait_list, &tmp); + cl_int retval = this->_real_function(command_queue, kernel, work_dim, gwo, gws, lws, + num_events_in_wait_list, event_wait_list, &tmp); info.event = tmp; this->_kernels.push_back(std::move(info)); - if(event != nullptr) + if (event != nullptr) { //return cl_event from the intercepted call clRetainEvent(tmp); @@ -139,7 +133,8 @@ void OpenCLClock::test_start() } else { - return this->_real_function(command_queue, kernel, work_dim, gwo, gws, lws, num_events_in_wait_list, event_wait_list, event); + return this->_real_function(command_queue, kernel, work_dim, gwo, gws, lws, num_events_in_wait_list, + event_wait_list, event); } }; CLSymbols::get().clEnqueueNDRangeKernel_ptr = interceptor; @@ -148,9 +143,9 @@ void OpenCLClock::test_start() ARM_COMPUTE_ERROR_ON(_real_graph_function != nullptr); _real_graph_function = graph::TaskExecutor::get().execute_function; // Start intercepting tasks: - auto task_interceptor = [this](graph::ExecutionTask & task) + auto task_interceptor = [this](graph::ExecutionTask &task) { - if(task.node != nullptr && !task.node->name().empty()) + if (task.node != nullptr && !task.node->name().empty()) { this->_prefix = task.node->name() + "/"; } @@ -166,19 +161,19 @@ void OpenCLClock::test_start() } template -void OpenCLClock::start() +void OpenCLClock::start() { _kernels.clear(); _timer_enabled = true; } template -void OpenCLClock::stop() +void OpenCLClock::stop() { _timer_enabled = false; } template -void OpenCLClock::test_stop() +void OpenCLClock::test_stop() { // Restore real function CLSymbols::get().clEnqueueNDRangeKernel_ptr = _real_function; @@ -189,12 +184,12 @@ void OpenCLClock::test_stop() #endif /* ARM_COMPUTE_GRAPH_ENABLED */ } -template +template Instrument::MeasurementsMap OpenCLClock::measurements() const { MeasurementsMap measurements; unsigned int kernel_number = 0; - for(auto const &kernel : _kernels) + for (auto const &kernel : _kernels) { cl_ulong queued; cl_ulong flushed; @@ -206,11 +201,12 @@ Instrument::MeasurementsMap OpenCLClock::measurements() const kernel.event.getProfilingInfo(CL_PROFILING_COMMAND_END, &end); std::string name = kernel.name + " #" + support::cpp11::to_string(kernel_number++); - if(output_timestamps) + if (output_timestamps) { measurements.emplace("[start]" + name, Measurement(start / static_cast(_scale_factor), _unit)); measurements.emplace("[queued]" + name, Measurement(queued / static_cast(_scale_factor), _unit)); - measurements.emplace("[flushed]" + name, Measurement(flushed / static_cast(_scale_factor), _unit)); + measurements.emplace("[flushed]" + name, + Measurement(flushed / static_cast(_scale_factor), _unit)); measurements.emplace("[end]" + name, Measurement(end / static_cast(_scale_factor), _unit)); } else @@ -222,12 +218,12 @@ Instrument::MeasurementsMap OpenCLClock::measurements() const return measurements; } -template +template Instrument::MeasurementsMap OpenCLClock::test_measurements() const { MeasurementsMap measurements; - if(output_timestamps) + if (output_timestamps) { // The OpenCL clock and the wall clock are not in sync, so we use // this trick to calculate the offset between the two clocks: diff --git a/tests/framework/instruments/PMU.cpp b/tests/framework/instruments/PMU.cpp index bb2c70e2151..7f489f0d427 100644 --- a/tests/framework/instruments/PMU.cpp +++ b/tests/framework/instruments/PMU.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -34,8 +34,7 @@ namespace test { namespace framework { -PMU::PMU() - : _perf_config() +PMU::PMU() : _perf_config() { _perf_config.type = PERF_TYPE_HARDWARE; _perf_config.size = sizeof(perf_event_attr); @@ -49,8 +48,7 @@ PMU::PMU() _perf_config.inherit_stat = 1; } -PMU::PMU(uint64_t config) - : PMU() +PMU::PMU(uint64_t config) : PMU() { open(config); } @@ -74,7 +72,7 @@ void PMU::open(const perf_event_attr &perf_config) ARM_COMPUTE_ERROR_ON_MSG(_fd < 0, "perf_event_open failed"); const int result = ioctl(_fd, PERF_EVENT_IOC_ENABLE, 0); - if(result == -1) + if (result == -1) { ARM_COMPUTE_ERROR_VAR("Failed to enable PMU counter: %d", errno); } @@ -82,7 +80,7 @@ void PMU::open(const perf_event_attr &perf_config) void PMU::close() { - if(_fd != -1) + if (_fd != -1) { ::close(_fd); _fd = -1; @@ -92,7 +90,7 @@ void PMU::close() void PMU::reset() { const int result = ioctl(_fd, PERF_EVENT_IOC_RESET, 0); - if(result == -1) + if (result == -1) { ARM_COMPUTE_ERROR_VAR("Failed to reset PMU counter: %d", errno); } diff --git a/tests/framework/instruments/PMU.h b/tests/framework/instruments/PMU.h index c392a0ac660..e417f3336df 100644 --- a/tests/framework/instruments/PMU.h +++ b/tests/framework/instruments/PMU.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_PMU -#define ARM_COMPUTE_TEST_PMU +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_PMU_H +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_PMU_H #include "arm_compute/core/Error.h" @@ -84,7 +84,7 @@ class PMU private: perf_event_attr _perf_config; - long _fd{ -1 }; + long _fd{-1}; }; template @@ -93,7 +93,7 @@ T PMU::get_value() const T value{}; const ssize_t result = read(_fd, &value, sizeof(T)); - if(result == -1) + if (result == -1) { ARM_COMPUTE_ERROR_VAR("Can't get PMU counter value: %d", errno); } @@ -103,4 +103,4 @@ T PMU::get_value() const } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_PMU */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_PMU_H diff --git a/tests/framework/instruments/PMUCounter.cpp b/tests/framework/instruments/PMUCounter.cpp index 18821b5d6f7..5087374ecf2 100644 --- a/tests/framework/instruments/PMUCounter.cpp +++ b/tests/framework/instruments/PMUCounter.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -46,7 +46,7 @@ void PMUCounter::stop() { _cycles = _pmu_cycles.get_value(); } - catch(const std::runtime_error &) + catch (const std::runtime_error &) { _cycles = 0; } @@ -55,7 +55,7 @@ void PMUCounter::stop() { _instructions = _pmu_instructions.get_value(); } - catch(const std::runtime_error &) + catch (const std::runtime_error &) { _instructions = 0; } @@ -63,10 +63,9 @@ void PMUCounter::stop() Instrument::MeasurementsMap PMUCounter::measurements() const { - return MeasurementsMap - { - { "CPU cycles", Measurement(_cycles / _scale_factor, _unit + "cycles") }, - { "CPU instructions", Measurement(_instructions / _scale_factor, _unit + "instructions") }, + return MeasurementsMap{ + {"CPU cycles", Measurement(_cycles / _scale_factor, _unit + "cycles")}, + {"CPU instructions", Measurement(_instructions / _scale_factor, _unit + "instructions")}, }; } } // namespace framework diff --git a/tests/framework/instruments/PMUCounter.h b/tests/framework/instruments/PMUCounter.h index 7dddbbf6fa9..7500537e2fd 100644 --- a/tests/framework/instruments/PMUCounter.h +++ b/tests/framework/instruments/PMUCounter.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_PMU_COUNTER -#define ARM_COMPUTE_TEST_PMU_COUNTER +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_PMUCOUNTER_H +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_PMUCOUNTER_H #include "Instrument.h" #include "PMU.h" @@ -43,7 +43,7 @@ class PMUCounter : public Instrument */ PMUCounter(ScaleFactor scale_factor) { - switch(scale_factor) + switch (scale_factor) { case ScaleFactor::NONE: _scale_factor = 1; @@ -68,13 +68,13 @@ class PMUCounter : public Instrument MeasurementsMap measurements() const override; private: - PMU _pmu_cycles{ PERF_COUNT_HW_CPU_CYCLES }; - PMU _pmu_instructions{ PERF_COUNT_HW_INSTRUCTIONS }; - long long _cycles{ 0 }; - long long _instructions{ 0 }; + PMU _pmu_cycles{PERF_COUNT_HW_CPU_CYCLES}; + PMU _pmu_instructions{PERF_COUNT_HW_INSTRUCTIONS}; + long long _cycles{0}; + long long _instructions{0}; int _scale_factor{}; }; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_PMU_COUNTER */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_PMUCOUNTER_H diff --git a/tests/framework/instruments/SchedulerTimer.cpp b/tests/framework/instruments/SchedulerTimer.cpp index b7534853518..bb128e6ddb8 100644 --- a/tests/framework/instruments/SchedulerTimer.cpp +++ b/tests/framework/instruments/SchedulerTimer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -23,13 +23,15 @@ */ #include "SchedulerTimer.h" -#include "Instruments.h" -#include "WallClockTimer.h" #include "arm_compute/core/CPP/ICPPKernel.h" #include "arm_compute/graph/DataLayerVisitor.h" #include "arm_compute/graph/INode.h" + #include "support/Cast.h" +#include "Instruments.h" +#include "WallClockTimer.h" + namespace arm_compute { namespace test @@ -37,9 +39,9 @@ namespace test namespace framework { template -std::string SchedulerClock::id() const +std::string SchedulerClock::id() const { - if(output_timestamps) + if (output_timestamps) { return "SchedulerTimestamps"; } @@ -49,14 +51,15 @@ std::string SchedulerClock::id() const } } -template +template class Interceptor final : public IScheduler { public: /** Default constructor. */ Interceptor(std::list::kernel_info> &kernels, - std::map &layers, IScheduler &real_scheduler, - ScaleFactor scale_factor) + std::map &layers, + IScheduler &real_scheduler, + ScaleFactor scale_factor) : _kernels(kernels), _layer_data_map(layers), _real_scheduler(real_scheduler), _timer(scale_factor), _prefix() { } @@ -129,10 +132,10 @@ class Interceptor final : public IScheduler private: std::list::kernel_info> &_kernels; - std::map &_layer_data_map; - IScheduler &_real_scheduler; - WallClock _timer; - std::string _prefix; + std::map &_layer_data_map; + IScheduler &_real_scheduler; + WallClock _timer; + std::string _prefix; }; template @@ -148,30 +151,31 @@ SchedulerClock::SchedulerClock(ScaleFactor scale_factor) _interceptor(nullptr), _scheduler_users() { - if(instruments_info != nullptr) + if (instruments_info != nullptr) { _scheduler_users = instruments_info->_scheduler_users; } } template -void SchedulerClock::test_start() +void SchedulerClock::test_start() { #ifdef ARM_COMPUTE_GRAPH_ENABLED // Start intercepting tasks: ARM_COMPUTE_ERROR_ON(_real_graph_function != nullptr); _real_graph_function = graph::TaskExecutor::get().execute_function; - auto task_interceptor = [this](graph::ExecutionTask & task) + auto task_interceptor = [this](graph::ExecutionTask &task) { Interceptor *scheduler = nullptr; - if(dynamic_cast *>(this->_interceptor.get()) != nullptr) + if (dynamic_cast *>(this->_interceptor.get()) != nullptr) { - scheduler = arm_compute::utils::cast::polymorphic_downcast *>(_interceptor.get()); - if(task.node != nullptr && !task.node->name().empty()) + scheduler = + arm_compute::utils::cast::polymorphic_downcast *>(_interceptor.get()); + if (task.node != nullptr && !task.node->name().empty()) { scheduler->set_prefix(task.node->name() + "/"); - if(_layer_data_map.find(task.node->name()) == _layer_data_map.end()) + if (_layer_data_map.find(task.node->name()) == _layer_data_map.end()) { arm_compute::graph::DataLayerVisitor dlv = {}; task.node->accept(dlv); @@ -186,7 +190,7 @@ void SchedulerClock::test_start() this->_real_graph_function(task); - if(scheduler != nullptr) + if (scheduler != nullptr) { scheduler->set_prefix(""); } @@ -196,10 +200,11 @@ void SchedulerClock::test_start() ARM_COMPUTE_ERROR_ON(_real_scheduler != nullptr); _real_scheduler_type = Scheduler::get_type(); //Note: We can't currently replace a custom scheduler - if(_real_scheduler_type != Scheduler::Type::CUSTOM) + if (_real_scheduler_type != Scheduler::Type::CUSTOM) { _real_scheduler = &Scheduler::get(); - _interceptor = std::make_shared>(_kernels, _layer_data_map, *_real_scheduler, _scale_factor); + _interceptor = std::make_shared>(_kernels, _layer_data_map, *_real_scheduler, + _scale_factor); Scheduler::set(std::static_pointer_cast(_interceptor)); #ifdef ARM_COMPUTE_GRAPH_ENABLED graph::TaskExecutor::get().execute_function = task_interceptor; @@ -208,24 +213,25 @@ void SchedulerClock::test_start() // Create an interceptor for each scheduler // TODO(COMPID-2638) : Allow multiple schedulers, now it assumes the same scheduler is used. std::for_each(std::begin(_scheduler_users), std::end(_scheduler_users), - [&](ISchedulerUser * user) - { - if(user != nullptr && user->scheduler() != nullptr) - { - user->intercept_scheduler(std::make_unique>(_kernels, _layer_data_map, *user->scheduler(), _scale_factor)); - } - }); + [&](ISchedulerUser *user) + { + if (user != nullptr && user->scheduler() != nullptr) + { + user->intercept_scheduler(std::make_unique>( + _kernels, _layer_data_map, *user->scheduler(), _scale_factor)); + } + }); } } template -void SchedulerClock::start() +void SchedulerClock::start() { _kernels.clear(); } template -void SchedulerClock::test_stop() +void SchedulerClock::test_stop() { // Restore real scheduler Scheduler::set(_real_scheduler_type); @@ -238,33 +244,33 @@ void SchedulerClock::test_stop() // Restore schedulers std::for_each(std::begin(_scheduler_users), std::end(_scheduler_users), - [&](ISchedulerUser * user) - { - if(user != nullptr) - { - user->restore_scheduler(); - } - }); + [&](ISchedulerUser *user) + { + if (user != nullptr) + { + user->restore_scheduler(); + } + }); } -template +template Instrument::MeasurementsMap SchedulerClock::measurements() const { MeasurementsMap measurements; unsigned int kernel_number = 0; - for(auto kernel : _kernels) + for (auto kernel : _kernels) { std::string name = kernel.prefix + kernel.name + " #" + support::cpp11::to_string(kernel_number++); - if(output_timestamps) + if (output_timestamps) { ARM_COMPUTE_ERROR_ON(kernel.measurements.size() != 2); - for(auto const &m : kernel.measurements) + for (auto const &m : kernel.measurements) { - if(m.first.find("[start]") != std::string::npos) + if (m.first.find("[start]") != std::string::npos) { measurements.emplace("[start]" + name, m.second); } - else if(m.first.find("[end]") != std::string::npos) + else if (m.first.find("[end]") != std::string::npos) { measurements.emplace("[end]" + name, m.second); } @@ -284,27 +290,28 @@ Instrument::MeasurementsMap SchedulerClock::measurements() co } template -std::string SchedulerClock::instrument_header() const +std::string SchedulerClock::instrument_header() const { - std::string output{ "" }; + std::string output{""}; output += R"("layer_data" : {)"; - for(auto i_it = _layer_data_map.cbegin(), i_end = _layer_data_map.cend(); i_it != i_end; ++i_it) + for (auto i_it = _layer_data_map.cbegin(), i_end = _layer_data_map.cend(); i_it != i_end; ++i_it) { output += "\"" + i_it->first + "\" : {"; - if(i_it->second.size() != 0) + if (i_it->second.size() != 0) { // Print for each entry in layer - for(auto entry_it = i_it->second.cbegin(), entry_end = i_it->second.cend(); entry_it != entry_end; ++entry_it) + for (auto entry_it = i_it->second.cbegin(), entry_end = i_it->second.cend(); entry_it != entry_end; + ++entry_it) { output += "\"" + entry_it->first + "\" : \"" + entry_it->second + "\""; - if(std::next(entry_it) != entry_end) + if (std::next(entry_it) != entry_end) { output += ","; } } } output += "}"; - if(std::next(i_it) != i_end) + if (std::next(i_it) != i_end) { output += ","; } diff --git a/tests/framework/instruments/SchedulerTimer.h b/tests/framework/instruments/SchedulerTimer.h index c437f2717ce..49737369027 100644 --- a/tests/framework/instruments/SchedulerTimer.h +++ b/tests/framework/instruments/SchedulerTimer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019,2021 Arm Limited. + * Copyright (c) 2017-2019,2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_SCHEDULER_TIMER -#define ARM_COMPUTE_TEST_SCHEDULER_TIMER +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_SCHEDULERTIMER_H +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_SCHEDULERTIMER_H -#include "Instrument.h" #include "arm_compute/graph/Workload.h" #include "arm_compute/runtime/Scheduler.h" +#include "Instrument.h" #include #include #include @@ -97,10 +97,10 @@ class SchedulerClock : public Instrument }; private: - std::list _kernels; + std::list _kernels; std::map _layer_data_map; - IScheduler *_real_scheduler; - Scheduler::Type _real_scheduler_type; + IScheduler *_real_scheduler; + Scheduler::Type _real_scheduler_type; #ifdef ARM_COMPUTE_GRAPH_ENABLED std::function _real_graph_function; #endif /* ARM_COMPUTE_GRAPH_ENABLED */ @@ -115,4 +115,4 @@ using SchedulerTimestamps = SchedulerClock; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_SCHEDULER_TIMER */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_SCHEDULERTIMER_H diff --git a/tests/framework/instruments/WallClockTimer.cpp b/tests/framework/instruments/WallClockTimer.cpp index 763fb9ab27e..8f0fdc496b8 100644 --- a/tests/framework/instruments/WallClockTimer.cpp +++ b/tests/framework/instruments/WallClockTimer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -33,9 +33,9 @@ namespace test namespace framework { template -std::string WallClock::id() const +std::string WallClock::id() const { - if(output_timestamps) + if (output_timestamps) { return "Wall clock timestamps"; } @@ -46,21 +46,20 @@ std::string WallClock::id() const } template -void WallClock::start() +void WallClock::start() { #if defined(BARE_METAL) uint64_t tmp; uint64_t retval; - __asm __volatile( - "mrs %[tmp], pmcr_el0\n" - "orr %[tmp], %[tmp], #1\n" - "msr pmcr_el0, %[tmp]\n" - "mrs %[tmp], pmcntenset_el0\n" - "orr %[tmp], %[tmp], #1<<31\n" - "msr pmcntenset_el0, %[tmp]\n" - "mrs %[retval], pmccntr_el0\n" - : [tmp] "=r"(tmp), [retval] "=r"(retval)); + __asm __volatile("mrs %[tmp], pmcr_el0\n" + "orr %[tmp], %[tmp], #1\n" + "msr pmcr_el0, %[tmp]\n" + "mrs %[tmp], pmcntenset_el0\n" + "orr %[tmp], %[tmp], #1<<31\n" + "msr pmcntenset_el0, %[tmp]\n" + "mrs %[retval], pmccntr_el0\n" + : [tmp] "=r"(tmp), [retval] "=r"(retval)); _start = retval; #else // !defined(BARE_METAL) @@ -69,37 +68,41 @@ void WallClock::start() } template -void WallClock::stop() +void WallClock::stop() { #if defined(BARE_METAL) uint64_t tmp; uint64_t retval; - __asm __volatile( - "mrs %[retval], pmccntr_el0\n" - "mov %[tmp], #0x3f\n" - "orr %[tmp], %[tmp], #1<<31\n" - "msr pmcntenclr_el0, %[tmp]\n" - : [tmp] "=r"(tmp), [retval] "=r"(retval)); + __asm __volatile("mrs %[retval], pmccntr_el0\n" + "mov %[tmp], #0x3f\n" + "orr %[tmp], %[tmp], #1<<31\n" + "msr pmcntenclr_el0, %[tmp]\n" + : [tmp] "=r"(tmp), [retval] "=r"(retval)); _stop = retval; #else // !defined(BARE_METAL) - _stop = std::chrono::system_clock::now(); + _stop = std::chrono::system_clock::now(); #endif // defined(BARE_METAL) } -template +template Instrument::MeasurementsMap WallClock::measurements() const { MeasurementsMap measurements; - if(output_timestamps) + if (output_timestamps) { #if defined(BARE_METAL) - measurements.emplace("[start]Wall clock time", Measurement(_start / static_cast(_scale_factor), _unit)); + measurements.emplace("[start]Wall clock time", + Measurement(_start / static_cast(_scale_factor), _unit)); measurements.emplace("[end]Wall clock time", Measurement(_stop / static_cast(_scale_factor), _unit)); #else // !defined(BARE_METAL) - measurements.emplace("[start]Wall clock time", Measurement(_start.time_since_epoch().count() / static_cast(1000 * _scale_factor), _unit)); - measurements.emplace("[end]Wall clock time", Measurement(_stop.time_since_epoch().count() / static_cast(1000 * _scale_factor), _unit)); + measurements.emplace( + "[start]Wall clock time", + Measurement(_start.time_since_epoch().count() / static_cast(1000 * _scale_factor), _unit)); + measurements.emplace( + "[end]Wall clock time", + Measurement(_stop.time_since_epoch().count() / static_cast(1000 * _scale_factor), _unit)); #endif // defined(BARE_METAL) } else diff --git a/tests/framework/instruments/WallClockTimer.h b/tests/framework/instruments/WallClockTimer.h index b1d7531f4e0..1e59f81d07d 100644 --- a/tests/framework/instruments/WallClockTimer.h +++ b/tests/framework/instruments/WallClockTimer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_WALL_CLOCK_TIMER -#define ARM_COMPUTE_TEST_WALL_CLOCK_TIMER +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_WALLCLOCKTIMER_H +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_WALLCLOCKTIMER_H #include "Instrument.h" - #include namespace arm_compute @@ -45,7 +44,7 @@ class WallClock : public Instrument */ WallClock(ScaleFactor scale_factor) { - switch(scale_factor) + switch (scale_factor) { case ScaleFactor::NONE: _scale_factor = 1.f; @@ -71,13 +70,13 @@ class WallClock : public Instrument private: #if defined(BARE_METAL) - uint64_t _start {}; + uint64_t _start{}; uint64_t _stop{}; #else // !defined(BARE_METAL) - std::chrono::system_clock::time_point _start {}; + std::chrono::system_clock::time_point _start{}; std::chrono::system_clock::time_point _stop{}; #endif // defined(BARE_METAL) - float _scale_factor {}; + float _scale_factor{}; }; using WallClockTimer = WallClock; @@ -85,4 +84,4 @@ using WallClockTimestamps = WallClock; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_WALL_CLOCK_TIMER */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_WALLCLOCKTIMER_H diff --git a/tests/framework/instruments/hwc.hpp b/tests/framework/instruments/hwc.hpp index 5d12a402173..b3b7cc8fb72 100644 --- a/tests/framework/instruments/hwc.hpp +++ b/tests/framework/instruments/hwc.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Arm Limited. + * Copyright (c) 2017-2018, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_HWC -#define ARM_COMPUTE_TEST_HWC +#ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_HWC_HPP +#define ACL_TESTS_FRAMEWORK_INSTRUMENTS_HWC_HPP #include "hwc_names.hpp" - #include #include #include @@ -58,7 +57,7 @@ union uk_header }; #define BASE_GPU_NUM_TEXTURE_FEATURES_REGISTERS 3 -#define BASE_MAX_COHERENT_GROUPS 16 +#define BASE_MAX_COHERENT_GROUPS 16 struct mali_base_gpu_core_props { @@ -164,33 +163,33 @@ struct kbase_uk_gpuprops mali_base_gpu_props props; }; -#define KBASE_GPUPROP_VALUE_SIZE_U8 (0x0) +#define KBASE_GPUPROP_VALUE_SIZE_U8 (0x0) #define KBASE_GPUPROP_VALUE_SIZE_U16 (0x1) #define KBASE_GPUPROP_VALUE_SIZE_U32 (0x2) #define KBASE_GPUPROP_VALUE_SIZE_U64 (0x3) -#define KBASE_GPUPROP_PRODUCT_ID 1 +#define KBASE_GPUPROP_PRODUCT_ID 1 #define KBASE_GPUPROP_MINOR_REVISION 3 #define KBASE_GPUPROP_MAJOR_REVISION 4 -#define KBASE_GPUPROP_COHERENCY_NUM_GROUPS 61 +#define KBASE_GPUPROP_COHERENCY_NUM_GROUPS 61 #define KBASE_GPUPROP_COHERENCY_NUM_CORE_GROUPS 62 -#define KBASE_GPUPROP_COHERENCY_GROUP_0 64 -#define KBASE_GPUPROP_COHERENCY_GROUP_1 65 -#define KBASE_GPUPROP_COHERENCY_GROUP_2 66 -#define KBASE_GPUPROP_COHERENCY_GROUP_3 67 -#define KBASE_GPUPROP_COHERENCY_GROUP_4 68 -#define KBASE_GPUPROP_COHERENCY_GROUP_5 69 -#define KBASE_GPUPROP_COHERENCY_GROUP_6 70 -#define KBASE_GPUPROP_COHERENCY_GROUP_7 71 -#define KBASE_GPUPROP_COHERENCY_GROUP_8 72 -#define KBASE_GPUPROP_COHERENCY_GROUP_9 73 -#define KBASE_GPUPROP_COHERENCY_GROUP_10 74 -#define KBASE_GPUPROP_COHERENCY_GROUP_11 75 -#define KBASE_GPUPROP_COHERENCY_GROUP_12 76 -#define KBASE_GPUPROP_COHERENCY_GROUP_13 77 -#define KBASE_GPUPROP_COHERENCY_GROUP_14 78 -#define KBASE_GPUPROP_COHERENCY_GROUP_15 79 +#define KBASE_GPUPROP_COHERENCY_GROUP_0 64 +#define KBASE_GPUPROP_COHERENCY_GROUP_1 65 +#define KBASE_GPUPROP_COHERENCY_GROUP_2 66 +#define KBASE_GPUPROP_COHERENCY_GROUP_3 67 +#define KBASE_GPUPROP_COHERENCY_GROUP_4 68 +#define KBASE_GPUPROP_COHERENCY_GROUP_5 69 +#define KBASE_GPUPROP_COHERENCY_GROUP_6 70 +#define KBASE_GPUPROP_COHERENCY_GROUP_7 71 +#define KBASE_GPUPROP_COHERENCY_GROUP_8 72 +#define KBASE_GPUPROP_COHERENCY_GROUP_9 73 +#define KBASE_GPUPROP_COHERENCY_GROUP_10 74 +#define KBASE_GPUPROP_COHERENCY_GROUP_11 75 +#define KBASE_GPUPROP_COHERENCY_GROUP_12 76 +#define KBASE_GPUPROP_COHERENCY_GROUP_13 77 +#define KBASE_GPUPROP_COHERENCY_GROUP_14 78 +#define KBASE_GPUPROP_COHERENCY_GROUP_15 79 struct gpu_props { @@ -207,17 +206,14 @@ static const struct uint32_t type; size_t offset; int size; -} gpu_property_mapping[] = -{ -#define PROP(name, member) \ - { \ - KBASE_GPUPROP_##name, offsetof(struct gpu_props, member), \ - sizeof(((struct gpu_props *)0)->member) \ +} gpu_property_mapping[] = { +#define PROP(name, member) \ + { \ + KBASE_GPUPROP_##name, offsetof(struct gpu_props, member), sizeof(((struct gpu_props *)0)->member) \ } -#define PROP2(name, member, off) \ - { \ - KBASE_GPUPROP_##name, offsetof(struct gpu_props, member) + off, \ - sizeof(((struct gpu_props *)0)->member) \ +#define PROP2(name, member, off) \ + { \ + KBASE_GPUPROP_##name, offsetof(struct gpu_props, member) + off, sizeof(((struct gpu_props *)0)->member) \ } PROP(PRODUCT_ID, product_id), PROP(MINOR_REVISION, minor_revision), @@ -242,8 +238,7 @@ static const struct PROP2(COHERENCY_GROUP_15, core_mask, 15), #undef PROP #undef PROP2 - { 0, 0, 0 } -}; + {0, 0, 0}}; struct kbase_hwcnt_reader_metadata { @@ -289,7 +284,7 @@ struct kbase_ioctl_get_gpuprops uint32_t flags; }; -#define KBASE_IOCTL_TYPE 0x80 +#define KBASE_IOCTL_TYPE 0x80 #define KBASE_IOCTL_GET_GPUPROPS MALI_IOW(KBASE_IOCTL_TYPE, 3, struct kbase_ioctl_get_gpuprops) /** IOCTL parameters to set flags */ @@ -373,7 +368,7 @@ enum /** Write a single byte into the pipe to interrupt the reader thread */ typedef char poll_data_t; -} +} // namespace template static inline int mali_ioctl(int fd, T &arg) @@ -381,9 +376,9 @@ static inline int mali_ioctl(int fd, T &arg) auto *hdr = &arg.header; const int cmd = _IOC(_IOC_READ | _IOC_WRITE, LINUX_UK_BASE_MAGIC, hdr->id, sizeof(T)); - if(ioctl(fd, cmd, &arg)) + if (ioctl(fd, cmd, &arg)) return -1; - if(hdr->ret) + if (hdr->ret) return -1; return 0; @@ -392,4 +387,4 @@ static inline int mali_ioctl(int fd, T &arg) #endif /* DOXYGEN_SKIP_THIS */ -#endif /* ARM_COMPUTE_TEST_HWC */ +#endif // ACL_TESTS_FRAMEWORK_INSTRUMENTS_HWC_HPP diff --git a/tests/framework/instruments/hwc_names.hpp b/tests/framework/instruments/hwc_names.hpp index 766573ac048..babbee653d4 100644 --- a/tests/framework/instruments/hwc_names.hpp +++ b/tests/framework/instruments/hwc_names.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021, 2024 Arm Limited. + * Copyright (c) 2017-2021, 2024-2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -54,2143 +54,396 @@ enum * where no counter exists. */ -static const char *const hardware_counters_mali_t60x[] = -{ +static const char *const hardware_counters_mali_t60x[] = { /* Job Manager */ - "", - "", - "", - "", - "T60x_MESSAGES_SENT", - "T60x_MESSAGES_RECEIVED", - "T60x_GPU_ACTIVE", - "T60x_IRQ_ACTIVE", - "T60x_JS0_JOBS", - "T60x_JS0_TASKS", - "T60x_JS0_ACTIVE", - "", - "T60x_JS0_WAIT_READ", - "T60x_JS0_WAIT_ISSUE", - "T60x_JS0_WAIT_DEPEND", - "T60x_JS0_WAIT_FINISH", - "T60x_JS1_JOBS", - "T60x_JS1_TASKS", - "T60x_JS1_ACTIVE", - "", - "T60x_JS1_WAIT_READ", - "T60x_JS1_WAIT_ISSUE", - "T60x_JS1_WAIT_DEPEND", - "T60x_JS1_WAIT_FINISH", - "T60x_JS2_JOBS", - "T60x_JS2_TASKS", - "T60x_JS2_ACTIVE", - "", - "T60x_JS2_WAIT_READ", - "T60x_JS2_WAIT_ISSUE", - "T60x_JS2_WAIT_DEPEND", - "T60x_JS2_WAIT_FINISH", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "", "T60x_MESSAGES_SENT", "T60x_MESSAGES_RECEIVED", "T60x_GPU_ACTIVE", "T60x_IRQ_ACTIVE", + "T60x_JS0_JOBS", "T60x_JS0_TASKS", "T60x_JS0_ACTIVE", "", "T60x_JS0_WAIT_READ", "T60x_JS0_WAIT_ISSUE", + "T60x_JS0_WAIT_DEPEND", "T60x_JS0_WAIT_FINISH", "T60x_JS1_JOBS", "T60x_JS1_TASKS", "T60x_JS1_ACTIVE", "", + "T60x_JS1_WAIT_READ", "T60x_JS1_WAIT_ISSUE", "T60x_JS1_WAIT_DEPEND", "T60x_JS1_WAIT_FINISH", "T60x_JS2_JOBS", + "T60x_JS2_TASKS", "T60x_JS2_ACTIVE", "", "T60x_JS2_WAIT_READ", "T60x_JS2_WAIT_ISSUE", "T60x_JS2_WAIT_DEPEND", + "T60x_JS2_WAIT_FINISH", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", /*Tiler */ - "", - "", - "", - "T60x_TI_JOBS_PROCESSED", - "T60x_TI_TRIANGLES", - "T60x_TI_QUADS", - "T60x_TI_POLYGONS", - "T60x_TI_POINTS", - "T60x_TI_LINES", - "T60x_TI_VCACHE_HIT", - "T60x_TI_VCACHE_MISS", - "T60x_TI_FRONT_FACING", - "T60x_TI_BACK_FACING", - "T60x_TI_PRIM_VISIBLE", - "T60x_TI_PRIM_CULLED", - "T60x_TI_PRIM_CLIPPED", - "T60x_TI_LEVEL0", - "T60x_TI_LEVEL1", - "T60x_TI_LEVEL2", - "T60x_TI_LEVEL3", - "T60x_TI_LEVEL4", - "T60x_TI_LEVEL5", - "T60x_TI_LEVEL6", - "T60x_TI_LEVEL7", - "T60x_TI_COMMAND_1", - "T60x_TI_COMMAND_2", - "T60x_TI_COMMAND_3", - "T60x_TI_COMMAND_4", - "T60x_TI_COMMAND_4_7", - "T60x_TI_COMMAND_8_15", - "T60x_TI_COMMAND_16_63", - "T60x_TI_COMMAND_64", - "T60x_TI_COMPRESS_IN", - "T60x_TI_COMPRESS_OUT", - "T60x_TI_COMPRESS_FLUSH", - "T60x_TI_TIMESTAMPS", - "T60x_TI_PCACHE_HIT", - "T60x_TI_PCACHE_MISS", - "T60x_TI_PCACHE_LINE", - "T60x_TI_PCACHE_STALL", - "T60x_TI_WRBUF_HIT", - "T60x_TI_WRBUF_MISS", - "T60x_TI_WRBUF_LINE", - "T60x_TI_WRBUF_PARTIAL", - "T60x_TI_WRBUF_STALL", - "T60x_TI_ACTIVE", - "T60x_TI_LOADING_DESC", - "T60x_TI_INDEX_WAIT", - "T60x_TI_INDEX_RANGE_WAIT", - "T60x_TI_VERTEX_WAIT", - "T60x_TI_PCACHE_WAIT", - "T60x_TI_WRBUF_WAIT", - "T60x_TI_BUS_READ", - "T60x_TI_BUS_WRITE", - "", - "", - "", - "", - "", - "T60x_TI_UTLB_STALL", - "T60x_TI_UTLB_REPLAY_MISS", - "T60x_TI_UTLB_REPLAY_FULL", - "T60x_TI_UTLB_NEW_MISS", - "T60x_TI_UTLB_HIT", + "", "", "", "T60x_TI_JOBS_PROCESSED", "T60x_TI_TRIANGLES", "T60x_TI_QUADS", "T60x_TI_POLYGONS", "T60x_TI_POINTS", + "T60x_TI_LINES", "T60x_TI_VCACHE_HIT", "T60x_TI_VCACHE_MISS", "T60x_TI_FRONT_FACING", "T60x_TI_BACK_FACING", + "T60x_TI_PRIM_VISIBLE", "T60x_TI_PRIM_CULLED", "T60x_TI_PRIM_CLIPPED", "T60x_TI_LEVEL0", "T60x_TI_LEVEL1", + "T60x_TI_LEVEL2", "T60x_TI_LEVEL3", "T60x_TI_LEVEL4", "T60x_TI_LEVEL5", "T60x_TI_LEVEL6", "T60x_TI_LEVEL7", + "T60x_TI_COMMAND_1", "T60x_TI_COMMAND_2", "T60x_TI_COMMAND_3", "T60x_TI_COMMAND_4", "T60x_TI_COMMAND_4_7", + "T60x_TI_COMMAND_8_15", "T60x_TI_COMMAND_16_63", "T60x_TI_COMMAND_64", "T60x_TI_COMPRESS_IN", + "T60x_TI_COMPRESS_OUT", "T60x_TI_COMPRESS_FLUSH", "T60x_TI_TIMESTAMPS", "T60x_TI_PCACHE_HIT", "T60x_TI_PCACHE_MISS", + "T60x_TI_PCACHE_LINE", "T60x_TI_PCACHE_STALL", "T60x_TI_WRBUF_HIT", "T60x_TI_WRBUF_MISS", "T60x_TI_WRBUF_LINE", + "T60x_TI_WRBUF_PARTIAL", "T60x_TI_WRBUF_STALL", "T60x_TI_ACTIVE", "T60x_TI_LOADING_DESC", "T60x_TI_INDEX_WAIT", + "T60x_TI_INDEX_RANGE_WAIT", "T60x_TI_VERTEX_WAIT", "T60x_TI_PCACHE_WAIT", "T60x_TI_WRBUF_WAIT", "T60x_TI_BUS_READ", + "T60x_TI_BUS_WRITE", "", "", "", "", "", "T60x_TI_UTLB_STALL", "T60x_TI_UTLB_REPLAY_MISS", + "T60x_TI_UTLB_REPLAY_FULL", "T60x_TI_UTLB_NEW_MISS", "T60x_TI_UTLB_HIT", /* Shader Core */ - "", - "", - "", - "", - "T60x_FRAG_ACTIVE", - "T60x_FRAG_PRIMITIVES", - "T60x_FRAG_PRIMITIVES_DROPPED", - "T60x_FRAG_CYCLES_DESC", - "T60x_FRAG_CYCLES_PLR", - "T60x_FRAG_CYCLES_VERT", - "T60x_FRAG_CYCLES_TRISETUP", - "T60x_FRAG_CYCLES_RAST", - "T60x_FRAG_THREADS", - "T60x_FRAG_DUMMY_THREADS", - "T60x_FRAG_QUADS_RAST", - "T60x_FRAG_QUADS_EZS_TEST", - "T60x_FRAG_QUADS_EZS_KILLED", - "T60x_FRAG_THREADS_LZS_TEST", - "T60x_FRAG_THREADS_LZS_KILLED", - "T60x_FRAG_CYCLES_NO_TILE", - "T60x_FRAG_NUM_TILES", - "T60x_FRAG_TRANS_ELIM", - "T60x_COMPUTE_ACTIVE", - "T60x_COMPUTE_TASKS", - "T60x_COMPUTE_THREADS", - "T60x_COMPUTE_CYCLES_DESC", - "T60x_TRIPIPE_ACTIVE", - "T60x_ARITH_WORDS", - "T60x_ARITH_CYCLES_REG", - "T60x_ARITH_CYCLES_L0", - "T60x_ARITH_FRAG_DEPEND", - "T60x_LS_WORDS", - "T60x_LS_ISSUES", - "T60x_LS_RESTARTS", - "T60x_LS_REISSUES_MISS", - "T60x_LS_REISSUES_VD", - "T60x_LS_REISSUE_ATTRIB_MISS", - "T60x_LS_NO_WB", - "T60x_TEX_WORDS", - "T60x_TEX_BUBBLES", - "T60x_TEX_WORDS_L0", - "T60x_TEX_WORDS_DESC", - "T60x_TEX_ISSUES", - "T60x_TEX_RECIRC_FMISS", - "T60x_TEX_RECIRC_DESC", - "T60x_TEX_RECIRC_MULTI", - "T60x_TEX_RECIRC_PMISS", - "T60x_TEX_RECIRC_CONF", - "T60x_LSC_READ_HITS", - "T60x_LSC_READ_MISSES", - "T60x_LSC_WRITE_HITS", - "T60x_LSC_WRITE_MISSES", - "T60x_LSC_ATOMIC_HITS", - "T60x_LSC_ATOMIC_MISSES", - "T60x_LSC_LINE_FETCHES", - "T60x_LSC_DIRTY_LINE", - "T60x_LSC_SNOOPS", - "T60x_AXI_TLB_STALL", - "T60x_AXI_TLB_MISS", - "T60x_AXI_TLB_TRANSACTION", - "T60x_LS_TLB_MISS", - "T60x_LS_TLB_HIT", - "T60x_AXI_BEATS_READ", - "T60x_AXI_BEATS_WRITTEN", + "", "", "", "", "T60x_FRAG_ACTIVE", "T60x_FRAG_PRIMITIVES", "T60x_FRAG_PRIMITIVES_DROPPED", "T60x_FRAG_CYCLES_DESC", + "T60x_FRAG_CYCLES_PLR", "T60x_FRAG_CYCLES_VERT", "T60x_FRAG_CYCLES_TRISETUP", "T60x_FRAG_CYCLES_RAST", + "T60x_FRAG_THREADS", "T60x_FRAG_DUMMY_THREADS", "T60x_FRAG_QUADS_RAST", "T60x_FRAG_QUADS_EZS_TEST", + "T60x_FRAG_QUADS_EZS_KILLED", "T60x_FRAG_THREADS_LZS_TEST", "T60x_FRAG_THREADS_LZS_KILLED", + "T60x_FRAG_CYCLES_NO_TILE", "T60x_FRAG_NUM_TILES", "T60x_FRAG_TRANS_ELIM", "T60x_COMPUTE_ACTIVE", + "T60x_COMPUTE_TASKS", "T60x_COMPUTE_THREADS", "T60x_COMPUTE_CYCLES_DESC", "T60x_TRIPIPE_ACTIVE", "T60x_ARITH_WORDS", + "T60x_ARITH_CYCLES_REG", "T60x_ARITH_CYCLES_L0", "T60x_ARITH_FRAG_DEPEND", "T60x_LS_WORDS", "T60x_LS_ISSUES", + "T60x_LS_RESTARTS", "T60x_LS_REISSUES_MISS", "T60x_LS_REISSUES_VD", "T60x_LS_REISSUE_ATTRIB_MISS", "T60x_LS_NO_WB", + "T60x_TEX_WORDS", "T60x_TEX_BUBBLES", "T60x_TEX_WORDS_L0", "T60x_TEX_WORDS_DESC", "T60x_TEX_ISSUES", + "T60x_TEX_RECIRC_FMISS", "T60x_TEX_RECIRC_DESC", "T60x_TEX_RECIRC_MULTI", "T60x_TEX_RECIRC_PMISS", + "T60x_TEX_RECIRC_CONF", "T60x_LSC_READ_HITS", "T60x_LSC_READ_MISSES", "T60x_LSC_WRITE_HITS", + "T60x_LSC_WRITE_MISSES", "T60x_LSC_ATOMIC_HITS", "T60x_LSC_ATOMIC_MISSES", "T60x_LSC_LINE_FETCHES", + "T60x_LSC_DIRTY_LINE", "T60x_LSC_SNOOPS", "T60x_AXI_TLB_STALL", "T60x_AXI_TLB_MISS", "T60x_AXI_TLB_TRANSACTION", + "T60x_LS_TLB_MISS", "T60x_LS_TLB_HIT", "T60x_AXI_BEATS_READ", "T60x_AXI_BEATS_WRITTEN", /*L2 and MMU */ - "", - "", - "", - "", - "T60x_MMU_HIT", - "T60x_MMU_NEW_MISS", - "T60x_MMU_REPLAY_FULL", - "T60x_MMU_REPLAY_MISS", - "T60x_MMU_TABLE_WALK", - "", - "", - "", - "", - "", - "", - "", - "T60x_UTLB_HIT", - "T60x_UTLB_NEW_MISS", - "T60x_UTLB_REPLAY_FULL", - "T60x_UTLB_REPLAY_MISS", - "T60x_UTLB_STALL", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "T60x_L2_EXT_WRITE_BEATS", - "T60x_L2_EXT_READ_BEATS", - "T60x_L2_ANY_LOOKUP", - "T60x_L2_READ_LOOKUP", - "T60x_L2_SREAD_LOOKUP", - "T60x_L2_READ_REPLAY", - "T60x_L2_READ_SNOOP", - "T60x_L2_READ_HIT", - "T60x_L2_CLEAN_MISS", - "T60x_L2_WRITE_LOOKUP", - "T60x_L2_SWRITE_LOOKUP", - "T60x_L2_WRITE_REPLAY", - "T60x_L2_WRITE_SNOOP", - "T60x_L2_WRITE_HIT", - "T60x_L2_EXT_READ_FULL", - "T60x_L2_EXT_READ_HALF", - "T60x_L2_EXT_WRITE_FULL", - "T60x_L2_EXT_WRITE_HALF", - "T60x_L2_EXT_READ", - "T60x_L2_EXT_READ_LINE", - "T60x_L2_EXT_WRITE", - "T60x_L2_EXT_WRITE_LINE", - "T60x_L2_EXT_WRITE_SMALL", - "T60x_L2_EXT_BARRIER", - "T60x_L2_EXT_AR_STALL", - "T60x_L2_EXT_R_BUF_FULL", - "T60x_L2_EXT_RD_BUF_FULL", - "T60x_L2_EXT_R_RAW", - "T60x_L2_EXT_W_STALL", - "T60x_L2_EXT_W_BUF_FULL", - "T60x_L2_EXT_R_W_HAZARD", - "T60x_L2_TAG_HAZARD", - "T60x_L2_SNOOP_FULL", - "T60x_L2_REPLAY_FULL" -}; -static const char *const hardware_counters_mali_t62x[] = -{ + "", "", "", "", "T60x_MMU_HIT", "T60x_MMU_NEW_MISS", "T60x_MMU_REPLAY_FULL", "T60x_MMU_REPLAY_MISS", + "T60x_MMU_TABLE_WALK", "", "", "", "", "", "", "", "T60x_UTLB_HIT", "T60x_UTLB_NEW_MISS", "T60x_UTLB_REPLAY_FULL", + "T60x_UTLB_REPLAY_MISS", "T60x_UTLB_STALL", "", "", "", "", "", "", "", "", "", "T60x_L2_EXT_WRITE_BEATS", + "T60x_L2_EXT_READ_BEATS", "T60x_L2_ANY_LOOKUP", "T60x_L2_READ_LOOKUP", "T60x_L2_SREAD_LOOKUP", + "T60x_L2_READ_REPLAY", "T60x_L2_READ_SNOOP", "T60x_L2_READ_HIT", "T60x_L2_CLEAN_MISS", "T60x_L2_WRITE_LOOKUP", + "T60x_L2_SWRITE_LOOKUP", "T60x_L2_WRITE_REPLAY", "T60x_L2_WRITE_SNOOP", "T60x_L2_WRITE_HIT", + "T60x_L2_EXT_READ_FULL", "T60x_L2_EXT_READ_HALF", "T60x_L2_EXT_WRITE_FULL", "T60x_L2_EXT_WRITE_HALF", + "T60x_L2_EXT_READ", "T60x_L2_EXT_READ_LINE", "T60x_L2_EXT_WRITE", "T60x_L2_EXT_WRITE_LINE", + "T60x_L2_EXT_WRITE_SMALL", "T60x_L2_EXT_BARRIER", "T60x_L2_EXT_AR_STALL", "T60x_L2_EXT_R_BUF_FULL", + "T60x_L2_EXT_RD_BUF_FULL", "T60x_L2_EXT_R_RAW", "T60x_L2_EXT_W_STALL", "T60x_L2_EXT_W_BUF_FULL", + "T60x_L2_EXT_R_W_HAZARD", "T60x_L2_TAG_HAZARD", "T60x_L2_SNOOP_FULL", "T60x_L2_REPLAY_FULL"}; +static const char *const hardware_counters_mali_t62x[] = { /* Job Manager */ - "", - "", - "", - "", - "T62x_MESSAGES_SENT", - "T62x_MESSAGES_RECEIVED", - "T62x_GPU_ACTIVE", - "T62x_IRQ_ACTIVE", - "T62x_JS0_JOBS", - "T62x_JS0_TASKS", - "T62x_JS0_ACTIVE", - "", - "T62x_JS0_WAIT_READ", - "T62x_JS0_WAIT_ISSUE", - "T62x_JS0_WAIT_DEPEND", - "T62x_JS0_WAIT_FINISH", - "T62x_JS1_JOBS", - "T62x_JS1_TASKS", - "T62x_JS1_ACTIVE", - "", - "T62x_JS1_WAIT_READ", - "T62x_JS1_WAIT_ISSUE", - "T62x_JS1_WAIT_DEPEND", - "T62x_JS1_WAIT_FINISH", - "T62x_JS2_JOBS", - "T62x_JS2_TASKS", - "T62x_JS2_ACTIVE", - "", - "T62x_JS2_WAIT_READ", - "T62x_JS2_WAIT_ISSUE", - "T62x_JS2_WAIT_DEPEND", - "T62x_JS2_WAIT_FINISH", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "", "T62x_MESSAGES_SENT", "T62x_MESSAGES_RECEIVED", "T62x_GPU_ACTIVE", "T62x_IRQ_ACTIVE", + "T62x_JS0_JOBS", "T62x_JS0_TASKS", "T62x_JS0_ACTIVE", "", "T62x_JS0_WAIT_READ", "T62x_JS0_WAIT_ISSUE", + "T62x_JS0_WAIT_DEPEND", "T62x_JS0_WAIT_FINISH", "T62x_JS1_JOBS", "T62x_JS1_TASKS", "T62x_JS1_ACTIVE", "", + "T62x_JS1_WAIT_READ", "T62x_JS1_WAIT_ISSUE", "T62x_JS1_WAIT_DEPEND", "T62x_JS1_WAIT_FINISH", "T62x_JS2_JOBS", + "T62x_JS2_TASKS", "T62x_JS2_ACTIVE", "", "T62x_JS2_WAIT_READ", "T62x_JS2_WAIT_ISSUE", "T62x_JS2_WAIT_DEPEND", + "T62x_JS2_WAIT_FINISH", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", /*Tiler */ - "", - "", - "", - "T62x_TI_JOBS_PROCESSED", - "T62x_TI_TRIANGLES", - "T62x_TI_QUADS", - "T62x_TI_POLYGONS", - "T62x_TI_POINTS", - "T62x_TI_LINES", - "T62x_TI_VCACHE_HIT", - "T62x_TI_VCACHE_MISS", - "T62x_TI_FRONT_FACING", - "T62x_TI_BACK_FACING", - "T62x_TI_PRIM_VISIBLE", - "T62x_TI_PRIM_CULLED", - "T62x_TI_PRIM_CLIPPED", - "T62x_TI_LEVEL0", - "T62x_TI_LEVEL1", - "T62x_TI_LEVEL2", - "T62x_TI_LEVEL3", - "T62x_TI_LEVEL4", - "T62x_TI_LEVEL5", - "T62x_TI_LEVEL6", - "T62x_TI_LEVEL7", - "T62x_TI_COMMAND_1", - "T62x_TI_COMMAND_2", - "T62x_TI_COMMAND_3", - "T62x_TI_COMMAND_4", - "T62x_TI_COMMAND_5_7", - "T62x_TI_COMMAND_8_15", - "T62x_TI_COMMAND_16_63", - "T62x_TI_COMMAND_64", - "T62x_TI_COMPRESS_IN", - "T62x_TI_COMPRESS_OUT", - "T62x_TI_COMPRESS_FLUSH", - "T62x_TI_TIMESTAMPS", - "T62x_TI_PCACHE_HIT", - "T62x_TI_PCACHE_MISS", - "T62x_TI_PCACHE_LINE", - "T62x_TI_PCACHE_STALL", - "T62x_TI_WRBUF_HIT", - "T62x_TI_WRBUF_MISS", - "T62x_TI_WRBUF_LINE", - "T62x_TI_WRBUF_PARTIAL", - "T62x_TI_WRBUF_STALL", - "T62x_TI_ACTIVE", - "T62x_TI_LOADING_DESC", - "T62x_TI_INDEX_WAIT", - "T62x_TI_INDEX_RANGE_WAIT", - "T62x_TI_VERTEX_WAIT", - "T62x_TI_PCACHE_WAIT", - "T62x_TI_WRBUF_WAIT", - "T62x_TI_BUS_READ", - "T62x_TI_BUS_WRITE", - "", - "", - "", - "", - "", - "T62x_TI_UTLB_STALL", - "T62x_TI_UTLB_REPLAY_MISS", - "T62x_TI_UTLB_REPLAY_FULL", - "T62x_TI_UTLB_NEW_MISS", - "T62x_TI_UTLB_HIT", + "", "", "", "T62x_TI_JOBS_PROCESSED", "T62x_TI_TRIANGLES", "T62x_TI_QUADS", "T62x_TI_POLYGONS", "T62x_TI_POINTS", + "T62x_TI_LINES", "T62x_TI_VCACHE_HIT", "T62x_TI_VCACHE_MISS", "T62x_TI_FRONT_FACING", "T62x_TI_BACK_FACING", + "T62x_TI_PRIM_VISIBLE", "T62x_TI_PRIM_CULLED", "T62x_TI_PRIM_CLIPPED", "T62x_TI_LEVEL0", "T62x_TI_LEVEL1", + "T62x_TI_LEVEL2", "T62x_TI_LEVEL3", "T62x_TI_LEVEL4", "T62x_TI_LEVEL5", "T62x_TI_LEVEL6", "T62x_TI_LEVEL7", + "T62x_TI_COMMAND_1", "T62x_TI_COMMAND_2", "T62x_TI_COMMAND_3", "T62x_TI_COMMAND_4", "T62x_TI_COMMAND_5_7", + "T62x_TI_COMMAND_8_15", "T62x_TI_COMMAND_16_63", "T62x_TI_COMMAND_64", "T62x_TI_COMPRESS_IN", + "T62x_TI_COMPRESS_OUT", "T62x_TI_COMPRESS_FLUSH", "T62x_TI_TIMESTAMPS", "T62x_TI_PCACHE_HIT", "T62x_TI_PCACHE_MISS", + "T62x_TI_PCACHE_LINE", "T62x_TI_PCACHE_STALL", "T62x_TI_WRBUF_HIT", "T62x_TI_WRBUF_MISS", "T62x_TI_WRBUF_LINE", + "T62x_TI_WRBUF_PARTIAL", "T62x_TI_WRBUF_STALL", "T62x_TI_ACTIVE", "T62x_TI_LOADING_DESC", "T62x_TI_INDEX_WAIT", + "T62x_TI_INDEX_RANGE_WAIT", "T62x_TI_VERTEX_WAIT", "T62x_TI_PCACHE_WAIT", "T62x_TI_WRBUF_WAIT", "T62x_TI_BUS_READ", + "T62x_TI_BUS_WRITE", "", "", "", "", "", "T62x_TI_UTLB_STALL", "T62x_TI_UTLB_REPLAY_MISS", + "T62x_TI_UTLB_REPLAY_FULL", "T62x_TI_UTLB_NEW_MISS", "T62x_TI_UTLB_HIT", /* Shader Core */ - "", - "", - "", - "T62x_SHADER_CORE_ACTIVE", - "T62x_FRAG_ACTIVE", - "T62x_FRAG_PRIMITIVES", - "T62x_FRAG_PRIMITIVES_DROPPED", - "T62x_FRAG_CYCLES_DESC", - "T62x_FRAG_CYCLES_FPKQ_ACTIVE", - "T62x_FRAG_CYCLES_VERT", - "T62x_FRAG_CYCLES_TRISETUP", - "T62x_FRAG_CYCLES_EZS_ACTIVE", - "T62x_FRAG_THREADS", - "T62x_FRAG_DUMMY_THREADS", - "T62x_FRAG_QUADS_RAST", - "T62x_FRAG_QUADS_EZS_TEST", - "T62x_FRAG_QUADS_EZS_KILLED", - "T62x_FRAG_THREADS_LZS_TEST", - "T62x_FRAG_THREADS_LZS_KILLED", - "T62x_FRAG_CYCLES_NO_TILE", - "T62x_FRAG_NUM_TILES", - "T62x_FRAG_TRANS_ELIM", - "T62x_COMPUTE_ACTIVE", - "T62x_COMPUTE_TASKS", - "T62x_COMPUTE_THREADS", - "T62x_COMPUTE_CYCLES_DESC", - "T62x_TRIPIPE_ACTIVE", - "T62x_ARITH_WORDS", - "T62x_ARITH_CYCLES_REG", - "T62x_ARITH_CYCLES_L0", - "T62x_ARITH_FRAG_DEPEND", - "T62x_LS_WORDS", - "T62x_LS_ISSUES", - "T62x_LS_RESTARTS", - "T62x_LS_REISSUES_MISS", - "T62x_LS_REISSUES_VD", - "T62x_LS_REISSUE_ATTRIB_MISS", - "T62x_LS_NO_WB", - "T62x_TEX_WORDS", - "T62x_TEX_BUBBLES", - "T62x_TEX_WORDS_L0", - "T62x_TEX_WORDS_DESC", - "T62x_TEX_ISSUES", - "T62x_TEX_RECIRC_FMISS", - "T62x_TEX_RECIRC_DESC", - "T62x_TEX_RECIRC_MULTI", - "T62x_TEX_RECIRC_PMISS", - "T62x_TEX_RECIRC_CONF", - "T62x_LSC_READ_HITS", - "T62x_LSC_READ_MISSES", - "T62x_LSC_WRITE_HITS", - "T62x_LSC_WRITE_MISSES", - "T62x_LSC_ATOMIC_HITS", - "T62x_LSC_ATOMIC_MISSES", - "T62x_LSC_LINE_FETCHES", - "T62x_LSC_DIRTY_LINE", - "T62x_LSC_SNOOPS", - "T62x_AXI_TLB_STALL", - "T62x_AXI_TLB_MISS", - "T62x_AXI_TLB_TRANSACTION", - "T62x_LS_TLB_MISS", - "T62x_LS_TLB_HIT", - "T62x_AXI_BEATS_READ", + "", "", "", "T62x_SHADER_CORE_ACTIVE", "T62x_FRAG_ACTIVE", "T62x_FRAG_PRIMITIVES", "T62x_FRAG_PRIMITIVES_DROPPED", + "T62x_FRAG_CYCLES_DESC", "T62x_FRAG_CYCLES_FPKQ_ACTIVE", "T62x_FRAG_CYCLES_VERT", "T62x_FRAG_CYCLES_TRISETUP", + "T62x_FRAG_CYCLES_EZS_ACTIVE", "T62x_FRAG_THREADS", "T62x_FRAG_DUMMY_THREADS", "T62x_FRAG_QUADS_RAST", + "T62x_FRAG_QUADS_EZS_TEST", "T62x_FRAG_QUADS_EZS_KILLED", "T62x_FRAG_THREADS_LZS_TEST", + "T62x_FRAG_THREADS_LZS_KILLED", "T62x_FRAG_CYCLES_NO_TILE", "T62x_FRAG_NUM_TILES", "T62x_FRAG_TRANS_ELIM", + "T62x_COMPUTE_ACTIVE", "T62x_COMPUTE_TASKS", "T62x_COMPUTE_THREADS", "T62x_COMPUTE_CYCLES_DESC", + "T62x_TRIPIPE_ACTIVE", "T62x_ARITH_WORDS", "T62x_ARITH_CYCLES_REG", "T62x_ARITH_CYCLES_L0", + "T62x_ARITH_FRAG_DEPEND", "T62x_LS_WORDS", "T62x_LS_ISSUES", "T62x_LS_RESTARTS", "T62x_LS_REISSUES_MISS", + "T62x_LS_REISSUES_VD", "T62x_LS_REISSUE_ATTRIB_MISS", "T62x_LS_NO_WB", "T62x_TEX_WORDS", "T62x_TEX_BUBBLES", + "T62x_TEX_WORDS_L0", "T62x_TEX_WORDS_DESC", "T62x_TEX_ISSUES", "T62x_TEX_RECIRC_FMISS", "T62x_TEX_RECIRC_DESC", + "T62x_TEX_RECIRC_MULTI", "T62x_TEX_RECIRC_PMISS", "T62x_TEX_RECIRC_CONF", "T62x_LSC_READ_HITS", + "T62x_LSC_READ_MISSES", "T62x_LSC_WRITE_HITS", "T62x_LSC_WRITE_MISSES", "T62x_LSC_ATOMIC_HITS", + "T62x_LSC_ATOMIC_MISSES", "T62x_LSC_LINE_FETCHES", "T62x_LSC_DIRTY_LINE", "T62x_LSC_SNOOPS", "T62x_AXI_TLB_STALL", + "T62x_AXI_TLB_MISS", "T62x_AXI_TLB_TRANSACTION", "T62x_LS_TLB_MISS", "T62x_LS_TLB_HIT", "T62x_AXI_BEATS_READ", "T62x_AXI_BEATS_WRITTEN", /*L2 and MMU */ - "", - "", - "", - "", - "T62x_MMU_HIT", - "T62x_MMU_NEW_MISS", - "T62x_MMU_REPLAY_FULL", - "T62x_MMU_REPLAY_MISS", - "T62x_MMU_TABLE_WALK", - "", - "", - "", - "", - "", - "", - "", - "T62x_UTLB_HIT", - "T62x_UTLB_NEW_MISS", - "T62x_UTLB_REPLAY_FULL", - "T62x_UTLB_REPLAY_MISS", - "T62x_UTLB_STALL", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "T62x_L2_EXT_WRITE_BEATS", - "T62x_L2_EXT_READ_BEATS", - "T62x_L2_ANY_LOOKUP", - "T62x_L2_READ_LOOKUP", - "T62x_L2_SREAD_LOOKUP", - "T62x_L2_READ_REPLAY", - "T62x_L2_READ_SNOOP", - "T62x_L2_READ_HIT", - "T62x_L2_CLEAN_MISS", - "T62x_L2_WRITE_LOOKUP", - "T62x_L2_SWRITE_LOOKUP", - "T62x_L2_WRITE_REPLAY", - "T62x_L2_WRITE_SNOOP", - "T62x_L2_WRITE_HIT", - "T62x_L2_EXT_READ_FULL", - "T62x_L2_EXT_READ_HALF", - "T62x_L2_EXT_WRITE_FULL", - "T62x_L2_EXT_WRITE_HALF", - "T62x_L2_EXT_READ", - "T62x_L2_EXT_READ_LINE", - "T62x_L2_EXT_WRITE", - "T62x_L2_EXT_WRITE_LINE", - "T62x_L2_EXT_WRITE_SMALL", - "T62x_L2_EXT_BARRIER", - "T62x_L2_EXT_AR_STALL", - "T62x_L2_EXT_R_BUF_FULL", - "T62x_L2_EXT_RD_BUF_FULL", - "T62x_L2_EXT_R_RAW", - "T62x_L2_EXT_W_STALL", - "T62x_L2_EXT_W_BUF_FULL", - "T62x_L2_EXT_R_W_HAZARD", - "T62x_L2_TAG_HAZARD", - "T62x_L2_SNOOP_FULL", - "T62x_L2_REPLAY_FULL" -}; + "", "", "", "", "T62x_MMU_HIT", "T62x_MMU_NEW_MISS", "T62x_MMU_REPLAY_FULL", "T62x_MMU_REPLAY_MISS", + "T62x_MMU_TABLE_WALK", "", "", "", "", "", "", "", "T62x_UTLB_HIT", "T62x_UTLB_NEW_MISS", "T62x_UTLB_REPLAY_FULL", + "T62x_UTLB_REPLAY_MISS", "T62x_UTLB_STALL", "", "", "", "", "", "", "", "", "", "T62x_L2_EXT_WRITE_BEATS", + "T62x_L2_EXT_READ_BEATS", "T62x_L2_ANY_LOOKUP", "T62x_L2_READ_LOOKUP", "T62x_L2_SREAD_LOOKUP", + "T62x_L2_READ_REPLAY", "T62x_L2_READ_SNOOP", "T62x_L2_READ_HIT", "T62x_L2_CLEAN_MISS", "T62x_L2_WRITE_LOOKUP", + "T62x_L2_SWRITE_LOOKUP", "T62x_L2_WRITE_REPLAY", "T62x_L2_WRITE_SNOOP", "T62x_L2_WRITE_HIT", + "T62x_L2_EXT_READ_FULL", "T62x_L2_EXT_READ_HALF", "T62x_L2_EXT_WRITE_FULL", "T62x_L2_EXT_WRITE_HALF", + "T62x_L2_EXT_READ", "T62x_L2_EXT_READ_LINE", "T62x_L2_EXT_WRITE", "T62x_L2_EXT_WRITE_LINE", + "T62x_L2_EXT_WRITE_SMALL", "T62x_L2_EXT_BARRIER", "T62x_L2_EXT_AR_STALL", "T62x_L2_EXT_R_BUF_FULL", + "T62x_L2_EXT_RD_BUF_FULL", "T62x_L2_EXT_R_RAW", "T62x_L2_EXT_W_STALL", "T62x_L2_EXT_W_BUF_FULL", + "T62x_L2_EXT_R_W_HAZARD", "T62x_L2_TAG_HAZARD", "T62x_L2_SNOOP_FULL", "T62x_L2_REPLAY_FULL"}; -static const char *const hardware_counters_mali_t72x[] = -{ +static const char *const hardware_counters_mali_t72x[] = { /* Job Manager */ - "", - "", - "", - "", - "T72x_GPU_ACTIVE", - "T72x_IRQ_ACTIVE", - "T72x_JS0_JOBS", - "T72x_JS0_TASKS", - "T72x_JS0_ACTIVE", - "T72x_JS1_JOBS", - "T72x_JS1_TASKS", - "T72x_JS1_ACTIVE", - "T72x_JS2_JOBS", - "T72x_JS2_TASKS", - "T72x_JS2_ACTIVE", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "", "T72x_GPU_ACTIVE", "T72x_IRQ_ACTIVE", "T72x_JS0_JOBS", "T72x_JS0_TASKS", "T72x_JS0_ACTIVE", + "T72x_JS1_JOBS", "T72x_JS1_TASKS", "T72x_JS1_ACTIVE", "T72x_JS2_JOBS", "T72x_JS2_TASKS", "T72x_JS2_ACTIVE", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", /*Tiler */ - "", - "", - "", - "T72x_TI_JOBS_PROCESSED", - "T72x_TI_TRIANGLES", - "T72x_TI_QUADS", - "T72x_TI_POLYGONS", - "T72x_TI_POINTS", - "T72x_TI_LINES", - "T72x_TI_FRONT_FACING", - "T72x_TI_BACK_FACING", - "T72x_TI_PRIM_VISIBLE", - "T72x_TI_PRIM_CULLED", - "T72x_TI_PRIM_CLIPPED", - "", - "", - "", - "", - "", - "", - "", - "", - "T72x_TI_ACTIVE", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "T72x_TI_JOBS_PROCESSED", "T72x_TI_TRIANGLES", "T72x_TI_QUADS", "T72x_TI_POLYGONS", "T72x_TI_POINTS", + "T72x_TI_LINES", "T72x_TI_FRONT_FACING", "T72x_TI_BACK_FACING", "T72x_TI_PRIM_VISIBLE", "T72x_TI_PRIM_CULLED", + "T72x_TI_PRIM_CLIPPED", "", "", "", "", "", "", "", "", "T72x_TI_ACTIVE", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", /* Shader Core */ - "", - "", - "", - "", - "T72x_FRAG_ACTIVE", - "T72x_FRAG_PRIMITIVES", - "T72x_FRAG_PRIMITIVES_DROPPED", - "T72x_FRAG_THREADS", - "T72x_FRAG_DUMMY_THREADS", - "T72x_FRAG_QUADS_RAST", - "T72x_FRAG_QUADS_EZS_TEST", - "T72x_FRAG_QUADS_EZS_KILLED", - "T72x_FRAG_THREADS_LZS_TEST", - "T72x_FRAG_THREADS_LZS_KILLED", - "T72x_FRAG_CYCLES_NO_TILE", - "T72x_FRAG_NUM_TILES", - "T72x_FRAG_TRANS_ELIM", - "T72x_COMPUTE_ACTIVE", - "T72x_COMPUTE_TASKS", - "T72x_COMPUTE_THREADS", - "T72x_TRIPIPE_ACTIVE", - "T72x_ARITH_WORDS", - "T72x_ARITH_CYCLES_REG", - "T72x_LS_WORDS", - "T72x_LS_ISSUES", - "T72x_LS_RESTARTS", - "T72x_LS_REISSUES_MISS", - "T72x_TEX_WORDS", - "T72x_TEX_BUBBLES", - "T72x_TEX_ISSUES", - "T72x_LSC_READ_HITS", - "T72x_LSC_READ_MISSES", - "T72x_LSC_WRITE_HITS", - "T72x_LSC_WRITE_MISSES", - "T72x_LSC_ATOMIC_HITS", - "T72x_LSC_ATOMIC_MISSES", - "T72x_LSC_LINE_FETCHES", - "T72x_LSC_DIRTY_LINE", - "T72x_LSC_SNOOPS", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "", "T72x_FRAG_ACTIVE", "T72x_FRAG_PRIMITIVES", "T72x_FRAG_PRIMITIVES_DROPPED", "T72x_FRAG_THREADS", + "T72x_FRAG_DUMMY_THREADS", "T72x_FRAG_QUADS_RAST", "T72x_FRAG_QUADS_EZS_TEST", "T72x_FRAG_QUADS_EZS_KILLED", + "T72x_FRAG_THREADS_LZS_TEST", "T72x_FRAG_THREADS_LZS_KILLED", "T72x_FRAG_CYCLES_NO_TILE", "T72x_FRAG_NUM_TILES", + "T72x_FRAG_TRANS_ELIM", "T72x_COMPUTE_ACTIVE", "T72x_COMPUTE_TASKS", "T72x_COMPUTE_THREADS", "T72x_TRIPIPE_ACTIVE", + "T72x_ARITH_WORDS", "T72x_ARITH_CYCLES_REG", "T72x_LS_WORDS", "T72x_LS_ISSUES", "T72x_LS_RESTARTS", + "T72x_LS_REISSUES_MISS", "T72x_TEX_WORDS", "T72x_TEX_BUBBLES", "T72x_TEX_ISSUES", "T72x_LSC_READ_HITS", + "T72x_LSC_READ_MISSES", "T72x_LSC_WRITE_HITS", "T72x_LSC_WRITE_MISSES", "T72x_LSC_ATOMIC_HITS", + "T72x_LSC_ATOMIC_MISSES", "T72x_LSC_LINE_FETCHES", "T72x_LSC_DIRTY_LINE", "T72x_LSC_SNOOPS", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", /*L2 and MMU */ - "", - "", - "", - "", - "T72x_L2_EXT_WRITE_BEAT", - "T72x_L2_EXT_READ_BEAT", - "T72x_L2_READ_SNOOP", - "T72x_L2_READ_HIT", - "T72x_L2_WRITE_SNOOP", - "T72x_L2_WRITE_HIT", - "T72x_L2_EXT_WRITE_SMALL", - "T72x_L2_EXT_BARRIER", - "T72x_L2_EXT_AR_STALL", - "T72x_L2_EXT_W_STALL", - "T72x_L2_SNOOP_FULL", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" -}; + "", "", "", "", "T72x_L2_EXT_WRITE_BEAT", "T72x_L2_EXT_READ_BEAT", "T72x_L2_READ_SNOOP", "T72x_L2_READ_HIT", + "T72x_L2_WRITE_SNOOP", "T72x_L2_WRITE_HIT", "T72x_L2_EXT_WRITE_SMALL", "T72x_L2_EXT_BARRIER", + "T72x_L2_EXT_AR_STALL", "T72x_L2_EXT_W_STALL", "T72x_L2_SNOOP_FULL", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", ""}; -static const char *const hardware_counters_mali_t76x[] = -{ +static const char *const hardware_counters_mali_t76x[] = { /* Job Manager */ - "", - "", - "", - "", - "T76x_MESSAGES_SENT", - "T76x_MESSAGES_RECEIVED", - "T76x_GPU_ACTIVE", - "T76x_IRQ_ACTIVE", - "T76x_JS0_JOBS", - "T76x_JS0_TASKS", - "T76x_JS0_ACTIVE", - "", - "T76x_JS0_WAIT_READ", - "T76x_JS0_WAIT_ISSUE", - "T76x_JS0_WAIT_DEPEND", - "T76x_JS0_WAIT_FINISH", - "T76x_JS1_JOBS", - "T76x_JS1_TASKS", - "T76x_JS1_ACTIVE", - "", - "T76x_JS1_WAIT_READ", - "T76x_JS1_WAIT_ISSUE", - "T76x_JS1_WAIT_DEPEND", - "T76x_JS1_WAIT_FINISH", - "T76x_JS2_JOBS", - "T76x_JS2_TASKS", - "T76x_JS2_ACTIVE", - "", - "T76x_JS2_WAIT_READ", - "T76x_JS2_WAIT_ISSUE", - "T76x_JS2_WAIT_DEPEND", - "T76x_JS2_WAIT_FINISH", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "", "T76x_MESSAGES_SENT", "T76x_MESSAGES_RECEIVED", "T76x_GPU_ACTIVE", "T76x_IRQ_ACTIVE", + "T76x_JS0_JOBS", "T76x_JS0_TASKS", "T76x_JS0_ACTIVE", "", "T76x_JS0_WAIT_READ", "T76x_JS0_WAIT_ISSUE", + "T76x_JS0_WAIT_DEPEND", "T76x_JS0_WAIT_FINISH", "T76x_JS1_JOBS", "T76x_JS1_TASKS", "T76x_JS1_ACTIVE", "", + "T76x_JS1_WAIT_READ", "T76x_JS1_WAIT_ISSUE", "T76x_JS1_WAIT_DEPEND", "T76x_JS1_WAIT_FINISH", "T76x_JS2_JOBS", + "T76x_JS2_TASKS", "T76x_JS2_ACTIVE", "", "T76x_JS2_WAIT_READ", "T76x_JS2_WAIT_ISSUE", "T76x_JS2_WAIT_DEPEND", + "T76x_JS2_WAIT_FINISH", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", /*Tiler */ - "", - "", - "", - "T76x_TI_JOBS_PROCESSED", - "T76x_TI_TRIANGLES", - "T76x_TI_QUADS", - "T76x_TI_POLYGONS", - "T76x_TI_POINTS", - "T76x_TI_LINES", - "T76x_TI_VCACHE_HIT", - "T76x_TI_VCACHE_MISS", - "T76x_TI_FRONT_FACING", - "T76x_TI_BACK_FACING", - "T76x_TI_PRIM_VISIBLE", - "T76x_TI_PRIM_CULLED", - "T76x_TI_PRIM_CLIPPED", - "T76x_TI_LEVEL0", - "T76x_TI_LEVEL1", - "T76x_TI_LEVEL2", - "T76x_TI_LEVEL3", - "T76x_TI_LEVEL4", - "T76x_TI_LEVEL5", - "T76x_TI_LEVEL6", - "T76x_TI_LEVEL7", - "T76x_TI_COMMAND_1", - "T76x_TI_COMMAND_2", - "T76x_TI_COMMAND_3", - "T76x_TI_COMMAND_4", - "T76x_TI_COMMAND_5_7", - "T76x_TI_COMMAND_8_15", - "T76x_TI_COMMAND_16_63", - "T76x_TI_COMMAND_64", - "T76x_TI_COMPRESS_IN", - "T76x_TI_COMPRESS_OUT", - "T76x_TI_COMPRESS_FLUSH", - "T76x_TI_TIMESTAMPS", - "T76x_TI_PCACHE_HIT", - "T76x_TI_PCACHE_MISS", - "T76x_TI_PCACHE_LINE", - "T76x_TI_PCACHE_STALL", - "T76x_TI_WRBUF_HIT", - "T76x_TI_WRBUF_MISS", - "T76x_TI_WRBUF_LINE", - "T76x_TI_WRBUF_PARTIAL", - "T76x_TI_WRBUF_STALL", - "T76x_TI_ACTIVE", - "T76x_TI_LOADING_DESC", - "T76x_TI_INDEX_WAIT", - "T76x_TI_INDEX_RANGE_WAIT", - "T76x_TI_VERTEX_WAIT", - "T76x_TI_PCACHE_WAIT", - "T76x_TI_WRBUF_WAIT", - "T76x_TI_BUS_READ", - "T76x_TI_BUS_WRITE", - "", - "", - "", - "", - "", - "T76x_TI_UTLB_HIT", - "T76x_TI_UTLB_NEW_MISS", - "T76x_TI_UTLB_REPLAY_FULL", - "T76x_TI_UTLB_REPLAY_MISS", - "T76x_TI_UTLB_STALL", + "", "", "", "T76x_TI_JOBS_PROCESSED", "T76x_TI_TRIANGLES", "T76x_TI_QUADS", "T76x_TI_POLYGONS", "T76x_TI_POINTS", + "T76x_TI_LINES", "T76x_TI_VCACHE_HIT", "T76x_TI_VCACHE_MISS", "T76x_TI_FRONT_FACING", "T76x_TI_BACK_FACING", + "T76x_TI_PRIM_VISIBLE", "T76x_TI_PRIM_CULLED", "T76x_TI_PRIM_CLIPPED", "T76x_TI_LEVEL0", "T76x_TI_LEVEL1", + "T76x_TI_LEVEL2", "T76x_TI_LEVEL3", "T76x_TI_LEVEL4", "T76x_TI_LEVEL5", "T76x_TI_LEVEL6", "T76x_TI_LEVEL7", + "T76x_TI_COMMAND_1", "T76x_TI_COMMAND_2", "T76x_TI_COMMAND_3", "T76x_TI_COMMAND_4", "T76x_TI_COMMAND_5_7", + "T76x_TI_COMMAND_8_15", "T76x_TI_COMMAND_16_63", "T76x_TI_COMMAND_64", "T76x_TI_COMPRESS_IN", + "T76x_TI_COMPRESS_OUT", "T76x_TI_COMPRESS_FLUSH", "T76x_TI_TIMESTAMPS", "T76x_TI_PCACHE_HIT", "T76x_TI_PCACHE_MISS", + "T76x_TI_PCACHE_LINE", "T76x_TI_PCACHE_STALL", "T76x_TI_WRBUF_HIT", "T76x_TI_WRBUF_MISS", "T76x_TI_WRBUF_LINE", + "T76x_TI_WRBUF_PARTIAL", "T76x_TI_WRBUF_STALL", "T76x_TI_ACTIVE", "T76x_TI_LOADING_DESC", "T76x_TI_INDEX_WAIT", + "T76x_TI_INDEX_RANGE_WAIT", "T76x_TI_VERTEX_WAIT", "T76x_TI_PCACHE_WAIT", "T76x_TI_WRBUF_WAIT", "T76x_TI_BUS_READ", + "T76x_TI_BUS_WRITE", "", "", "", "", "", "T76x_TI_UTLB_HIT", "T76x_TI_UTLB_NEW_MISS", "T76x_TI_UTLB_REPLAY_FULL", + "T76x_TI_UTLB_REPLAY_MISS", "T76x_TI_UTLB_STALL", /* Shader Core */ - "", - "", - "", - "", - "T76x_FRAG_ACTIVE", - "T76x_FRAG_PRIMITIVES", - "T76x_FRAG_PRIMITIVES_DROPPED", - "T76x_FRAG_CYCLES_DESC", - "T76x_FRAG_CYCLES_FPKQ_ACTIVE", - "T76x_FRAG_CYCLES_VERT", - "T76x_FRAG_CYCLES_TRISETUP", - "T76x_FRAG_CYCLES_EZS_ACTIVE", - "T76x_FRAG_THREADS", - "T76x_FRAG_DUMMY_THREADS", - "T76x_FRAG_QUADS_RAST", - "T76x_FRAG_QUADS_EZS_TEST", - "T76x_FRAG_QUADS_EZS_KILLED", - "T76x_FRAG_THREADS_LZS_TEST", - "T76x_FRAG_THREADS_LZS_KILLED", - "T76x_FRAG_CYCLES_NO_TILE", - "T76x_FRAG_NUM_TILES", - "T76x_FRAG_TRANS_ELIM", - "T76x_COMPUTE_ACTIVE", - "T76x_COMPUTE_TASKS", - "T76x_COMPUTE_THREADS", - "T76x_COMPUTE_CYCLES_DESC", - "T76x_TRIPIPE_ACTIVE", - "T76x_ARITH_WORDS", - "T76x_ARITH_CYCLES_REG", - "T76x_ARITH_CYCLES_L0", - "T76x_ARITH_FRAG_DEPEND", - "T76x_LS_WORDS", - "T76x_LS_ISSUES", - "T76x_LS_REISSUE_ATTR", - "T76x_LS_REISSUES_VARY", - "T76x_LS_VARY_RV_MISS", - "T76x_LS_VARY_RV_HIT", - "T76x_LS_NO_UNPARK", - "T76x_TEX_WORDS", - "T76x_TEX_BUBBLES", - "T76x_TEX_WORDS_L0", - "T76x_TEX_WORDS_DESC", - "T76x_TEX_ISSUES", - "T76x_TEX_RECIRC_FMISS", - "T76x_TEX_RECIRC_DESC", - "T76x_TEX_RECIRC_MULTI", - "T76x_TEX_RECIRC_PMISS", - "T76x_TEX_RECIRC_CONF", - "T76x_LSC_READ_HITS", - "T76x_LSC_READ_OP", - "T76x_LSC_WRITE_HITS", - "T76x_LSC_WRITE_OP", - "T76x_LSC_ATOMIC_HITS", - "T76x_LSC_ATOMIC_OP", - "T76x_LSC_LINE_FETCHES", - "T76x_LSC_DIRTY_LINE", - "T76x_LSC_SNOOPS", - "T76x_AXI_TLB_STALL", - "T76x_AXI_TLB_MISS", - "T76x_AXI_TLB_TRANSACTION", - "T76x_LS_TLB_MISS", - "T76x_LS_TLB_HIT", - "T76x_AXI_BEATS_READ", - "T76x_AXI_BEATS_WRITTEN", + "", "", "", "", "T76x_FRAG_ACTIVE", "T76x_FRAG_PRIMITIVES", "T76x_FRAG_PRIMITIVES_DROPPED", "T76x_FRAG_CYCLES_DESC", + "T76x_FRAG_CYCLES_FPKQ_ACTIVE", "T76x_FRAG_CYCLES_VERT", "T76x_FRAG_CYCLES_TRISETUP", "T76x_FRAG_CYCLES_EZS_ACTIVE", + "T76x_FRAG_THREADS", "T76x_FRAG_DUMMY_THREADS", "T76x_FRAG_QUADS_RAST", "T76x_FRAG_QUADS_EZS_TEST", + "T76x_FRAG_QUADS_EZS_KILLED", "T76x_FRAG_THREADS_LZS_TEST", "T76x_FRAG_THREADS_LZS_KILLED", + "T76x_FRAG_CYCLES_NO_TILE", "T76x_FRAG_NUM_TILES", "T76x_FRAG_TRANS_ELIM", "T76x_COMPUTE_ACTIVE", + "T76x_COMPUTE_TASKS", "T76x_COMPUTE_THREADS", "T76x_COMPUTE_CYCLES_DESC", "T76x_TRIPIPE_ACTIVE", "T76x_ARITH_WORDS", + "T76x_ARITH_CYCLES_REG", "T76x_ARITH_CYCLES_L0", "T76x_ARITH_FRAG_DEPEND", "T76x_LS_WORDS", "T76x_LS_ISSUES", + "T76x_LS_REISSUE_ATTR", "T76x_LS_REISSUES_VARY", "T76x_LS_VARY_RV_MISS", "T76x_LS_VARY_RV_HIT", "T76x_LS_NO_UNPARK", + "T76x_TEX_WORDS", "T76x_TEX_BUBBLES", "T76x_TEX_WORDS_L0", "T76x_TEX_WORDS_DESC", "T76x_TEX_ISSUES", + "T76x_TEX_RECIRC_FMISS", "T76x_TEX_RECIRC_DESC", "T76x_TEX_RECIRC_MULTI", "T76x_TEX_RECIRC_PMISS", + "T76x_TEX_RECIRC_CONF", "T76x_LSC_READ_HITS", "T76x_LSC_READ_OP", "T76x_LSC_WRITE_HITS", "T76x_LSC_WRITE_OP", + "T76x_LSC_ATOMIC_HITS", "T76x_LSC_ATOMIC_OP", "T76x_LSC_LINE_FETCHES", "T76x_LSC_DIRTY_LINE", "T76x_LSC_SNOOPS", + "T76x_AXI_TLB_STALL", "T76x_AXI_TLB_MISS", "T76x_AXI_TLB_TRANSACTION", "T76x_LS_TLB_MISS", "T76x_LS_TLB_HIT", + "T76x_AXI_BEATS_READ", "T76x_AXI_BEATS_WRITTEN", /*L2 and MMU */ - "", - "", - "", - "", - "T76x_MMU_HIT", - "T76x_MMU_NEW_MISS", - "T76x_MMU_REPLAY_FULL", - "T76x_MMU_REPLAY_MISS", - "T76x_MMU_TABLE_WALK", - "T76x_MMU_REQUESTS", - "", - "", - "T76x_UTLB_HIT", - "T76x_UTLB_NEW_MISS", - "T76x_UTLB_REPLAY_FULL", - "T76x_UTLB_REPLAY_MISS", - "T76x_UTLB_STALL", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "T76x_L2_EXT_WRITE_BEATS", - "T76x_L2_EXT_READ_BEATS", - "T76x_L2_ANY_LOOKUP", - "T76x_L2_READ_LOOKUP", - "T76x_L2_SREAD_LOOKUP", - "T76x_L2_READ_REPLAY", - "T76x_L2_READ_SNOOP", - "T76x_L2_READ_HIT", - "T76x_L2_CLEAN_MISS", - "T76x_L2_WRITE_LOOKUP", - "T76x_L2_SWRITE_LOOKUP", - "T76x_L2_WRITE_REPLAY", - "T76x_L2_WRITE_SNOOP", - "T76x_L2_WRITE_HIT", - "T76x_L2_EXT_READ_FULL", - "", - "T76x_L2_EXT_WRITE_FULL", - "T76x_L2_EXT_R_W_HAZARD", - "T76x_L2_EXT_READ", - "T76x_L2_EXT_READ_LINE", - "T76x_L2_EXT_WRITE", - "T76x_L2_EXT_WRITE_LINE", - "T76x_L2_EXT_WRITE_SMALL", - "T76x_L2_EXT_BARRIER", - "T76x_L2_EXT_AR_STALL", - "T76x_L2_EXT_R_BUF_FULL", - "T76x_L2_EXT_RD_BUF_FULL", - "T76x_L2_EXT_R_RAW", - "T76x_L2_EXT_W_STALL", - "T76x_L2_EXT_W_BUF_FULL", - "T76x_L2_EXT_R_BUF_FULL", - "T76x_L2_TAG_HAZARD", - "T76x_L2_SNOOP_FULL", - "T76x_L2_REPLAY_FULL" -}; + "", "", "", "", "T76x_MMU_HIT", "T76x_MMU_NEW_MISS", "T76x_MMU_REPLAY_FULL", "T76x_MMU_REPLAY_MISS", + "T76x_MMU_TABLE_WALK", "T76x_MMU_REQUESTS", "", "", "T76x_UTLB_HIT", "T76x_UTLB_NEW_MISS", "T76x_UTLB_REPLAY_FULL", + "T76x_UTLB_REPLAY_MISS", "T76x_UTLB_STALL", "", "", "", "", "", "", "", "", "", "", "", "", "", + "T76x_L2_EXT_WRITE_BEATS", "T76x_L2_EXT_READ_BEATS", "T76x_L2_ANY_LOOKUP", "T76x_L2_READ_LOOKUP", + "T76x_L2_SREAD_LOOKUP", "T76x_L2_READ_REPLAY", "T76x_L2_READ_SNOOP", "T76x_L2_READ_HIT", "T76x_L2_CLEAN_MISS", + "T76x_L2_WRITE_LOOKUP", "T76x_L2_SWRITE_LOOKUP", "T76x_L2_WRITE_REPLAY", "T76x_L2_WRITE_SNOOP", "T76x_L2_WRITE_HIT", + "T76x_L2_EXT_READ_FULL", "", "T76x_L2_EXT_WRITE_FULL", "T76x_L2_EXT_R_W_HAZARD", "T76x_L2_EXT_READ", + "T76x_L2_EXT_READ_LINE", "T76x_L2_EXT_WRITE", "T76x_L2_EXT_WRITE_LINE", "T76x_L2_EXT_WRITE_SMALL", + "T76x_L2_EXT_BARRIER", "T76x_L2_EXT_AR_STALL", "T76x_L2_EXT_R_BUF_FULL", "T76x_L2_EXT_RD_BUF_FULL", + "T76x_L2_EXT_R_RAW", "T76x_L2_EXT_W_STALL", "T76x_L2_EXT_W_BUF_FULL", "T76x_L2_EXT_R_BUF_FULL", + "T76x_L2_TAG_HAZARD", "T76x_L2_SNOOP_FULL", "T76x_L2_REPLAY_FULL"}; -static const char *const hardware_counters_mali_t82x[] = -{ +static const char *const hardware_counters_mali_t82x[] = { /* Job Manager */ - "", - "", - "", - "", - "T82x_MESSAGES_SENT", - "T82x_MESSAGES_RECEIVED", - "T82x_GPU_ACTIVE", - "T82x_IRQ_ACTIVE", - "T82x_JS0_JOBS", - "T82x_JS0_TASKS", - "T82x_JS0_ACTIVE", - "", - "T82x_JS0_WAIT_READ", - "T82x_JS0_WAIT_ISSUE", - "T82x_JS0_WAIT_DEPEND", - "T82x_JS0_WAIT_FINISH", - "T82x_JS1_JOBS", - "T82x_JS1_TASKS", - "T82x_JS1_ACTIVE", - "", - "T82x_JS1_WAIT_READ", - "T82x_JS1_WAIT_ISSUE", - "T82x_JS1_WAIT_DEPEND", - "T82x_JS1_WAIT_FINISH", - "T82x_JS2_JOBS", - "T82x_JS2_TASKS", - "T82x_JS2_ACTIVE", - "", - "T82x_JS2_WAIT_READ", - "T82x_JS2_WAIT_ISSUE", - "T82x_JS2_WAIT_DEPEND", - "T82x_JS2_WAIT_FINISH", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "", "T82x_MESSAGES_SENT", "T82x_MESSAGES_RECEIVED", "T82x_GPU_ACTIVE", "T82x_IRQ_ACTIVE", + "T82x_JS0_JOBS", "T82x_JS0_TASKS", "T82x_JS0_ACTIVE", "", "T82x_JS0_WAIT_READ", "T82x_JS0_WAIT_ISSUE", + "T82x_JS0_WAIT_DEPEND", "T82x_JS0_WAIT_FINISH", "T82x_JS1_JOBS", "T82x_JS1_TASKS", "T82x_JS1_ACTIVE", "", + "T82x_JS1_WAIT_READ", "T82x_JS1_WAIT_ISSUE", "T82x_JS1_WAIT_DEPEND", "T82x_JS1_WAIT_FINISH", "T82x_JS2_JOBS", + "T82x_JS2_TASKS", "T82x_JS2_ACTIVE", "", "T82x_JS2_WAIT_READ", "T82x_JS2_WAIT_ISSUE", "T82x_JS2_WAIT_DEPEND", + "T82x_JS2_WAIT_FINISH", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", /*Tiler */ - "", - "", - "", - "T82x_TI_JOBS_PROCESSED", - "T82x_TI_TRIANGLES", - "T82x_TI_QUADS", - "T82x_TI_POLYGONS", - "T82x_TI_POINTS", - "T82x_TI_LINES", - "T82x_TI_FRONT_FACING", - "T82x_TI_BACK_FACING", - "T82x_TI_PRIM_VISIBLE", - "T82x_TI_PRIM_CULLED", - "T82x_TI_PRIM_CLIPPED", - "", - "", - "", - "", - "", - "", - "", - "", - "T82x_TI_ACTIVE", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "T82x_TI_JOBS_PROCESSED", "T82x_TI_TRIANGLES", "T82x_TI_QUADS", "T82x_TI_POLYGONS", "T82x_TI_POINTS", + "T82x_TI_LINES", "T82x_TI_FRONT_FACING", "T82x_TI_BACK_FACING", "T82x_TI_PRIM_VISIBLE", "T82x_TI_PRIM_CULLED", + "T82x_TI_PRIM_CLIPPED", "", "", "", "", "", "", "", "", "T82x_TI_ACTIVE", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", /* Shader Core */ - "", - "", - "", - "", - "T82x_FRAG_ACTIVE", - "T82x_FRAG_PRIMITIVES", - "T82x_FRAG_PRIMITIVES_DROPPED", - "T82x_FRAG_CYCLES_DESC", - "T82x_FRAG_CYCLES_FPKQ_ACTIVE", - "T82x_FRAG_CYCLES_VERT", - "T82x_FRAG_CYCLES_TRISETUP", - "T82x_FRAG_CYCLES_EZS_ACTIVE", - "T82x_FRAG_THREADS", - "T82x_FRAG_DUMMY_THREADS", - "T82x_FRAG_QUADS_RAST", - "T82x_FRAG_QUADS_EZS_TEST", - "T82x_FRAG_QUADS_EZS_KILLED", - "T82x_FRAG_THREADS_LZS_TEST", - "T82x_FRAG_THREADS_LZS_KILLED", - "T82x_FRAG_CYCLES_NO_TILE", - "T82x_FRAG_NUM_TILES", - "T82x_FRAG_TRANS_ELIM", - "T82x_COMPUTE_ACTIVE", - "T82x_COMPUTE_TASKS", - "T82x_COMPUTE_THREADS", - "T82x_COMPUTE_CYCLES_DESC", - "T82x_TRIPIPE_ACTIVE", - "T82x_ARITH_WORDS", - "T82x_ARITH_CYCLES_REG", - "T82x_ARITH_CYCLES_L0", - "T82x_ARITH_FRAG_DEPEND", - "T82x_LS_WORDS", - "T82x_LS_ISSUES", - "T82x_LS_REISSUE_ATTR", - "T82x_LS_REISSUES_VARY", - "T82x_LS_VARY_RV_MISS", - "T82x_LS_VARY_RV_HIT", - "T82x_LS_NO_UNPARK", - "T82x_TEX_WORDS", - "T82x_TEX_BUBBLES", - "T82x_TEX_WORDS_L0", - "T82x_TEX_WORDS_DESC", - "T82x_TEX_ISSUES", - "T82x_TEX_RECIRC_FMISS", - "T82x_TEX_RECIRC_DESC", - "T82x_TEX_RECIRC_MULTI", - "T82x_TEX_RECIRC_PMISS", - "T82x_TEX_RECIRC_CONF", - "T82x_LSC_READ_HITS", - "T82x_LSC_READ_OP", - "T82x_LSC_WRITE_HITS", - "T82x_LSC_WRITE_OP", - "T82x_LSC_ATOMIC_HITS", - "T82x_LSC_ATOMIC_OP", - "T82x_LSC_LINE_FETCHES", - "T82x_LSC_DIRTY_LINE", - "T82x_LSC_SNOOPS", - "T82x_AXI_TLB_STALL", - "T82x_AXI_TLB_MISS", - "T82x_AXI_TLB_TRANSACTION", - "T82x_LS_TLB_MISS", - "T82x_LS_TLB_HIT", - "T82x_AXI_BEATS_READ", - "T82x_AXI_BEATS_WRITTEN", + "", "", "", "", "T82x_FRAG_ACTIVE", "T82x_FRAG_PRIMITIVES", "T82x_FRAG_PRIMITIVES_DROPPED", "T82x_FRAG_CYCLES_DESC", + "T82x_FRAG_CYCLES_FPKQ_ACTIVE", "T82x_FRAG_CYCLES_VERT", "T82x_FRAG_CYCLES_TRISETUP", "T82x_FRAG_CYCLES_EZS_ACTIVE", + "T82x_FRAG_THREADS", "T82x_FRAG_DUMMY_THREADS", "T82x_FRAG_QUADS_RAST", "T82x_FRAG_QUADS_EZS_TEST", + "T82x_FRAG_QUADS_EZS_KILLED", "T82x_FRAG_THREADS_LZS_TEST", "T82x_FRAG_THREADS_LZS_KILLED", + "T82x_FRAG_CYCLES_NO_TILE", "T82x_FRAG_NUM_TILES", "T82x_FRAG_TRANS_ELIM", "T82x_COMPUTE_ACTIVE", + "T82x_COMPUTE_TASKS", "T82x_COMPUTE_THREADS", "T82x_COMPUTE_CYCLES_DESC", "T82x_TRIPIPE_ACTIVE", "T82x_ARITH_WORDS", + "T82x_ARITH_CYCLES_REG", "T82x_ARITH_CYCLES_L0", "T82x_ARITH_FRAG_DEPEND", "T82x_LS_WORDS", "T82x_LS_ISSUES", + "T82x_LS_REISSUE_ATTR", "T82x_LS_REISSUES_VARY", "T82x_LS_VARY_RV_MISS", "T82x_LS_VARY_RV_HIT", "T82x_LS_NO_UNPARK", + "T82x_TEX_WORDS", "T82x_TEX_BUBBLES", "T82x_TEX_WORDS_L0", "T82x_TEX_WORDS_DESC", "T82x_TEX_ISSUES", + "T82x_TEX_RECIRC_FMISS", "T82x_TEX_RECIRC_DESC", "T82x_TEX_RECIRC_MULTI", "T82x_TEX_RECIRC_PMISS", + "T82x_TEX_RECIRC_CONF", "T82x_LSC_READ_HITS", "T82x_LSC_READ_OP", "T82x_LSC_WRITE_HITS", "T82x_LSC_WRITE_OP", + "T82x_LSC_ATOMIC_HITS", "T82x_LSC_ATOMIC_OP", "T82x_LSC_LINE_FETCHES", "T82x_LSC_DIRTY_LINE", "T82x_LSC_SNOOPS", + "T82x_AXI_TLB_STALL", "T82x_AXI_TLB_MISS", "T82x_AXI_TLB_TRANSACTION", "T82x_LS_TLB_MISS", "T82x_LS_TLB_HIT", + "T82x_AXI_BEATS_READ", "T82x_AXI_BEATS_WRITTEN", /*L2 and MMU */ - "", - "", - "", - "", - "T82x_MMU_HIT", - "T82x_MMU_NEW_MISS", - "T82x_MMU_REPLAY_FULL", - "T82x_MMU_REPLAY_MISS", - "T82x_MMU_TABLE_WALK", - "T82x_MMU_REQUESTS", - "", - "", - "T82x_UTLB_HIT", - "T82x_UTLB_NEW_MISS", - "T82x_UTLB_REPLAY_FULL", - "T82x_UTLB_REPLAY_MISS", - "T82x_UTLB_STALL", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "T82x_L2_EXT_WRITE_BEATS", - "T82x_L2_EXT_READ_BEATS", - "T82x_L2_ANY_LOOKUP", - "T82x_L2_READ_LOOKUP", - "T82x_L2_SREAD_LOOKUP", - "T82x_L2_READ_REPLAY", - "T82x_L2_READ_SNOOP", - "T82x_L2_READ_HIT", - "T82x_L2_CLEAN_MISS", - "T82x_L2_WRITE_LOOKUP", - "T82x_L2_SWRITE_LOOKUP", - "T82x_L2_WRITE_REPLAY", - "T82x_L2_WRITE_SNOOP", - "T82x_L2_WRITE_HIT", - "T82x_L2_EXT_READ_FULL", - "", - "T82x_L2_EXT_WRITE_FULL", - "T82x_L2_EXT_R_W_HAZARD", - "T82x_L2_EXT_READ", - "T82x_L2_EXT_READ_LINE", - "T82x_L2_EXT_WRITE", - "T82x_L2_EXT_WRITE_LINE", - "T82x_L2_EXT_WRITE_SMALL", - "T82x_L2_EXT_BARRIER", - "T82x_L2_EXT_AR_STALL", - "T82x_L2_EXT_R_BUF_FULL", - "T82x_L2_EXT_RD_BUF_FULL", - "T82x_L2_EXT_R_RAW", - "T82x_L2_EXT_W_STALL", - "T82x_L2_EXT_W_BUF_FULL", - "T82x_L2_EXT_R_BUF_FULL", - "T82x_L2_TAG_HAZARD", - "T82x_L2_SNOOP_FULL", - "T82x_L2_REPLAY_FULL" -}; + "", "", "", "", "T82x_MMU_HIT", "T82x_MMU_NEW_MISS", "T82x_MMU_REPLAY_FULL", "T82x_MMU_REPLAY_MISS", + "T82x_MMU_TABLE_WALK", "T82x_MMU_REQUESTS", "", "", "T82x_UTLB_HIT", "T82x_UTLB_NEW_MISS", "T82x_UTLB_REPLAY_FULL", + "T82x_UTLB_REPLAY_MISS", "T82x_UTLB_STALL", "", "", "", "", "", "", "", "", "", "", "", "", "", + "T82x_L2_EXT_WRITE_BEATS", "T82x_L2_EXT_READ_BEATS", "T82x_L2_ANY_LOOKUP", "T82x_L2_READ_LOOKUP", + "T82x_L2_SREAD_LOOKUP", "T82x_L2_READ_REPLAY", "T82x_L2_READ_SNOOP", "T82x_L2_READ_HIT", "T82x_L2_CLEAN_MISS", + "T82x_L2_WRITE_LOOKUP", "T82x_L2_SWRITE_LOOKUP", "T82x_L2_WRITE_REPLAY", "T82x_L2_WRITE_SNOOP", "T82x_L2_WRITE_HIT", + "T82x_L2_EXT_READ_FULL", "", "T82x_L2_EXT_WRITE_FULL", "T82x_L2_EXT_R_W_HAZARD", "T82x_L2_EXT_READ", + "T82x_L2_EXT_READ_LINE", "T82x_L2_EXT_WRITE", "T82x_L2_EXT_WRITE_LINE", "T82x_L2_EXT_WRITE_SMALL", + "T82x_L2_EXT_BARRIER", "T82x_L2_EXT_AR_STALL", "T82x_L2_EXT_R_BUF_FULL", "T82x_L2_EXT_RD_BUF_FULL", + "T82x_L2_EXT_R_RAW", "T82x_L2_EXT_W_STALL", "T82x_L2_EXT_W_BUF_FULL", "T82x_L2_EXT_R_BUF_FULL", + "T82x_L2_TAG_HAZARD", "T82x_L2_SNOOP_FULL", "T82x_L2_REPLAY_FULL"}; -static const char *const hardware_counters_mali_t83x[] = -{ +static const char *const hardware_counters_mali_t83x[] = { /* Job Manager */ - "", - "", - "", - "", - "T83x_MESSAGES_SENT", - "T83x_MESSAGES_RECEIVED", - "T83x_GPU_ACTIVE", - "T83x_IRQ_ACTIVE", - "T83x_JS0_JOBS", - "T83x_JS0_TASKS", - "T83x_JS0_ACTIVE", - "", - "T83x_JS0_WAIT_READ", - "T83x_JS0_WAIT_ISSUE", - "T83x_JS0_WAIT_DEPEND", - "T83x_JS0_WAIT_FINISH", - "T83x_JS1_JOBS", - "T83x_JS1_TASKS", - "T83x_JS1_ACTIVE", - "", - "T83x_JS1_WAIT_READ", - "T83x_JS1_WAIT_ISSUE", - "T83x_JS1_WAIT_DEPEND", - "T83x_JS1_WAIT_FINISH", - "T83x_JS2_JOBS", - "T83x_JS2_TASKS", - "T83x_JS2_ACTIVE", - "", - "T83x_JS2_WAIT_READ", - "T83x_JS2_WAIT_ISSUE", - "T83x_JS2_WAIT_DEPEND", - "T83x_JS2_WAIT_FINISH", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "", "T83x_MESSAGES_SENT", "T83x_MESSAGES_RECEIVED", "T83x_GPU_ACTIVE", "T83x_IRQ_ACTIVE", + "T83x_JS0_JOBS", "T83x_JS0_TASKS", "T83x_JS0_ACTIVE", "", "T83x_JS0_WAIT_READ", "T83x_JS0_WAIT_ISSUE", + "T83x_JS0_WAIT_DEPEND", "T83x_JS0_WAIT_FINISH", "T83x_JS1_JOBS", "T83x_JS1_TASKS", "T83x_JS1_ACTIVE", "", + "T83x_JS1_WAIT_READ", "T83x_JS1_WAIT_ISSUE", "T83x_JS1_WAIT_DEPEND", "T83x_JS1_WAIT_FINISH", "T83x_JS2_JOBS", + "T83x_JS2_TASKS", "T83x_JS2_ACTIVE", "", "T83x_JS2_WAIT_READ", "T83x_JS2_WAIT_ISSUE", "T83x_JS2_WAIT_DEPEND", + "T83x_JS2_WAIT_FINISH", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", /*Tiler */ - "", - "", - "", - "T83x_TI_JOBS_PROCESSED", - "T83x_TI_TRIANGLES", - "T83x_TI_QUADS", - "T83x_TI_POLYGONS", - "T83x_TI_POINTS", - "T83x_TI_LINES", - "T83x_TI_FRONT_FACING", - "T83x_TI_BACK_FACING", - "T83x_TI_PRIM_VISIBLE", - "T83x_TI_PRIM_CULLED", - "T83x_TI_PRIM_CLIPPED", - "", - "", - "", - "", - "", - "", - "", - "", - "T83x_TI_ACTIVE", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "T83x_TI_JOBS_PROCESSED", "T83x_TI_TRIANGLES", "T83x_TI_QUADS", "T83x_TI_POLYGONS", "T83x_TI_POINTS", + "T83x_TI_LINES", "T83x_TI_FRONT_FACING", "T83x_TI_BACK_FACING", "T83x_TI_PRIM_VISIBLE", "T83x_TI_PRIM_CULLED", + "T83x_TI_PRIM_CLIPPED", "", "", "", "", "", "", "", "", "T83x_TI_ACTIVE", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", /* Shader Core */ - "", - "", - "", - "", - "T83x_FRAG_ACTIVE", - "T83x_FRAG_PRIMITIVES", - "T83x_FRAG_PRIMITIVES_DROPPED", - "T83x_FRAG_CYCLES_DESC", - "T83x_FRAG_CYCLES_FPKQ_ACTIVE", - "T83x_FRAG_CYCLES_VERT", - "T83x_FRAG_CYCLES_TRISETUP", - "T83x_FRAG_CYCLES_EZS_ACTIVE", - "T83x_FRAG_THREADS", - "T83x_FRAG_DUMMY_THREADS", - "T83x_FRAG_QUADS_RAST", - "T83x_FRAG_QUADS_EZS_TEST", - "T83x_FRAG_QUADS_EZS_KILLED", - "T83x_FRAG_THREADS_LZS_TEST", - "T83x_FRAG_THREADS_LZS_KILLED", - "T83x_FRAG_CYCLES_NO_TILE", - "T83x_FRAG_NUM_TILES", - "T83x_FRAG_TRANS_ELIM", - "T83x_COMPUTE_ACTIVE", - "T83x_COMPUTE_TASKS", - "T83x_COMPUTE_THREADS", - "T83x_COMPUTE_CYCLES_DESC", - "T83x_TRIPIPE_ACTIVE", - "T83x_ARITH_WORDS", - "T83x_ARITH_CYCLES_REG", - "T83x_ARITH_CYCLES_L0", - "T83x_ARITH_FRAG_DEPEND", - "T83x_LS_WORDS", - "T83x_LS_ISSUES", - "T83x_LS_REISSUE_ATTR", - "T83x_LS_REISSUES_VARY", - "T83x_LS_VARY_RV_MISS", - "T83x_LS_VARY_RV_HIT", - "T83x_LS_NO_UNPARK", - "T83x_TEX_WORDS", - "T83x_TEX_BUBBLES", - "T83x_TEX_WORDS_L0", - "T83x_TEX_WORDS_DESC", - "T83x_TEX_ISSUES", - "T83x_TEX_RECIRC_FMISS", - "T83x_TEX_RECIRC_DESC", - "T83x_TEX_RECIRC_MULTI", - "T83x_TEX_RECIRC_PMISS", - "T83x_TEX_RECIRC_CONF", - "T83x_LSC_READ_HITS", - "T83x_LSC_READ_OP", - "T83x_LSC_WRITE_HITS", - "T83x_LSC_WRITE_OP", - "T83x_LSC_ATOMIC_HITS", - "T83x_LSC_ATOMIC_OP", - "T83x_LSC_LINE_FETCHES", - "T83x_LSC_DIRTY_LINE", - "T83x_LSC_SNOOPS", - "T83x_AXI_TLB_STALL", - "T83x_AXI_TLB_MISS", - "T83x_AXI_TLB_TRANSACTION", - "T83x_LS_TLB_MISS", - "T83x_LS_TLB_HIT", - "T83x_AXI_BEATS_READ", - "T83x_AXI_BEATS_WRITTEN", + "", "", "", "", "T83x_FRAG_ACTIVE", "T83x_FRAG_PRIMITIVES", "T83x_FRAG_PRIMITIVES_DROPPED", "T83x_FRAG_CYCLES_DESC", + "T83x_FRAG_CYCLES_FPKQ_ACTIVE", "T83x_FRAG_CYCLES_VERT", "T83x_FRAG_CYCLES_TRISETUP", "T83x_FRAG_CYCLES_EZS_ACTIVE", + "T83x_FRAG_THREADS", "T83x_FRAG_DUMMY_THREADS", "T83x_FRAG_QUADS_RAST", "T83x_FRAG_QUADS_EZS_TEST", + "T83x_FRAG_QUADS_EZS_KILLED", "T83x_FRAG_THREADS_LZS_TEST", "T83x_FRAG_THREADS_LZS_KILLED", + "T83x_FRAG_CYCLES_NO_TILE", "T83x_FRAG_NUM_TILES", "T83x_FRAG_TRANS_ELIM", "T83x_COMPUTE_ACTIVE", + "T83x_COMPUTE_TASKS", "T83x_COMPUTE_THREADS", "T83x_COMPUTE_CYCLES_DESC", "T83x_TRIPIPE_ACTIVE", "T83x_ARITH_WORDS", + "T83x_ARITH_CYCLES_REG", "T83x_ARITH_CYCLES_L0", "T83x_ARITH_FRAG_DEPEND", "T83x_LS_WORDS", "T83x_LS_ISSUES", + "T83x_LS_REISSUE_ATTR", "T83x_LS_REISSUES_VARY", "T83x_LS_VARY_RV_MISS", "T83x_LS_VARY_RV_HIT", "T83x_LS_NO_UNPARK", + "T83x_TEX_WORDS", "T83x_TEX_BUBBLES", "T83x_TEX_WORDS_L0", "T83x_TEX_WORDS_DESC", "T83x_TEX_ISSUES", + "T83x_TEX_RECIRC_FMISS", "T83x_TEX_RECIRC_DESC", "T83x_TEX_RECIRC_MULTI", "T83x_TEX_RECIRC_PMISS", + "T83x_TEX_RECIRC_CONF", "T83x_LSC_READ_HITS", "T83x_LSC_READ_OP", "T83x_LSC_WRITE_HITS", "T83x_LSC_WRITE_OP", + "T83x_LSC_ATOMIC_HITS", "T83x_LSC_ATOMIC_OP", "T83x_LSC_LINE_FETCHES", "T83x_LSC_DIRTY_LINE", "T83x_LSC_SNOOPS", + "T83x_AXI_TLB_STALL", "T83x_AXI_TLB_MISS", "T83x_AXI_TLB_TRANSACTION", "T83x_LS_TLB_MISS", "T83x_LS_TLB_HIT", + "T83x_AXI_BEATS_READ", "T83x_AXI_BEATS_WRITTEN", /*L2 and MMU */ - "", - "", - "", - "", - "T83x_MMU_HIT", - "T83x_MMU_NEW_MISS", - "T83x_MMU_REPLAY_FULL", - "T83x_MMU_REPLAY_MISS", - "T83x_MMU_TABLE_WALK", - "T83x_MMU_REQUESTS", - "", - "", - "T83x_UTLB_HIT", - "T83x_UTLB_NEW_MISS", - "T83x_UTLB_REPLAY_FULL", - "T83x_UTLB_REPLAY_MISS", - "T83x_UTLB_STALL", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "T83x_L2_EXT_WRITE_BEATS", - "T83x_L2_EXT_READ_BEATS", - "T83x_L2_ANY_LOOKUP", - "T83x_L2_READ_LOOKUP", - "T83x_L2_SREAD_LOOKUP", - "T83x_L2_READ_REPLAY", - "T83x_L2_READ_SNOOP", - "T83x_L2_READ_HIT", - "T83x_L2_CLEAN_MISS", - "T83x_L2_WRITE_LOOKUP", - "T83x_L2_SWRITE_LOOKUP", - "T83x_L2_WRITE_REPLAY", - "T83x_L2_WRITE_SNOOP", - "T83x_L2_WRITE_HIT", - "T83x_L2_EXT_READ_FULL", - "", - "T83x_L2_EXT_WRITE_FULL", - "T83x_L2_EXT_R_W_HAZARD", - "T83x_L2_EXT_READ", - "T83x_L2_EXT_READ_LINE", - "T83x_L2_EXT_WRITE", - "T83x_L2_EXT_WRITE_LINE", - "T83x_L2_EXT_WRITE_SMALL", - "T83x_L2_EXT_BARRIER", - "T83x_L2_EXT_AR_STALL", - "T83x_L2_EXT_R_BUF_FULL", - "T83x_L2_EXT_RD_BUF_FULL", - "T83x_L2_EXT_R_RAW", - "T83x_L2_EXT_W_STALL", - "T83x_L2_EXT_W_BUF_FULL", - "T83x_L2_EXT_R_BUF_FULL", - "T83x_L2_TAG_HAZARD", - "T83x_L2_SNOOP_FULL", - "T83x_L2_REPLAY_FULL" -}; + "", "", "", "", "T83x_MMU_HIT", "T83x_MMU_NEW_MISS", "T83x_MMU_REPLAY_FULL", "T83x_MMU_REPLAY_MISS", + "T83x_MMU_TABLE_WALK", "T83x_MMU_REQUESTS", "", "", "T83x_UTLB_HIT", "T83x_UTLB_NEW_MISS", "T83x_UTLB_REPLAY_FULL", + "T83x_UTLB_REPLAY_MISS", "T83x_UTLB_STALL", "", "", "", "", "", "", "", "", "", "", "", "", "", + "T83x_L2_EXT_WRITE_BEATS", "T83x_L2_EXT_READ_BEATS", "T83x_L2_ANY_LOOKUP", "T83x_L2_READ_LOOKUP", + "T83x_L2_SREAD_LOOKUP", "T83x_L2_READ_REPLAY", "T83x_L2_READ_SNOOP", "T83x_L2_READ_HIT", "T83x_L2_CLEAN_MISS", + "T83x_L2_WRITE_LOOKUP", "T83x_L2_SWRITE_LOOKUP", "T83x_L2_WRITE_REPLAY", "T83x_L2_WRITE_SNOOP", "T83x_L2_WRITE_HIT", + "T83x_L2_EXT_READ_FULL", "", "T83x_L2_EXT_WRITE_FULL", "T83x_L2_EXT_R_W_HAZARD", "T83x_L2_EXT_READ", + "T83x_L2_EXT_READ_LINE", "T83x_L2_EXT_WRITE", "T83x_L2_EXT_WRITE_LINE", "T83x_L2_EXT_WRITE_SMALL", + "T83x_L2_EXT_BARRIER", "T83x_L2_EXT_AR_STALL", "T83x_L2_EXT_R_BUF_FULL", "T83x_L2_EXT_RD_BUF_FULL", + "T83x_L2_EXT_R_RAW", "T83x_L2_EXT_W_STALL", "T83x_L2_EXT_W_BUF_FULL", "T83x_L2_EXT_R_BUF_FULL", + "T83x_L2_TAG_HAZARD", "T83x_L2_SNOOP_FULL", "T83x_L2_REPLAY_FULL"}; -static const char *const hardware_counters_mali_t86x[] = -{ +static const char *const hardware_counters_mali_t86x[] = { /* Job Manager */ - "", - "", - "", - "", - "T86x_MESSAGES_SENT", - "T86x_MESSAGES_RECEIVED", - "T86x_GPU_ACTIVE", - "T86x_IRQ_ACTIVE", - "T86x_JS0_JOBS", - "T86x_JS0_TASKS", - "T86x_JS0_ACTIVE", - "", - "T86x_JS0_WAIT_READ", - "T86x_JS0_WAIT_ISSUE", - "T86x_JS0_WAIT_DEPEND", - "T86x_JS0_WAIT_FINISH", - "T86x_JS1_JOBS", - "T86x_JS1_TASKS", - "T86x_JS1_ACTIVE", - "", - "T86x_JS1_WAIT_READ", - "T86x_JS1_WAIT_ISSUE", - "T86x_JS1_WAIT_DEPEND", - "T86x_JS1_WAIT_FINISH", - "T86x_JS2_JOBS", - "T86x_JS2_TASKS", - "T86x_JS2_ACTIVE", - "", - "T86x_JS2_WAIT_READ", - "T86x_JS2_WAIT_ISSUE", - "T86x_JS2_WAIT_DEPEND", - "T86x_JS2_WAIT_FINISH", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "", "T86x_MESSAGES_SENT", "T86x_MESSAGES_RECEIVED", "T86x_GPU_ACTIVE", "T86x_IRQ_ACTIVE", + "T86x_JS0_JOBS", "T86x_JS0_TASKS", "T86x_JS0_ACTIVE", "", "T86x_JS0_WAIT_READ", "T86x_JS0_WAIT_ISSUE", + "T86x_JS0_WAIT_DEPEND", "T86x_JS0_WAIT_FINISH", "T86x_JS1_JOBS", "T86x_JS1_TASKS", "T86x_JS1_ACTIVE", "", + "T86x_JS1_WAIT_READ", "T86x_JS1_WAIT_ISSUE", "T86x_JS1_WAIT_DEPEND", "T86x_JS1_WAIT_FINISH", "T86x_JS2_JOBS", + "T86x_JS2_TASKS", "T86x_JS2_ACTIVE", "", "T86x_JS2_WAIT_READ", "T86x_JS2_WAIT_ISSUE", "T86x_JS2_WAIT_DEPEND", + "T86x_JS2_WAIT_FINISH", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", /*Tiler */ - "", - "", - "", - "T86x_TI_JOBS_PROCESSED", - "T86x_TI_TRIANGLES", - "T86x_TI_QUADS", - "T86x_TI_POLYGONS", - "T86x_TI_POINTS", - "T86x_TI_LINES", - "T86x_TI_VCACHE_HIT", - "T86x_TI_VCACHE_MISS", - "T86x_TI_FRONT_FACING", - "T86x_TI_BACK_FACING", - "T86x_TI_PRIM_VISIBLE", - "T86x_TI_PRIM_CULLED", - "T86x_TI_PRIM_CLIPPED", - "T86x_TI_LEVEL0", - "T86x_TI_LEVEL1", - "T86x_TI_LEVEL2", - "T86x_TI_LEVEL3", - "T86x_TI_LEVEL4", - "T86x_TI_LEVEL5", - "T86x_TI_LEVEL6", - "T86x_TI_LEVEL7", - "T86x_TI_COMMAND_1", - "T86x_TI_COMMAND_2", - "T86x_TI_COMMAND_3", - "T86x_TI_COMMAND_4", - "T86x_TI_COMMAND_5_7", - "T86x_TI_COMMAND_8_15", - "T86x_TI_COMMAND_16_63", - "T86x_TI_COMMAND_64", - "T86x_TI_COMPRESS_IN", - "T86x_TI_COMPRESS_OUT", - "T86x_TI_COMPRESS_FLUSH", - "T86x_TI_TIMESTAMPS", - "T86x_TI_PCACHE_HIT", - "T86x_TI_PCACHE_MISS", - "T86x_TI_PCACHE_LINE", - "T86x_TI_PCACHE_STALL", - "T86x_TI_WRBUF_HIT", - "T86x_TI_WRBUF_MISS", - "T86x_TI_WRBUF_LINE", - "T86x_TI_WRBUF_PARTIAL", - "T86x_TI_WRBUF_STALL", - "T86x_TI_ACTIVE", - "T86x_TI_LOADING_DESC", - "T86x_TI_INDEX_WAIT", - "T86x_TI_INDEX_RANGE_WAIT", - "T86x_TI_VERTEX_WAIT", - "T86x_TI_PCACHE_WAIT", - "T86x_TI_WRBUF_WAIT", - "T86x_TI_BUS_READ", - "T86x_TI_BUS_WRITE", - "", - "", - "", - "", - "", - "T86x_TI_UTLB_HIT", - "T86x_TI_UTLB_NEW_MISS", - "T86x_TI_UTLB_REPLAY_FULL", - "T86x_TI_UTLB_REPLAY_MISS", - "T86x_TI_UTLB_STALL", + "", "", "", "T86x_TI_JOBS_PROCESSED", "T86x_TI_TRIANGLES", "T86x_TI_QUADS", "T86x_TI_POLYGONS", "T86x_TI_POINTS", + "T86x_TI_LINES", "T86x_TI_VCACHE_HIT", "T86x_TI_VCACHE_MISS", "T86x_TI_FRONT_FACING", "T86x_TI_BACK_FACING", + "T86x_TI_PRIM_VISIBLE", "T86x_TI_PRIM_CULLED", "T86x_TI_PRIM_CLIPPED", "T86x_TI_LEVEL0", "T86x_TI_LEVEL1", + "T86x_TI_LEVEL2", "T86x_TI_LEVEL3", "T86x_TI_LEVEL4", "T86x_TI_LEVEL5", "T86x_TI_LEVEL6", "T86x_TI_LEVEL7", + "T86x_TI_COMMAND_1", "T86x_TI_COMMAND_2", "T86x_TI_COMMAND_3", "T86x_TI_COMMAND_4", "T86x_TI_COMMAND_5_7", + "T86x_TI_COMMAND_8_15", "T86x_TI_COMMAND_16_63", "T86x_TI_COMMAND_64", "T86x_TI_COMPRESS_IN", + "T86x_TI_COMPRESS_OUT", "T86x_TI_COMPRESS_FLUSH", "T86x_TI_TIMESTAMPS", "T86x_TI_PCACHE_HIT", "T86x_TI_PCACHE_MISS", + "T86x_TI_PCACHE_LINE", "T86x_TI_PCACHE_STALL", "T86x_TI_WRBUF_HIT", "T86x_TI_WRBUF_MISS", "T86x_TI_WRBUF_LINE", + "T86x_TI_WRBUF_PARTIAL", "T86x_TI_WRBUF_STALL", "T86x_TI_ACTIVE", "T86x_TI_LOADING_DESC", "T86x_TI_INDEX_WAIT", + "T86x_TI_INDEX_RANGE_WAIT", "T86x_TI_VERTEX_WAIT", "T86x_TI_PCACHE_WAIT", "T86x_TI_WRBUF_WAIT", "T86x_TI_BUS_READ", + "T86x_TI_BUS_WRITE", "", "", "", "", "", "T86x_TI_UTLB_HIT", "T86x_TI_UTLB_NEW_MISS", "T86x_TI_UTLB_REPLAY_FULL", + "T86x_TI_UTLB_REPLAY_MISS", "T86x_TI_UTLB_STALL", /* Shader Core */ - "", - "", - "", - "", - "T86x_FRAG_ACTIVE", - "T86x_FRAG_PRIMITIVES", - "T86x_FRAG_PRIMITIVES_DROPPED", - "T86x_FRAG_CYCLES_DESC", - "T86x_FRAG_CYCLES_FPKQ_ACTIVE", - "T86x_FRAG_CYCLES_VERT", - "T86x_FRAG_CYCLES_TRISETUP", - "T86x_FRAG_CYCLES_EZS_ACTIVE", - "T86x_FRAG_THREADS", - "T86x_FRAG_DUMMY_THREADS", - "T86x_FRAG_QUADS_RAST", - "T86x_FRAG_QUADS_EZS_TEST", - "T86x_FRAG_QUADS_EZS_KILLED", - "T86x_FRAG_THREADS_LZS_TEST", - "T86x_FRAG_THREADS_LZS_KILLED", - "T86x_FRAG_CYCLES_NO_TILE", - "T86x_FRAG_NUM_TILES", - "T86x_FRAG_TRANS_ELIM", - "T86x_COMPUTE_ACTIVE", - "T86x_COMPUTE_TASKS", - "T86x_COMPUTE_THREADS", - "T86x_COMPUTE_CYCLES_DESC", - "T86x_TRIPIPE_ACTIVE", - "T86x_ARITH_WORDS", - "T86x_ARITH_CYCLES_REG", - "T86x_ARITH_CYCLES_L0", - "T86x_ARITH_FRAG_DEPEND", - "T86x_LS_WORDS", - "T86x_LS_ISSUES", - "T86x_LS_REISSUE_ATTR", - "T86x_LS_REISSUES_VARY", - "T86x_LS_VARY_RV_MISS", - "T86x_LS_VARY_RV_HIT", - "T86x_LS_NO_UNPARK", - "T86x_TEX_WORDS", - "T86x_TEX_BUBBLES", - "T86x_TEX_WORDS_L0", - "T86x_TEX_WORDS_DESC", - "T86x_TEX_ISSUES", - "T86x_TEX_RECIRC_FMISS", - "T86x_TEX_RECIRC_DESC", - "T86x_TEX_RECIRC_MULTI", - "T86x_TEX_RECIRC_PMISS", - "T86x_TEX_RECIRC_CONF", - "T86x_LSC_READ_HITS", - "T86x_LSC_READ_OP", - "T86x_LSC_WRITE_HITS", - "T86x_LSC_WRITE_OP", - "T86x_LSC_ATOMIC_HITS", - "T86x_LSC_ATOMIC_OP", - "T86x_LSC_LINE_FETCHES", - "T86x_LSC_DIRTY_LINE", - "T86x_LSC_SNOOPS", - "T86x_AXI_TLB_STALL", - "T86x_AXI_TLB_MISS", - "T86x_AXI_TLB_TRANSACTION", - "T86x_LS_TLB_MISS", - "T86x_LS_TLB_HIT", - "T86x_AXI_BEATS_READ", - "T86x_AXI_BEATS_WRITTEN", + "", "", "", "", "T86x_FRAG_ACTIVE", "T86x_FRAG_PRIMITIVES", "T86x_FRAG_PRIMITIVES_DROPPED", "T86x_FRAG_CYCLES_DESC", + "T86x_FRAG_CYCLES_FPKQ_ACTIVE", "T86x_FRAG_CYCLES_VERT", "T86x_FRAG_CYCLES_TRISETUP", "T86x_FRAG_CYCLES_EZS_ACTIVE", + "T86x_FRAG_THREADS", "T86x_FRAG_DUMMY_THREADS", "T86x_FRAG_QUADS_RAST", "T86x_FRAG_QUADS_EZS_TEST", + "T86x_FRAG_QUADS_EZS_KILLED", "T86x_FRAG_THREADS_LZS_TEST", "T86x_FRAG_THREADS_LZS_KILLED", + "T86x_FRAG_CYCLES_NO_TILE", "T86x_FRAG_NUM_TILES", "T86x_FRAG_TRANS_ELIM", "T86x_COMPUTE_ACTIVE", + "T86x_COMPUTE_TASKS", "T86x_COMPUTE_THREADS", "T86x_COMPUTE_CYCLES_DESC", "T86x_TRIPIPE_ACTIVE", "T86x_ARITH_WORDS", + "T86x_ARITH_CYCLES_REG", "T86x_ARITH_CYCLES_L0", "T86x_ARITH_FRAG_DEPEND", "T86x_LS_WORDS", "T86x_LS_ISSUES", + "T86x_LS_REISSUE_ATTR", "T86x_LS_REISSUES_VARY", "T86x_LS_VARY_RV_MISS", "T86x_LS_VARY_RV_HIT", "T86x_LS_NO_UNPARK", + "T86x_TEX_WORDS", "T86x_TEX_BUBBLES", "T86x_TEX_WORDS_L0", "T86x_TEX_WORDS_DESC", "T86x_TEX_ISSUES", + "T86x_TEX_RECIRC_FMISS", "T86x_TEX_RECIRC_DESC", "T86x_TEX_RECIRC_MULTI", "T86x_TEX_RECIRC_PMISS", + "T86x_TEX_RECIRC_CONF", "T86x_LSC_READ_HITS", "T86x_LSC_READ_OP", "T86x_LSC_WRITE_HITS", "T86x_LSC_WRITE_OP", + "T86x_LSC_ATOMIC_HITS", "T86x_LSC_ATOMIC_OP", "T86x_LSC_LINE_FETCHES", "T86x_LSC_DIRTY_LINE", "T86x_LSC_SNOOPS", + "T86x_AXI_TLB_STALL", "T86x_AXI_TLB_MISS", "T86x_AXI_TLB_TRANSACTION", "T86x_LS_TLB_MISS", "T86x_LS_TLB_HIT", + "T86x_AXI_BEATS_READ", "T86x_AXI_BEATS_WRITTEN", /*L2 and MMU */ - "", - "", - "", - "", - "T86x_MMU_HIT", - "T86x_MMU_NEW_MISS", - "T86x_MMU_REPLAY_FULL", - "T86x_MMU_REPLAY_MISS", - "T86x_MMU_TABLE_WALK", - "T86x_MMU_REQUESTS", - "", - "", - "T86x_UTLB_HIT", - "T86x_UTLB_NEW_MISS", - "T86x_UTLB_REPLAY_FULL", - "T86x_UTLB_REPLAY_MISS", - "T86x_UTLB_STALL", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "T86x_L2_EXT_WRITE_BEATS", - "T86x_L2_EXT_READ_BEATS", - "T86x_L2_ANY_LOOKUP", - "T86x_L2_READ_LOOKUP", - "T86x_L2_SREAD_LOOKUP", - "T86x_L2_READ_REPLAY", - "T86x_L2_READ_SNOOP", - "T86x_L2_READ_HIT", - "T86x_L2_CLEAN_MISS", - "T86x_L2_WRITE_LOOKUP", - "T86x_L2_SWRITE_LOOKUP", - "T86x_L2_WRITE_REPLAY", - "T86x_L2_WRITE_SNOOP", - "T86x_L2_WRITE_HIT", - "T86x_L2_EXT_READ_FULL", - "", - "T86x_L2_EXT_WRITE_FULL", - "T86x_L2_EXT_R_W_HAZARD", - "T86x_L2_EXT_READ", - "T86x_L2_EXT_READ_LINE", - "T86x_L2_EXT_WRITE", - "T86x_L2_EXT_WRITE_LINE", - "T86x_L2_EXT_WRITE_SMALL", - "T86x_L2_EXT_BARRIER", - "T86x_L2_EXT_AR_STALL", - "T86x_L2_EXT_R_BUF_FULL", - "T86x_L2_EXT_RD_BUF_FULL", - "T86x_L2_EXT_R_RAW", - "T86x_L2_EXT_W_STALL", - "T86x_L2_EXT_W_BUF_FULL", - "T86x_L2_EXT_R_BUF_FULL", - "T86x_L2_TAG_HAZARD", - "T86x_L2_SNOOP_FULL", - "T86x_L2_REPLAY_FULL" -}; + "", "", "", "", "T86x_MMU_HIT", "T86x_MMU_NEW_MISS", "T86x_MMU_REPLAY_FULL", "T86x_MMU_REPLAY_MISS", + "T86x_MMU_TABLE_WALK", "T86x_MMU_REQUESTS", "", "", "T86x_UTLB_HIT", "T86x_UTLB_NEW_MISS", "T86x_UTLB_REPLAY_FULL", + "T86x_UTLB_REPLAY_MISS", "T86x_UTLB_STALL", "", "", "", "", "", "", "", "", "", "", "", "", "", + "T86x_L2_EXT_WRITE_BEATS", "T86x_L2_EXT_READ_BEATS", "T86x_L2_ANY_LOOKUP", "T86x_L2_READ_LOOKUP", + "T86x_L2_SREAD_LOOKUP", "T86x_L2_READ_REPLAY", "T86x_L2_READ_SNOOP", "T86x_L2_READ_HIT", "T86x_L2_CLEAN_MISS", + "T86x_L2_WRITE_LOOKUP", "T86x_L2_SWRITE_LOOKUP", "T86x_L2_WRITE_REPLAY", "T86x_L2_WRITE_SNOOP", "T86x_L2_WRITE_HIT", + "T86x_L2_EXT_READ_FULL", "", "T86x_L2_EXT_WRITE_FULL", "T86x_L2_EXT_R_W_HAZARD", "T86x_L2_EXT_READ", + "T86x_L2_EXT_READ_LINE", "T86x_L2_EXT_WRITE", "T86x_L2_EXT_WRITE_LINE", "T86x_L2_EXT_WRITE_SMALL", + "T86x_L2_EXT_BARRIER", "T86x_L2_EXT_AR_STALL", "T86x_L2_EXT_R_BUF_FULL", "T86x_L2_EXT_RD_BUF_FULL", + "T86x_L2_EXT_R_RAW", "T86x_L2_EXT_W_STALL", "T86x_L2_EXT_W_BUF_FULL", "T86x_L2_EXT_R_BUF_FULL", + "T86x_L2_TAG_HAZARD", "T86x_L2_SNOOP_FULL", "T86x_L2_REPLAY_FULL"}; -static const char *const hardware_counters_mali_t88x[] = -{ +static const char *const hardware_counters_mali_t88x[] = { /* Job Manager */ - "", - "", - "", - "", - "T88x_MESSAGES_SENT", - "T88x_MESSAGES_RECEIVED", - "T88x_GPU_ACTIVE", - "T88x_IRQ_ACTIVE", - "T88x_JS0_JOBS", - "T88x_JS0_TASKS", - "T88x_JS0_ACTIVE", - "", - "T88x_JS0_WAIT_READ", - "T88x_JS0_WAIT_ISSUE", - "T88x_JS0_WAIT_DEPEND", - "T88x_JS0_WAIT_FINISH", - "T88x_JS1_JOBS", - "T88x_JS1_TASKS", - "T88x_JS1_ACTIVE", - "", - "T88x_JS1_WAIT_READ", - "T88x_JS1_WAIT_ISSUE", - "T88x_JS1_WAIT_DEPEND", - "T88x_JS1_WAIT_FINISH", - "T88x_JS2_JOBS", - "T88x_JS2_TASKS", - "T88x_JS2_ACTIVE", - "", - "T88x_JS2_WAIT_READ", - "T88x_JS2_WAIT_ISSUE", - "T88x_JS2_WAIT_DEPEND", - "T88x_JS2_WAIT_FINISH", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", + "", "", "", "", "T88x_MESSAGES_SENT", "T88x_MESSAGES_RECEIVED", "T88x_GPU_ACTIVE", "T88x_IRQ_ACTIVE", + "T88x_JS0_JOBS", "T88x_JS0_TASKS", "T88x_JS0_ACTIVE", "", "T88x_JS0_WAIT_READ", "T88x_JS0_WAIT_ISSUE", + "T88x_JS0_WAIT_DEPEND", "T88x_JS0_WAIT_FINISH", "T88x_JS1_JOBS", "T88x_JS1_TASKS", "T88x_JS1_ACTIVE", "", + "T88x_JS1_WAIT_READ", "T88x_JS1_WAIT_ISSUE", "T88x_JS1_WAIT_DEPEND", "T88x_JS1_WAIT_FINISH", "T88x_JS2_JOBS", + "T88x_JS2_TASKS", "T88x_JS2_ACTIVE", "", "T88x_JS2_WAIT_READ", "T88x_JS2_WAIT_ISSUE", "T88x_JS2_WAIT_DEPEND", + "T88x_JS2_WAIT_FINISH", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", /*Tiler */ - "", - "", - "", - "T88x_TI_JOBS_PROCESSED", - "T88x_TI_TRIANGLES", - "T88x_TI_QUADS", - "T88x_TI_POLYGONS", - "T88x_TI_POINTS", - "T88x_TI_LINES", - "T88x_TI_VCACHE_HIT", - "T88x_TI_VCACHE_MISS", - "T88x_TI_FRONT_FACING", - "T88x_TI_BACK_FACING", - "T88x_TI_PRIM_VISIBLE", - "T88x_TI_PRIM_CULLED", - "T88x_TI_PRIM_CLIPPED", - "T88x_TI_LEVEL0", - "T88x_TI_LEVEL1", - "T88x_TI_LEVEL2", - "T88x_TI_LEVEL3", - "T88x_TI_LEVEL4", - "T88x_TI_LEVEL5", - "T88x_TI_LEVEL6", - "T88x_TI_LEVEL7", - "T88x_TI_COMMAND_1", - "T88x_TI_COMMAND_2", - "T88x_TI_COMMAND_3", - "T88x_TI_COMMAND_4", - "T88x_TI_COMMAND_5_7", - "T88x_TI_COMMAND_8_15", - "T88x_TI_COMMAND_16_63", - "T88x_TI_COMMAND_64", - "T88x_TI_COMPRESS_IN", - "T88x_TI_COMPRESS_OUT", - "T88x_TI_COMPRESS_FLUSH", - "T88x_TI_TIMESTAMPS", - "T88x_TI_PCACHE_HIT", - "T88x_TI_PCACHE_MISS", - "T88x_TI_PCACHE_LINE", - "T88x_TI_PCACHE_STALL", - "T88x_TI_WRBUF_HIT", - "T88x_TI_WRBUF_MISS", - "T88x_TI_WRBUF_LINE", - "T88x_TI_WRBUF_PARTIAL", - "T88x_TI_WRBUF_STALL", - "T88x_TI_ACTIVE", - "T88x_TI_LOADING_DESC", - "T88x_TI_INDEX_WAIT", - "T88x_TI_INDEX_RANGE_WAIT", - "T88x_TI_VERTEX_WAIT", - "T88x_TI_PCACHE_WAIT", - "T88x_TI_WRBUF_WAIT", - "T88x_TI_BUS_READ", - "T88x_TI_BUS_WRITE", - "", - "", - "", - "", - "", - "T88x_TI_UTLB_HIT", - "T88x_TI_UTLB_NEW_MISS", - "T88x_TI_UTLB_REPLAY_FULL", - "T88x_TI_UTLB_REPLAY_MISS", - "T88x_TI_UTLB_STALL", + "", "", "", "T88x_TI_JOBS_PROCESSED", "T88x_TI_TRIANGLES", "T88x_TI_QUADS", "T88x_TI_POLYGONS", "T88x_TI_POINTS", + "T88x_TI_LINES", "T88x_TI_VCACHE_HIT", "T88x_TI_VCACHE_MISS", "T88x_TI_FRONT_FACING", "T88x_TI_BACK_FACING", + "T88x_TI_PRIM_VISIBLE", "T88x_TI_PRIM_CULLED", "T88x_TI_PRIM_CLIPPED", "T88x_TI_LEVEL0", "T88x_TI_LEVEL1", + "T88x_TI_LEVEL2", "T88x_TI_LEVEL3", "T88x_TI_LEVEL4", "T88x_TI_LEVEL5", "T88x_TI_LEVEL6", "T88x_TI_LEVEL7", + "T88x_TI_COMMAND_1", "T88x_TI_COMMAND_2", "T88x_TI_COMMAND_3", "T88x_TI_COMMAND_4", "T88x_TI_COMMAND_5_7", + "T88x_TI_COMMAND_8_15", "T88x_TI_COMMAND_16_63", "T88x_TI_COMMAND_64", "T88x_TI_COMPRESS_IN", + "T88x_TI_COMPRESS_OUT", "T88x_TI_COMPRESS_FLUSH", "T88x_TI_TIMESTAMPS", "T88x_TI_PCACHE_HIT", "T88x_TI_PCACHE_MISS", + "T88x_TI_PCACHE_LINE", "T88x_TI_PCACHE_STALL", "T88x_TI_WRBUF_HIT", "T88x_TI_WRBUF_MISS", "T88x_TI_WRBUF_LINE", + "T88x_TI_WRBUF_PARTIAL", "T88x_TI_WRBUF_STALL", "T88x_TI_ACTIVE", "T88x_TI_LOADING_DESC", "T88x_TI_INDEX_WAIT", + "T88x_TI_INDEX_RANGE_WAIT", "T88x_TI_VERTEX_WAIT", "T88x_TI_PCACHE_WAIT", "T88x_TI_WRBUF_WAIT", "T88x_TI_BUS_READ", + "T88x_TI_BUS_WRITE", "", "", "", "", "", "T88x_TI_UTLB_HIT", "T88x_TI_UTLB_NEW_MISS", "T88x_TI_UTLB_REPLAY_FULL", + "T88x_TI_UTLB_REPLAY_MISS", "T88x_TI_UTLB_STALL", /* Shader Core */ - "", - "", - "", - "", - "T88x_FRAG_ACTIVE", - "T88x_FRAG_PRIMITIVES", - "T88x_FRAG_PRIMITIVES_DROPPED", - "T88x_FRAG_CYCLES_DESC", - "T88x_FRAG_CYCLES_FPKQ_ACTIVE", - "T88x_FRAG_CYCLES_VERT", - "T88x_FRAG_CYCLES_TRISETUP", - "T88x_FRAG_CYCLES_EZS_ACTIVE", - "T88x_FRAG_THREADS", - "T88x_FRAG_DUMMY_THREADS", - "T88x_FRAG_QUADS_RAST", - "T88x_FRAG_QUADS_EZS_TEST", - "T88x_FRAG_QUADS_EZS_KILLED", - "T88x_FRAG_THREADS_LZS_TEST", - "T88x_FRAG_THREADS_LZS_KILLED", - "T88x_FRAG_CYCLES_NO_TILE", - "T88x_FRAG_NUM_TILES", - "T88x_FRAG_TRANS_ELIM", - "T88x_COMPUTE_ACTIVE", - "T88x_COMPUTE_TASKS", - "T88x_COMPUTE_THREADS", - "T88x_COMPUTE_CYCLES_DESC", - "T88x_TRIPIPE_ACTIVE", - "T88x_ARITH_WORDS", - "T88x_ARITH_CYCLES_REG", - "T88x_ARITH_CYCLES_L0", - "T88x_ARITH_FRAG_DEPEND", - "T88x_LS_WORDS", - "T88x_LS_ISSUES", - "T88x_LS_REISSUE_ATTR", - "T88x_LS_REISSUES_VARY", - "T88x_LS_VARY_RV_MISS", - "T88x_LS_VARY_RV_HIT", - "T88x_LS_NO_UNPARK", - "T88x_TEX_WORDS", - "T88x_TEX_BUBBLES", - "T88x_TEX_WORDS_L0", - "T88x_TEX_WORDS_DESC", - "T88x_TEX_ISSUES", - "T88x_TEX_RECIRC_FMISS", - "T88x_TEX_RECIRC_DESC", - "T88x_TEX_RECIRC_MULTI", - "T88x_TEX_RECIRC_PMISS", - "T88x_TEX_RECIRC_CONF", - "T88x_LSC_READ_HITS", - "T88x_LSC_READ_OP", - "T88x_LSC_WRITE_HITS", - "T88x_LSC_WRITE_OP", - "T88x_LSC_ATOMIC_HITS", - "T88x_LSC_ATOMIC_OP", - "T88x_LSC_LINE_FETCHES", - "T88x_LSC_DIRTY_LINE", - "T88x_LSC_SNOOPS", - "T88x_AXI_TLB_STALL", - "T88x_AXI_TLB_MISS", - "T88x_AXI_TLB_TRANSACTION", - "T88x_LS_TLB_MISS", - "T88x_LS_TLB_HIT", - "T88x_AXI_BEATS_READ", - "T88x_AXI_BEATS_WRITTEN", + "", "", "", "", "T88x_FRAG_ACTIVE", "T88x_FRAG_PRIMITIVES", "T88x_FRAG_PRIMITIVES_DROPPED", "T88x_FRAG_CYCLES_DESC", + "T88x_FRAG_CYCLES_FPKQ_ACTIVE", "T88x_FRAG_CYCLES_VERT", "T88x_FRAG_CYCLES_TRISETUP", "T88x_FRAG_CYCLES_EZS_ACTIVE", + "T88x_FRAG_THREADS", "T88x_FRAG_DUMMY_THREADS", "T88x_FRAG_QUADS_RAST", "T88x_FRAG_QUADS_EZS_TEST", + "T88x_FRAG_QUADS_EZS_KILLED", "T88x_FRAG_THREADS_LZS_TEST", "T88x_FRAG_THREADS_LZS_KILLED", + "T88x_FRAG_CYCLES_NO_TILE", "T88x_FRAG_NUM_TILES", "T88x_FRAG_TRANS_ELIM", "T88x_COMPUTE_ACTIVE", + "T88x_COMPUTE_TASKS", "T88x_COMPUTE_THREADS", "T88x_COMPUTE_CYCLES_DESC", "T88x_TRIPIPE_ACTIVE", "T88x_ARITH_WORDS", + "T88x_ARITH_CYCLES_REG", "T88x_ARITH_CYCLES_L0", "T88x_ARITH_FRAG_DEPEND", "T88x_LS_WORDS", "T88x_LS_ISSUES", + "T88x_LS_REISSUE_ATTR", "T88x_LS_REISSUES_VARY", "T88x_LS_VARY_RV_MISS", "T88x_LS_VARY_RV_HIT", "T88x_LS_NO_UNPARK", + "T88x_TEX_WORDS", "T88x_TEX_BUBBLES", "T88x_TEX_WORDS_L0", "T88x_TEX_WORDS_DESC", "T88x_TEX_ISSUES", + "T88x_TEX_RECIRC_FMISS", "T88x_TEX_RECIRC_DESC", "T88x_TEX_RECIRC_MULTI", "T88x_TEX_RECIRC_PMISS", + "T88x_TEX_RECIRC_CONF", "T88x_LSC_READ_HITS", "T88x_LSC_READ_OP", "T88x_LSC_WRITE_HITS", "T88x_LSC_WRITE_OP", + "T88x_LSC_ATOMIC_HITS", "T88x_LSC_ATOMIC_OP", "T88x_LSC_LINE_FETCHES", "T88x_LSC_DIRTY_LINE", "T88x_LSC_SNOOPS", + "T88x_AXI_TLB_STALL", "T88x_AXI_TLB_MISS", "T88x_AXI_TLB_TRANSACTION", "T88x_LS_TLB_MISS", "T88x_LS_TLB_HIT", + "T88x_AXI_BEATS_READ", "T88x_AXI_BEATS_WRITTEN", /*L2 and MMU */ - "", - "", - "", - "", - "T88x_MMU_HIT", - "T88x_MMU_NEW_MISS", - "T88x_MMU_REPLAY_FULL", - "T88x_MMU_REPLAY_MISS", - "T88x_MMU_TABLE_WALK", - "T88x_MMU_REQUESTS", - "", - "", - "T88x_UTLB_HIT", - "T88x_UTLB_NEW_MISS", - "T88x_UTLB_REPLAY_FULL", - "T88x_UTLB_REPLAY_MISS", - "T88x_UTLB_STALL", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "T88x_L2_EXT_WRITE_BEATS", - "T88x_L2_EXT_READ_BEATS", - "T88x_L2_ANY_LOOKUP", - "T88x_L2_READ_LOOKUP", - "T88x_L2_SREAD_LOOKUP", - "T88x_L2_READ_REPLAY", - "T88x_L2_READ_SNOOP", - "T88x_L2_READ_HIT", - "T88x_L2_CLEAN_MISS", - "T88x_L2_WRITE_LOOKUP", - "T88x_L2_SWRITE_LOOKUP", - "T88x_L2_WRITE_REPLAY", - "T88x_L2_WRITE_SNOOP", - "T88x_L2_WRITE_HIT", - "T88x_L2_EXT_READ_FULL", - "", - "T88x_L2_EXT_WRITE_FULL", - "T88x_L2_EXT_R_W_HAZARD", - "T88x_L2_EXT_READ", - "T88x_L2_EXT_READ_LINE", - "T88x_L2_EXT_WRITE", - "T88x_L2_EXT_WRITE_LINE", - "T88x_L2_EXT_WRITE_SMALL", - "T88x_L2_EXT_BARRIER", - "T88x_L2_EXT_AR_STALL", - "T88x_L2_EXT_R_BUF_FULL", - "T88x_L2_EXT_RD_BUF_FULL", - "T88x_L2_EXT_R_RAW", - "T88x_L2_EXT_W_STALL", - "T88x_L2_EXT_W_BUF_FULL", - "T88x_L2_EXT_R_BUF_FULL", - "T88x_L2_TAG_HAZARD", - "T88x_L2_SNOOP_FULL", - "T88x_L2_REPLAY_FULL" -}; + "", "", "", "", "T88x_MMU_HIT", "T88x_MMU_NEW_MISS", "T88x_MMU_REPLAY_FULL", "T88x_MMU_REPLAY_MISS", + "T88x_MMU_TABLE_WALK", "T88x_MMU_REQUESTS", "", "", "T88x_UTLB_HIT", "T88x_UTLB_NEW_MISS", "T88x_UTLB_REPLAY_FULL", + "T88x_UTLB_REPLAY_MISS", "T88x_UTLB_STALL", "", "", "", "", "", "", "", "", "", "", "", "", "", + "T88x_L2_EXT_WRITE_BEATS", "T88x_L2_EXT_READ_BEATS", "T88x_L2_ANY_LOOKUP", "T88x_L2_READ_LOOKUP", + "T88x_L2_SREAD_LOOKUP", "T88x_L2_READ_REPLAY", "T88x_L2_READ_SNOOP", "T88x_L2_READ_HIT", "T88x_L2_CLEAN_MISS", + "T88x_L2_WRITE_LOOKUP", "T88x_L2_SWRITE_LOOKUP", "T88x_L2_WRITE_REPLAY", "T88x_L2_WRITE_SNOOP", "T88x_L2_WRITE_HIT", + "T88x_L2_EXT_READ_FULL", "", "T88x_L2_EXT_WRITE_FULL", "T88x_L2_EXT_R_W_HAZARD", "T88x_L2_EXT_READ", + "T88x_L2_EXT_READ_LINE", "T88x_L2_EXT_WRITE", "T88x_L2_EXT_WRITE_LINE", "T88x_L2_EXT_WRITE_SMALL", + "T88x_L2_EXT_BARRIER", "T88x_L2_EXT_AR_STALL", "T88x_L2_EXT_R_BUF_FULL", "T88x_L2_EXT_RD_BUF_FULL", + "T88x_L2_EXT_R_RAW", "T88x_L2_EXT_W_STALL", "T88x_L2_EXT_W_BUF_FULL", "T88x_L2_EXT_R_BUF_FULL", + "T88x_L2_TAG_HAZARD", "T88x_L2_SNOOP_FULL", "T88x_L2_REPLAY_FULL"}; -static const char *const hardware_counters_mali_tHEx[] = -{ +static const char *const hardware_counters_mali_tHEx[] = { /* Performance counters for the Job Manager */ "", "", @@ -2456,8 +709,7 @@ static const char *const hardware_counters_mali_tHEx[] = "", }; -static const char *const hardware_counters_mali_tMIx[] = -{ +static const char *const hardware_counters_mali_tMIx[] = { /* Performance counters for the Job Manager */ "", "", @@ -2723,8 +975,7 @@ static const char *const hardware_counters_mali_tMIx[] = "", }; -static const char *const hardware_counters_mali_tSIx[] = -{ +static const char *const hardware_counters_mali_tSIx[] = { /* Performance counters for the Job Manager */ "", "", @@ -3018,40 +1269,61 @@ struct CounterMapping const char *const *names_lut; }; -static const CounterMapping products[] = -{ +static const CounterMapping products[] = { { - PRODUCT_ID_MASK_OLD, PRODUCT_ID_T60X, hardware_counters_mali_t60x, + PRODUCT_ID_MASK_OLD, + PRODUCT_ID_T60X, + hardware_counters_mali_t60x, }, { - PRODUCT_ID_MASK_OLD, PRODUCT_ID_T62X, hardware_counters_mali_t62x, + PRODUCT_ID_MASK_OLD, + PRODUCT_ID_T62X, + hardware_counters_mali_t62x, }, { - PRODUCT_ID_MASK_OLD, PRODUCT_ID_T72X, hardware_counters_mali_t72x, + PRODUCT_ID_MASK_OLD, + PRODUCT_ID_T72X, + hardware_counters_mali_t72x, }, { - PRODUCT_ID_MASK_OLD, PRODUCT_ID_T76X, hardware_counters_mali_t76x, + PRODUCT_ID_MASK_OLD, + PRODUCT_ID_T76X, + hardware_counters_mali_t76x, }, { - PRODUCT_ID_MASK_OLD, PRODUCT_ID_T82X, hardware_counters_mali_t82x, + PRODUCT_ID_MASK_OLD, + PRODUCT_ID_T82X, + hardware_counters_mali_t82x, }, { - PRODUCT_ID_MASK_OLD, PRODUCT_ID_T83X, hardware_counters_mali_t83x, + PRODUCT_ID_MASK_OLD, + PRODUCT_ID_T83X, + hardware_counters_mali_t83x, }, { - PRODUCT_ID_MASK_OLD, PRODUCT_ID_T86X, hardware_counters_mali_t86x, + PRODUCT_ID_MASK_OLD, + PRODUCT_ID_T86X, + hardware_counters_mali_t86x, }, { - PRODUCT_ID_MASK_OLD, PRODUCT_ID_TFRX, hardware_counters_mali_t88x, + PRODUCT_ID_MASK_OLD, + PRODUCT_ID_TFRX, + hardware_counters_mali_t88x, }, { - PRODUCT_ID_MASK_NEW, PRODUCT_ID_TMIX, hardware_counters_mali_tMIx, + PRODUCT_ID_MASK_NEW, + PRODUCT_ID_TMIX, + hardware_counters_mali_tMIx, }, { - PRODUCT_ID_MASK_NEW, PRODUCT_ID_THEX, hardware_counters_mali_tHEx, + PRODUCT_ID_MASK_NEW, + PRODUCT_ID_THEX, + hardware_counters_mali_tHEx, }, { - PRODUCT_ID_MASK_NEW, PRODUCT_ID_TSIX, hardware_counters_mali_tSIx, + PRODUCT_ID_MASK_NEW, + PRODUCT_ID_TSIX, + hardware_counters_mali_tSIx, }, }; diff --git a/tests/framework/printers/JSONPrinter.cpp b/tests/framework/printers/JSONPrinter.cpp index 84b2d231141..ec0da78428e 100644 --- a/tests/framework/printers/JSONPrinter.cpp +++ b/tests/framework/printers/JSONPrinter.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019,2021 Arm Limited. + * Copyright (c) 2017-2019,2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -25,7 +25,6 @@ #include "../Framework.h" #include "../instruments/Measurement.h" - #include namespace arm_compute @@ -36,7 +35,7 @@ namespace framework { void JSONPrinter::print_separator(bool &flag) { - if(flag) + if (flag) { flag = false; } @@ -52,7 +51,7 @@ void JSONPrinter::print_strings(T &&first, T &&last) bool first_entry = true; std::stringstream log; - while(first != last) + while (first != last) { print_separator(first_entry); @@ -60,7 +59,7 @@ void JSONPrinter::print_strings(T &&first, T &&last) log.str(*first); - for(std::string line; !std::getline(log, line).fail();) + for (std::string line; !std::getline(log, line).fail();) { *_stream << line << "; "; } @@ -117,13 +116,14 @@ void JSONPrinter::print_list_tests(const std::vector &infos) { *_stream << R"(, "list_tests" : {)"; bool first = true; - for(auto const &info : infos) + for (auto const &info : infos) { - if(!first) + if (!first) { *_stream << ","; } - *_stream << R"(")" << info.id << R"(" : { "name": ")" << info.name << R"(", "mode": ")" << info.mode << R"(", "status" : ")" << info.status << R"(" })"; + *_stream << R"(")" << info.id << R"(" : { "name": ")" << info.name << R"(", "mode": ")" << info.mode + << R"(", "status" : ")" << info.status << R"(" })"; first = false; } *_stream << "}"; @@ -154,7 +154,7 @@ void JSONPrinter::print_errors_footer() void JSONPrinter::print_error(const std::exception &error, bool expected) { - if(expected) + if (expected) { _expected_errors.emplace_back(error.what()); } @@ -171,7 +171,7 @@ void JSONPrinter::print_info(const std::string &info) void JSONPrinter::print_profiler_header(const std::string &header_data) { - if(header_data.size() > 0) + if (header_data.size() > 0) { print_separator(_first_test_entry); } @@ -183,13 +183,13 @@ void JSONPrinter::print_measurements(const Profiler::MeasurementsMap &measuremen print_separator(_first_test_entry); *_stream << R"("measurements" : {)"; - for(auto i_it = measurements.cbegin(), i_end = measurements.cend(); i_it != i_end;) + for (auto i_it = measurements.cbegin(), i_end = measurements.cend(); i_it != i_end;) { *_stream << R"(")" << i_it->first << R"(" : {)"; - auto measurement_to_string = [](const Measurement & measurement) + auto measurement_to_string = [](const Measurement &measurement) { - if(measurement.raw_data().size() == 1) + if (measurement.raw_data().size() == 1) { return measurement.raw_data().front(); } @@ -202,11 +202,12 @@ void JSONPrinter::print_measurements(const Profiler::MeasurementsMap &measuremen return str.str(); } }; - *_stream << R"("raw" : [)" << join(i_it->second.begin(), i_it->second.end(), ",", measurement_to_string) << "],"; + *_stream << R"("raw" : [)" << join(i_it->second.begin(), i_it->second.end(), ",", measurement_to_string) + << "],"; *_stream << R"("unit" : ")" << i_it->second.begin()->unit() << R"(")"; *_stream << "}"; - if(++i_it != i_end) + if (++i_it != i_end) { *_stream << ","; } diff --git a/tests/framework/printers/JSONPrinter.h b/tests/framework/printers/JSONPrinter.h index ad996708e7d..2bdcb37ada9 100644 --- a/tests/framework/printers/JSONPrinter.h +++ b/tests/framework/printers/JSONPrinter.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017,2021 Arm Limited. + * Copyright (c) 2017,2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,11 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_JSONPRINTER -#define ARM_COMPUTE_TEST_JSONPRINTER +#ifndef ACL_TESTS_FRAMEWORK_PRINTERS_JSONPRINTER_H +#define ACL_TESTS_FRAMEWORK_PRINTERS_JSONPRINTER_H #include "Printer.h" - #include namespace arm_compute @@ -64,11 +63,11 @@ class JSONPrinter : public Printer std::list _errors{}; std::list _expected_errors{}; - bool _first_entry{ true }; - bool _first_test{ true }; - bool _first_test_entry{ true }; + bool _first_entry{true}; + bool _first_test{true}; + bool _first_test_entry{true}; }; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_JSONPRINTER */ +#endif // ACL_TESTS_FRAMEWORK_PRINTERS_JSONPRINTER_H diff --git a/tests/framework/printers/PrettyPrinter.cpp b/tests/framework/printers/PrettyPrinter.cpp index 529ff2c2d9c..a42c2bb20d1 100644 --- a/tests/framework/printers/PrettyPrinter.cpp +++ b/tests/framework/printers/PrettyPrinter.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019,2021 Arm Limited. + * Copyright (c) 2017-2019,2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -26,7 +26,6 @@ #include "../Framework.h" #include "../instruments/InstrumentsStats.h" #include "../instruments/Measurement.h" - #include namespace arm_compute @@ -37,7 +36,7 @@ namespace framework { std::string PrettyPrinter::begin_color(const std::string &color) const { - if(!_color_output) + if (!_color_output) { return ""; } @@ -47,7 +46,7 @@ std::string PrettyPrinter::begin_color(const std::string &color) const std::string PrettyPrinter::end_color() const { - if(!_color_output) + if (!_color_output) { return ""; } @@ -111,7 +110,7 @@ void PrettyPrinter::print_error(const std::exception &error, bool expected) void PrettyPrinter::print_list_tests(const std::vector &infos) { - for(auto const &info : infos) + for (auto const &info : infos) { *_stream << "[" << info.id << ", " << info.mode << ", " << info.status << "] " << info.name << "\n"; } @@ -124,7 +123,7 @@ void PrettyPrinter::print_profiler_header(const std::string &header_data) void PrettyPrinter::print_measurements(const Profiler::MeasurementsMap &measurements) { - for(const auto &instrument : measurements) + for (const auto &instrument : measurements) { *_stream << begin_color("3") << " " << instrument.first << ":"; @@ -132,7 +131,7 @@ void PrettyPrinter::print_measurements(const Profiler::MeasurementsMap &measurem *_stream << " "; *_stream << "AVG=" << stats.mean() << " " << stats.max().unit(); - if(instrument.second.size() > 1) + if (instrument.second.size() > 1) { *_stream << ", STDDEV=" << arithmetic_to_string(stats.relative_standard_deviation(), 2) << " %"; *_stream << ", MIN=" << stats.min(); diff --git a/tests/framework/printers/PrettyPrinter.h b/tests/framework/printers/PrettyPrinter.h index b9d5d3957cd..f3b044f7650 100644 --- a/tests/framework/printers/PrettyPrinter.h +++ b/tests/framework/printers/PrettyPrinter.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017,2021 Arm Limited. + * Copyright (c) 2017,2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_PRETTYPRINTER -#define ARM_COMPUTE_TEST_PRETTYPRINTER +#ifndef ACL_TESTS_FRAMEWORK_PRINTERS_PRETTYPRINTER_H +#define ACL_TESTS_FRAMEWORK_PRINTERS_PRETTYPRINTER_H #include "Printer.h" @@ -63,10 +63,10 @@ class PrettyPrinter : public Printer std::string begin_color(const std::string &color) const; std::string end_color() const; - bool _color_output{ true }; + bool _color_output{true}; }; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_PRETTYPRINTER */ +#endif // ACL_TESTS_FRAMEWORK_PRINTERS_PRETTYPRINTER_H diff --git a/tests/framework/printers/Printer.cpp b/tests/framework/printers/Printer.cpp index 12e2460aef0..1e8d58570ab 100644 --- a/tests/framework/printers/Printer.cpp +++ b/tests/framework/printers/Printer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -29,8 +29,7 @@ namespace test { namespace framework { -Printer::Printer(std::ostream &stream) - : _stream{ &stream } +Printer::Printer(std::ostream &stream) : _stream{&stream} { } diff --git a/tests/framework/printers/Printer.h b/tests/framework/printers/Printer.h index af0209788cc..a7e08c5cd22 100644 --- a/tests/framework/printers/Printer.h +++ b/tests/framework/printers/Printer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018,2021 Arm Limited. + * Copyright (c) 2017-2018,2021, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_PRINTER -#define ARM_COMPUTE_TEST_PRINTER +#ifndef ACL_TESTS_FRAMEWORK_PRINTERS_PRINTER_H +#define ACL_TESTS_FRAMEWORK_PRINTERS_PRINTER_H #include "tests/framework/Profiler.h" @@ -144,9 +144,9 @@ class Printer void set_stream(std::ostream &stream); protected: - std::ostream *_stream{ &std::cout }; + std::ostream *_stream{&std::cout}; }; } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_PRINTER */ +#endif // ACL_TESTS_FRAMEWORK_PRINTERS_PRINTER_H diff --git a/tests/framework/printers/Printers.cpp b/tests/framework/printers/Printers.cpp index 9ba3098432a..a97c9ece7d8 100644 --- a/tests/framework/printers/Printers.cpp +++ b/tests/framework/printers/Printers.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,7 +24,6 @@ #include "Printers.h" #include "../Utils.h" - #include #include @@ -36,18 +35,17 @@ namespace framework { LogFormat log_format_from_name(const std::string &name) { - static const std::map formats = - { - { "pretty", LogFormat::PRETTY }, - { "none", LogFormat::NONE }, - { "json", LogFormat::JSON }, + static const std::map formats = { + {"pretty", LogFormat::PRETTY}, + {"none", LogFormat::NONE}, + {"json", LogFormat::JSON}, }; try { return formats.at(tolower(name)); } - catch(const std::out_of_range &) + catch (const std::out_of_range &) { throw std::invalid_argument(name); } diff --git a/tests/framework/printers/Printers.h b/tests/framework/printers/Printers.h index acbddf0bd40..0a05c3944ef 100644 --- a/tests/framework/printers/Printers.h +++ b/tests/framework/printers/Printers.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Arm Limited. + * Copyright (c) 2017, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_PRINTERS -#define ARM_COMPUTE_TEST_PRINTERS +#ifndef ACL_TESTS_FRAMEWORK_PRINTERS_PRINTERS_H +#define ACL_TESTS_FRAMEWORK_PRINTERS_PRINTERS_H #include "JSONPrinter.h" #include "PrettyPrinter.h" @@ -52,7 +52,7 @@ inline ::std::stringstream &operator>>(::std::stringstream &stream, LogFormat &f inline ::std::stringstream &operator<<(::std::stringstream &stream, LogFormat format) { - switch(format) + switch (format) { case LogFormat::PRETTY: stream << "PRETTY"; @@ -72,4 +72,4 @@ inline ::std::stringstream &operator<<(::std::stringstream &stream, LogFormat fo } // namespace framework } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_PRINTERS */ +#endif // ACL_TESTS_FRAMEWORK_PRINTERS_PRINTERS_H diff --git a/tests/instruments/Helpers.h b/tests/instruments/Helpers.h index be463b2e528..1b7667a65bd 100644 --- a/tests/instruments/Helpers.h +++ b/tests/instruments/Helpers.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Arm Limited. + * Copyright (c) 2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_TEST_INSTRUMENTS_UTILS_H -#define ARM_COMPUTE_TEST_INSTRUMENTS_UTILS_H +#ifndef ACL_TESTS_INSTRUMENTS_HELPERS_H +#define ACL_TESTS_INSTRUMENTS_HELPERS_H #include "arm_compute/runtime/RuntimeContext.h" + #include "tests/framework/instruments/Instruments.h" namespace arm_compute @@ -57,7 +58,7 @@ class ContextSchedulerUser : public framework::ISchedulerUser // Overridden inherited methods void intercept_scheduler(std::unique_ptr interceptor) { - if(interceptor != nullptr) + if (interceptor != nullptr) { _interceptor = std::move(interceptor); _scheduler_to_use = _interceptor.get(); @@ -83,4 +84,4 @@ class ContextSchedulerUser : public framework::ISchedulerUser }; } // namespace test } // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_INSTRUMENTS_UTILS_H */ +#endif // ACL_TESTS_INSTRUMENTS_HELPERS_H diff --git a/tests/main.cpp b/tests/main.cpp index 79b83bb40c5..ffa8fe0d731 100644 --- a/tests/main.cpp +++ b/tests/main.cpp @@ -22,17 +22,18 @@ * SOFTWARE. */ #include "arm_compute/core/Version.h" + #include "support/StringSupport.h" #include "tests/AssetsLibrary.h" +#include "tests/framework/command_line/CommonOptions.h" #include "tests/framework/DatasetModes.h" #include "tests/framework/Exceptions.h" #include "tests/framework/Framework.h" +#include "tests/framework/instruments/Instruments.h" #include "tests/framework/Macros.h" #include "tests/framework/ParametersLibrary.h" -#include "tests/framework/Profiler.h" -#include "tests/framework/command_line/CommonOptions.h" -#include "tests/framework/instruments/Instruments.h" #include "tests/framework/printers/Printers.h" +#include "tests/framework/Profiler.h" #include "tests/instruments/Helpers.h" #include "utils/command_line/CommandLineOptions.h" #include "utils/command_line/CommandLineParser.h" @@ -43,9 +44,11 @@ #include "arm_compute/runtime/CL/CLHelpers.h" #include "arm_compute/runtime/CL/CLScheduler.h" #include "arm_compute/runtime/CL/CLTuner.h" + #include "utils/TypePrinter.h" #endif /* ARM_COMPUTE_CL */ #include "arm_compute/runtime/Scheduler.h" + #include "src/common/cpuinfo/CpuModel.h" #include @@ -63,7 +66,7 @@ namespace std::string command_line(int argc, char **argv) { std::stringstream ss; - for(int i = 0; i < argc; i++) + for (int i = 0; i < argc; i++) { ss << argv[i] << " "; } @@ -100,17 +103,13 @@ int main(int argc, char **argv) utils::CommandLineParser parser; - std::set allowed_modes - { - framework::DatasetMode::DISABLED, - framework::DatasetMode::PRECOMMIT, - framework::DatasetMode::NIGHTLY, - framework::DatasetMode::ALL - }; + std::set allowed_modes{framework::DatasetMode::DISABLED, framework::DatasetMode::PRECOMMIT, + framework::DatasetMode::NIGHTLY, framework::DatasetMode::ALL}; framework::CommonOptions options(parser); - auto dataset_mode = parser.add_option>("mode", allowed_modes, framework::DatasetMode::PRECOMMIT); + auto dataset_mode = parser.add_option>("mode", allowed_modes, + framework::DatasetMode::PRECOMMIT); dataset_mode->set_help("For managed datasets select which group to use"); auto filter = parser.add_option>("filter", ".*"); filter->set_help("Regular expression to select test cases"); @@ -119,7 +118,8 @@ int main(int argc, char **argv) auto stop_on_error = parser.add_option("stop-on-error"); stop_on_error->set_help("Stop execution after the first failed test (useful for debugging)"); auto seed = parser.add_option>("seed"); - seed->set_help("Global seed for random number generation. When not set, each test iteration will use different random seed"); + seed->set_help( + "Global seed for random number generation. When not set, each test iteration will use different random seed"); auto list_tests = parser.add_option("list-tests", false); list_tests->set_help("List all test names"); auto test_instruments = parser.add_option("test-instruments", false); @@ -134,14 +134,11 @@ int main(int argc, char **argv) auto enable_tuner = parser.add_option("enable-tuner"); enable_tuner->set_help("Enable OpenCL dynamic tuner"); - const std::set supported_tuner_modes - { - CLTunerMode::EXHAUSTIVE, - CLTunerMode::NORMAL, - CLTunerMode::RAPID - }; - auto tuner_mode = parser.add_option>("tuner-mode", supported_tuner_modes, CLTunerMode::NORMAL); - tuner_mode->set_help("Configures the time taken by the tuner to tune. Slow tuner produces the most performant LWS configuration"); + const std::set supported_tuner_modes{CLTunerMode::EXHAUSTIVE, CLTunerMode::NORMAL, CLTunerMode::RAPID}; + auto tuner_mode = + parser.add_option>("tuner-mode", supported_tuner_modes, CLTunerMode::NORMAL); + tuner_mode->set_help( + "Configures the time taken by the tuner to tune. Slow tuner produces the most performant LWS configuration"); auto tuner_file = parser.add_option>("tuner-file", ""); tuner_file->set_help("File to load/save CLTuner values"); @@ -154,16 +151,18 @@ int main(int argc, char **argv) auto cooldown_sec = parser.add_option>("delay", -1.f); cooldown_sec->set_help("Delay to add between test executions in seconds"); auto configure_only = parser.add_option("configure-only", false); - configure_only->set_help("Only configures kernels, without allocating, running or validating. Needed in order to validate OpenCL kernel run-time compilation, without necessarily running or validating the kernels' execution"); + configure_only->set_help( + "Only configures kernels, without allocating, running or validating. Needed in order to validate OpenCL kernel " + "run-time compilation, without necessarily running or validating the kernels' execution"); auto print_iterations_figures = parser.add_option("print_iterations_figures", false); - print_iterations_figures->set_help("When using instruments, this option prints the time taken by each iteration of the test"); - + print_iterations_figures->set_help( + "When using instruments, this option prints the time taken by each iteration of the test"); try { parser.parse(argc, argv); - if(options.help->is_set() && options.help->value()) + if (options.help->is_set() && options.help->value()) { parser.print_help(argv[0]); return 0; @@ -188,15 +187,16 @@ int main(int argc, char **argv) #ifdef ARM_COMPUTE_CL CLTuner cl_tuner(false); CLGEMMHeuristicsHandle gemm_heuristics; - if(opencl_is_available()) + if (opencl_is_available()) { auto ctx_dev_err = create_opencl_context_and_device(CLBackendType::Native); ARM_COMPUTE_ERROR_ON_MSG(std::get<2>(ctx_dev_err) != CL_SUCCESS, "Failed to create OpenCL context"); gemm_heuristics.reload_from_file(mlgo_file->value()); - CLScheduler::get().default_init_with_context(std::get<1>(ctx_dev_err), std::get<0>(ctx_dev_err), &cl_tuner, &gemm_heuristics); + CLScheduler::get().default_init_with_context(std::get<1>(ctx_dev_err), std::get<0>(ctx_dev_err), &cl_tuner, + &gemm_heuristics); } - if(enable_tuner->is_set()) + if (enable_tuner->is_set()) { cl_tuner.set_tune_new_kernels(enable_tuner->value()); @@ -204,38 +204,38 @@ int main(int argc, char **argv) cl_tuner.set_tuner_mode(tuner_mode->value()); // If that's the first run then the file won't exist yet - if(file_exists(tuner_file->value())) + if (file_exists(tuner_file->value())) { cl_tuner.load_from_file(tuner_file->value()); } } - else if(!tuner_file->value().empty()) + else if (!tuner_file->value().empty()) { //If we're not tuning and the file doesn't exist then we should raise an error: cl_tuner.load_from_file(tuner_file->value()); } #endif /* ARM_COMPUTE_CL */ - if(options.log_level->value() > framework::LogLevel::NONE) + if (options.log_level->value() > framework::LogLevel::NONE) { - for(auto &p : printers) + for (auto &p : printers) { p->print_global_header(); } } - const std::random_device::result_type seed_value = (seed->is_set()) ? seed->value(): std::random_device()(); - const bool randomize_seeds = !seed->is_set() && (options.iterations->value() > 1); + const std::random_device::result_type seed_value = (seed->is_set()) ? seed->value() : std::random_device()(); + const bool randomize_seeds = !seed->is_set() && (options.iterations->value() > 1); - if(options.log_level->value() >= framework::LogLevel::CONFIG) + if (options.log_level->value() >= framework::LogLevel::CONFIG) { - for(auto &p : printers) + for (auto &p : printers) { p->print_entry("Version", build_information()); p->print_entry("CommandLine", command_line(argc, argv)); auto seed_str = randomize_seeds ? "Dynamic" : support::cpp11::to_string(seed_value); p->print_entry("Seed", seed_str); #ifdef ARM_COMPUTE_CL - if(opencl_is_available()) + if (opencl_is_available()) { p->print_entry("CL_DEVICE_VERSION", CLKernelLibrary::get().get_device_version()); } @@ -260,7 +260,7 @@ int main(int argc, char **argv) p->print_entry("cpu_has_i8mm", support::cpp11::to_string(cpu_info.has_i8mm())); p->print_entry("cpu_has_fhm", support::cpp11::to_string(cpu_info.has_fhm())); - for(unsigned int j = 0; j < num_cpus; ++j) + for (unsigned int j = 0; j < num_cpus; ++j) { const CPUModel model = cpu_info.get_cpu_model(j); p->print_entry("CPU" + support::cpp11::to_string(j), cpuinfo::cpu_model_to_string(model)); @@ -281,20 +281,20 @@ int main(int argc, char **argv) // Initialize framework framework::FrameworkConfig fconfig; - fconfig.instruments = options.instruments->value(); - fconfig.name_filter = filter->value(); - fconfig.id_filter = filter_id->value(); - fconfig.num_iterations = options.iterations->value(); - fconfig.mode = dataset_mode->value(); - fconfig.log_level = options.log_level->value(); - fconfig.cooldown_sec = cooldown_sec->value(); - fconfig.configure_only = configure_only->value(); - fconfig.print_rerun_cmd = print_rerun_command->value(); - fconfig.seed = seed_value; - fconfig.print_iterations= print_iterations_figures->value(); + fconfig.instruments = options.instruments->value(); + fconfig.name_filter = filter->value(); + fconfig.id_filter = filter_id->value(); + fconfig.num_iterations = options.iterations->value(); + fconfig.mode = dataset_mode->value(); + fconfig.log_level = options.log_level->value(); + fconfig.cooldown_sec = cooldown_sec->value(); + fconfig.configure_only = configure_only->value(); + fconfig.print_rerun_cmd = print_rerun_command->value(); + fconfig.seed = seed_value; + fconfig.print_iterations = print_iterations_figures->value(); framework.init(fconfig); - for(auto &p : printers) + for (auto &p : printers) { framework.add_printer(p.get()); } @@ -303,18 +303,20 @@ int main(int argc, char **argv) framework.set_error_on_missing_assets(error_on_missing_assets->value()); if (randomize_seeds) { - framework.set_prepare_function([&] (){ + framework.set_prepare_function( + [&]() + { std::random_device::result_type seed = std::random_device()(); library->set_seed(seed); framework.set_seed(seed); - }); + }); } bool success = true; - if(list_tests->value()) + if (list_tests->value()) { - for(auto &p : printers) + for (auto &p : printers) { p->print_list_tests(framework.test_infos()); p->print_global_footer(); @@ -323,12 +325,12 @@ int main(int argc, char **argv) return 0; } - if(test_instruments->value()) + if (test_instruments->value()) { framework::Profiler profiler = framework.get_profiler(); profiler.start(); profiler.stop(); - for(auto &p : printers) + for (auto &p : printers) { p->print_measurements(profiler.measurements()); } @@ -339,26 +341,26 @@ int main(int argc, char **argv) library = std::make_unique(assets->value(), seed_value); fixed_library = std::make_unique(assets->value(), fixed_seed); - if(!parser.validate()) + if (!parser.validate()) { return 1; } success = framework.run(); - if(options.log_level->value() > framework::LogLevel::NONE) + if (options.log_level->value() > framework::LogLevel::NONE) { - for(auto &p : printers) + for (auto &p : printers) { p->print_global_footer(); } } #ifdef ARM_COMPUTE_CL - if(opencl_is_available()) + if (opencl_is_available()) { CLScheduler::get().sync(); - if(enable_tuner->is_set() && enable_tuner->value() && tuner_file->is_set()) + if (enable_tuner->is_set() && enable_tuner->value() && tuner_file->is_set()) { cl_tuner.save_to_file(tuner_file->value()); } @@ -367,11 +369,11 @@ int main(int argc, char **argv) return (success ? 0 : 1); } - catch(const std::exception &error) + catch (const std::exception &error) { std::cerr << error.what() << "\n"; - if(options.throw_errors->value()) + if (options.throw_errors->value()) { throw; } diff --git a/tests/validate_examples/RunExample.cpp b/tests/validate_examples/RunExample.cpp index 36bf5875514..d02e3291753 100644 --- a/tests/validate_examples/RunExample.cpp +++ b/tests/validate_examples/RunExample.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2021, 2023 Arm Limited. + * Copyright (c) 2018-2021, 2023, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,19 +24,20 @@ #include "utils/Utils.h" #define BENCHMARK_EXAMPLES -#include "utils/Utils.cpp" - -#include "ValidateExample.h" +#include "arm_compute/core/Version.h" #include "arm_compute/runtime/CL/CLHelpers.h" #include "arm_compute/runtime/Scheduler.h" -#include "arm_compute/core/Version.h" + #include "tests/AssetsLibrary.h" -#include "tests/Globals.h" -#include "tests/framework/Framework.h" -#include "tests/framework/Macros.h" #include "tests/framework/command_line/CommonOptions.h" +#include "tests/framework/Framework.h" #include "tests/framework/instruments/Instruments.h" +#include "tests/framework/Macros.h" +#include "tests/Globals.h" #include "utils/command_line/CommandLineParser.h" +#include "utils/Utils.cpp" + +#include "ValidateExample.h" #ifdef ARM_COMPUTE_CL #include "arm_compute/runtime/CL/CLScheduler.h" @@ -65,7 +66,7 @@ namespace std::string command_line(int argc, char **argv) { std::stringstream ss; - for(int i = 0; i < argc; i++) + for (int i = 0; i < argc; i++) { ss << argv[i] << " "; } @@ -84,16 +85,16 @@ class ExampleTest : public arm_compute::test::framework::TestCase } void do_run() override { - if(_is_setup) + if (_is_setup) { g_example->do_run(); } } void do_teardown() override { - if(_is_setup) + if (_is_setup) { - if(validate) + if (validate) { g_example->do_validate(); } @@ -103,7 +104,7 @@ class ExampleTest : public arm_compute::test::framework::TestCase } private: - bool _is_setup{ false }; + bool _is_setup{false}; }; } // namespace @@ -122,7 +123,7 @@ int run_example(int argc, char **argv, std::unique_ptr example) parser.parse(argc, argv); - if(options.help->is_set() && options.help->value()) + if (options.help->is_set() && options.help->value()) { parser.print_help(argv[0]); return 0; @@ -132,7 +133,7 @@ int run_example(int argc, char **argv, std::unique_ptr example) g_example = std::move(example); g_example_argv.clear(); g_example_argv.emplace_back(argv[0]); - for(auto &arg : example_args->value()) + for (auto &arg : example_args->value()) { g_example_argv.emplace_back(const_cast(arg.c_str())); // NOLINT } @@ -140,21 +141,21 @@ int run_example(int argc, char **argv, std::unique_ptr example) library = std::make_unique("." /* Only using random values */, seed->value()); fixed_library = std::make_unique(".", fixed_seed); - if(options.log_level->value() > framework::LogLevel::NONE) + if (options.log_level->value() > framework::LogLevel::NONE) { - for(auto &p : printers) + for (auto &p : printers) { p->print_global_header(); } } #ifdef ARM_COMPUTE_CL - if(opencl_is_available()) + if (opencl_is_available()) { CLBackendType backend_type = CLBackendType::Native; - for(auto &arg : example_args->value()) + for (auto &arg : example_args->value()) { - if(arg.find("--target=clvk") != std::string::npos) + if (arg.find("--target=clvk") != std::string::npos) { backend_type = CLBackendType::Clvk; break; @@ -166,15 +167,15 @@ int run_example(int argc, char **argv, std::unique_ptr example) } #endif /* ARM_COMPUTE_CL */ - if(options.log_level->value() >= framework::LogLevel::CONFIG) + if (options.log_level->value() >= framework::LogLevel::CONFIG) { - for(auto &p : printers) + for (auto &p : printers) { p->print_entry("Version", build_information()); p->print_entry("CommandLine", command_line(argc, argv)); p->print_entry("Seed", support::cpp11::to_string(seed->value())); #ifdef ARM_COMPUTE_CL - if(opencl_is_available()) + if (opencl_is_available()) { p->print_entry("CL_DEVICE_VERSION", CLKernelLibrary::get().get_device_version()); } @@ -195,27 +196,29 @@ int run_example(int argc, char **argv, std::unique_ptr example) fconfig.log_level = options.log_level->value(); framework.init(fconfig); - for(auto &p : printers) + for (auto &p : printers) { framework.add_printer(p.get()); } framework.set_throw_errors(options.throw_errors->value()); - arm_compute::test::framework::detail::TestSuiteRegistrar suite{ "Examples" }; - if(validate->value() != 0) + arm_compute::test::framework::detail::TestSuiteRegistrar suite{"Examples"}; + if (validate->value() != 0) { - framework.add_test_case>(basename(argv[0]), framework::DatasetMode::ALL, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE); + framework.add_test_case>(basename(argv[0]), framework::DatasetMode::ALL, + arm_compute::test::framework::TestCaseFactory::Status::ACTIVE); } else { - framework.add_test_case>(basename(argv[0]), framework::DatasetMode::ALL, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE); + framework.add_test_case>(basename(argv[0]), framework::DatasetMode::ALL, + arm_compute::test::framework::TestCaseFactory::Status::ACTIVE); } //func(argc, argv); bool success = framework.run(); - if(options.log_level->value() > framework::LogLevel::NONE) + if (options.log_level->value() > framework::LogLevel::NONE) { - for(auto &p : printers) + for (auto &p : printers) { p->print_global_footer(); } diff --git a/tests/validate_examples/ValidateExample.h b/tests/validate_examples/ValidateExample.h index 4e8dade7dc1..2b4c51492ee 100644 --- a/tests/validate_examples/ValidateExample.h +++ b/tests/validate_examples/ValidateExample.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 Arm Limited. + * Copyright (c) 2016-2019, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef VALIDATE_EXAMPLE_H -#define VALIDATE_EXAMPLE_H +#ifndef ACL_TESTS_VALIDATE_EXAMPLES_VALIDATEEXAMPLE_H +#define ACL_TESTS_VALIDATE_EXAMPLES_VALIDATEEXAMPLE_H #include "utils/Utils.h" namespace arm_compute @@ -54,14 +54,14 @@ class ValidateExample return true; }; /** Run the example. */ - virtual void do_run() {}; + virtual void do_run(){}; /** Run reference implementation and validate against the target output */ virtual void do_validate() { } /** Teardown the example. */ - virtual void do_teardown() {}; + virtual void do_teardown(){}; /** Print the example parameters * * @param[in,out] printer Printer to use to print the parameters @@ -84,4 +84,4 @@ int run_example(int argc, char **argv, std::unique_ptr example) } // namespace utils } // namespace arm_compute -#endif /* VALIDATE_EXAMPLE_H */ +#endif // ACL_TESTS_VALIDATE_EXAMPLES_VALIDATEEXAMPLE_H diff --git a/tests/validate_examples/cl_gemm.cpp b/tests/validate_examples/cl_gemm.cpp index 8189b228c21..c313a7981fd 100644 --- a/tests/validate_examples/cl_gemm.cpp +++ b/tests/validate_examples/cl_gemm.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2022 Arm Limited. + * Copyright (c) 2017-2022, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -32,6 +32,7 @@ #include "arm_compute/runtime/CL/functions/CLGEMM.h" #include "arm_compute/runtime/CL/functions/CLGEMMLowpMatrixMultiplyCore.h" #include "arm_compute/runtime/CL/functions/CLGEMMLowpOutputStage.h" + #include "src/core/CL/kernels/CLFillBorderKernel.h" #include "src/gpu/cl/kernels/ClCastKernel.h" #include "src/gpu/cl/kernels/ClGemmLowpMatrixMultiplyNativeKernel.h" @@ -50,17 +51,15 @@ #include "tests/Globals.h" #include "tests/IAccessor.h" #include "tests/SimpleTensor.h" -#include "tests/validation/Validation.h" #include "tests/validation/reference/GEMM.h" #include "tests/validation/reference/GEMMLowp.h" - -#include "utils/TypePrinter.h" -#include "utils/Utils.h" +#include "tests/validation/Validation.h" #include "utils/command_line/CommandLineOptions.h" #include "utils/command_line/CommandLineParser.h" +#include "utils/TypePrinter.h" +#include "utils/Utils.h" #include "ValidateExample.h" - #include using namespace arm_compute; @@ -68,11 +67,14 @@ using namespace utils; using namespace arm_compute::test; using namespace arm_compute::test::validation; -constexpr float abs_tolerance_f32(0.0001f); /**< F32 Absolute tolerance value for comparing reference's output against implementation's output for +constexpr float abs_tolerance_f32( + 0.0001f); /**< F32 Absolute tolerance value for comparing reference's output against implementation's output for * floating point data types in case using relative tolerance fails because of small values */ -RelativeTolerance tolerance_f32(0.001f); /**< F32 Tolerance value for comparing reference's output against implementation's output for floating point data types */ -RelativeTolerance tolerance_f16(half(0.2)); /**< F16 Tolerance value for comparing reference's output against implementation's output for floating point data types */ -constexpr float tolerance_num_f16 = 0.02f; /**< F16 Tolerance number */ +RelativeTolerance tolerance_f32( + 0.001f); /**< F32 Tolerance value for comparing reference's output against implementation's output for floating point data types */ +RelativeTolerance tolerance_f16(half( + 0.2)); /**< F16 Tolerance value for comparing reference's output against implementation's output for floating point data types */ +constexpr float tolerance_num_f16 = 0.02f; /**< F16 Tolerance number */ namespace { @@ -97,8 +99,7 @@ class GEMMCommandLineOptions final data_type() { // Setup data type - const std::set supported_data_types - { + const std::set supported_data_types{ DataType::F16, DataType::F32, DataType::QASYMM8, @@ -166,7 +167,7 @@ class CLGEMMValidateExample : public ValidateExample // Print help const bool print_help = gemm_options.help->is_set() ? gemm_options.help->value() : false; - if(print_help) + if (print_help) { parser.print_help(argv[0]); return false; @@ -179,7 +180,7 @@ class CLGEMMValidateExample : public ValidateExample const bool is_quantized = is_data_type_quantized(data_type); // Calculate re-quantization parameters - if(is_quantized) + if (is_quantized) { float multiplier = scale_src0 * scale_src1 / scale_dst; quantization::calculate_quantized_multiplier(multiplier, &dst_multiplier, &dst_shift); @@ -192,7 +193,7 @@ class CLGEMMValidateExample : public ValidateExample init_sgemm_output(dst, src0, src1, data_type); // Configure function - if(is_quantized) + if (is_quantized) { src0.info()->set_quantization_info(QuantizationInfo(scale_src0, offset_src0)); src1.info()->set_quantization_info(QuantizationInfo(scale_src1, offset_src1)); @@ -239,7 +240,7 @@ class CLGEMMValidateExample : public ValidateExample std::cout << "N : " << support::cpp11::to_string(N) << "\n"; std::cout << "K : " << support::cpp11::to_string(K) << "\n"; std::cout << "B : " << support::cpp11::to_string(B) << "\n"; - if(data_type == DataType::QASYMM8) + if (data_type == DataType::QASYMM8) { std::cout << "Scale_Src0 : " << support::cpp11::to_string(scale_src0) << "\n"; std::cout << "Offset_Src0 : " << support::cpp11::to_string(offset_src0) << "\n"; @@ -258,13 +259,13 @@ class CLGEMMValidateExample : public ValidateExample void do_validate() override { - switch(data_type) + switch (data_type) { case DataType::F16: { - SimpleTensor ref_src0 = { TensorShape(K, M, B), data_type, 1 }; - SimpleTensor ref_src1 = { TensorShape(N, K, B), data_type, 1 }; - SimpleTensor ref_src2 = { TensorShape(N, M, B), data_type, 1 }; + SimpleTensor ref_src0 = {TensorShape(K, M, B), data_type, 1}; + SimpleTensor ref_src1 = {TensorShape(N, K, B), data_type, 1}; + SimpleTensor ref_src2 = {TensorShape(N, M, B), data_type, 1}; fill(ref_src0, 0); fill(ref_src1, 1); @@ -276,9 +277,9 @@ class CLGEMMValidateExample : public ValidateExample } case DataType::F32: { - SimpleTensor ref_src0 = { TensorShape(K, M, B), data_type, 1 }; - SimpleTensor ref_src1 = { TensorShape(N, K, B), data_type, 1 }; - SimpleTensor ref_src2 = { TensorShape(N, M, B), data_type, 1 }; + SimpleTensor ref_src0 = {TensorShape(K, M, B), data_type, 1}; + SimpleTensor ref_src1 = {TensorShape(N, K, B), data_type, 1}; + SimpleTensor ref_src2 = {TensorShape(N, M, B), data_type, 1}; fill(ref_src0, 0); fill(ref_src1, 1); @@ -290,29 +291,32 @@ class CLGEMMValidateExample : public ValidateExample } case DataType::QASYMM8: { - SimpleTensor ref_src0{ TensorShape(K, M, B), data_type, 1 }; - SimpleTensor ref_src1{ TensorShape(N, K, B), data_type, 1 }; + SimpleTensor ref_src0{TensorShape(K, M, B), data_type, 1}; + SimpleTensor ref_src1{TensorShape(N, K, B), data_type, 1}; SimpleTensor ref_dst; // Fill reference fill(ref_src0, 0); fill(ref_src1, 1); - SimpleTensor ref_tmp_dst = reference::gemmlowp_matrix_multiply_core(ref_src0, ref_src1, TensorShape(N, M, B), offset_src0, offset_src1); + SimpleTensor ref_tmp_dst = reference::gemmlowp_matrix_multiply_core( + ref_src0, ref_src1, TensorShape(N, M, B), offset_src0, offset_src1); - const std::vector dst_multiplier_vec = { dst_multiplier }; - const std::vector dst_shift_vec = { dst_shift }; + const std::vector dst_multiplier_vec = {dst_multiplier}; + const std::vector dst_shift_vec = {dst_shift}; - if(add_bias) + if (add_bias) { - SimpleTensor biases{ TensorShape(N), DataType::S32, 1 }; + SimpleTensor biases{TensorShape(N), DataType::S32, 1}; // Fill bias fill(biases, 3); - ref_dst = reference::gemmlowp_quantize_down_scale_by_fixedpoint(ref_tmp_dst, biases, dst_multiplier_vec, dst_shift_vec, offset_dst); + ref_dst = reference::gemmlowp_quantize_down_scale_by_fixedpoint( + ref_tmp_dst, biases, dst_multiplier_vec, dst_shift_vec, offset_dst); } else { - ref_dst = reference::gemmlowp_quantize_down_scale_by_fixedpoint(ref_tmp_dst, dst_multiplier_vec, dst_shift_vec, offset_dst); + ref_dst = reference::gemmlowp_quantize_down_scale_by_fixedpoint( + ref_tmp_dst, dst_multiplier_vec, dst_shift_vec, offset_dst); } validate(CLAccessor(dst), ref_dst); break; @@ -324,7 +328,7 @@ class CLGEMMValidateExample : public ValidateExample void do_run() override { // Execute the function - if(data_type == DataType::QASYMM8) + if (data_type == DataType::QASYMM8) { // Run gemmlowp mm_gemmlowp.run(); @@ -345,11 +349,11 @@ class CLGEMMValidateExample : public ValidateExample template void fill(U &&tensor, int i) { - switch(tensor.data_type()) + switch (tensor.data_type()) { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_16bit distribution{ -1.0f, 1.0f }; + arm_compute::utils::uniform_real_distribution_16bit distribution{-1.0f, 1.0f}; library->fill(tensor, distribution, i); break; } @@ -400,13 +404,13 @@ class CLGEMMValidateExample : public ValidateExample CLGEMMLowpMatrixMultiplyCore mm_gemmlowp{}; CLGEMMLowpOutputStage mm_gemmlowp_output_stage{}; - size_t M{ 7 }, N{ 3 }, K{ 5 }, B{ 1 }; - DataType data_type{ DataType::F32 }; - float alpha{ 1.0 }, beta{ 0.0 }; - int offset_src0{ 10 }, offset_src1{ 10 }, offset_dst{ 10 }; - float scale_src0{ 1.0f / 255 }, scale_src1{ 1.0f / 255 }, scale_dst{ 1.0f / 255 }; - int32_t dst_multiplier{ 0 }, dst_shift{ 0 }; - bool add_bias{ true }; + size_t M{7}, N{3}, K{5}, B{1}; + DataType data_type{DataType::F32}; + float alpha{1.0}, beta{0.0}; + int offset_src0{10}, offset_src1{10}, offset_dst{10}; + float scale_src0{1.0f / 255}, scale_src1{1.0f / 255}, scale_dst{1.0f / 255}; + int32_t dst_multiplier{0}, dst_shift{0}; + bool add_bias{true}; }; /** Main program for gemm test diff --git a/tests/validate_examples/graph_convolution.cpp b/tests/validate_examples/graph_convolution.cpp index 257bc5d48ad..afc07b37aa4 100644 --- a/tests/validate_examples/graph_convolution.cpp +++ b/tests/validate_examples/graph_convolution.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2020 Arm Limited. + * Copyright (c) 2019-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,17 +24,15 @@ #include "arm_compute/graph.h" #include "tests/NEON/Accessor.h" -#include "tests/validation/Validation.h" #include "tests/validation/reference/ConvolutionLayer.h" #include "tests/validation/reference/Permute.h" - +#include "tests/validation/Validation.h" #include "utils/CommonGraphOptions.h" #include "utils/GraphUtils.h" #include "utils/Utils.h" -#include "ValidateExample.h" #include "graph_validate_utils.h" - +#include "ValidateExample.h" #include using namespace arm_compute::utils; @@ -93,29 +91,23 @@ class ConvolutionOptions final : public CommonGraphValidateOptions weights_npy(parser.add_option>("weights_npy")), bias_npy(parser.add_option>("bias_image")) { - const std::set available_padding_modes - { - ConvolutionPaddingMode::Valid, - ConvolutionPaddingMode::Same - }; + const std::set available_padding_modes{ConvolutionPaddingMode::Valid, + ConvolutionPaddingMode::Same}; - const std::set supported_convolution_methods - { - arm_compute::graph::ConvolutionMethod::Default, - arm_compute::graph::ConvolutionMethod::GEMM, - arm_compute::graph::ConvolutionMethod::Winograd, - arm_compute::graph::ConvolutionMethod::Direct - }; + const std::set supported_convolution_methods{ + arm_compute::graph::ConvolutionMethod::Default, arm_compute::graph::ConvolutionMethod::GEMM, + arm_compute::graph::ConvolutionMethod::Winograd, arm_compute::graph::ConvolutionMethod::Direct}; - const std::set supported_data_layouts - { + const std::set supported_data_layouts{ DataLayout::NHWC, DataLayout::NCHW, }; - padding_mode = parser.add_option>("padding_mode", available_padding_modes, ConvolutionPaddingMode::Valid); - conv_mode = parser.add_option>("convolution_method", supported_convolution_methods, arm_compute::graph::ConvolutionMethod::Default); - data_layout = parser.add_option>("layout", supported_data_layouts, DataLayout::NHWC); + padding_mode = parser.add_option>("padding_mode", available_padding_modes, + ConvolutionPaddingMode::Valid); + conv_mode = parser.add_option>( + "convolution_method", supported_convolution_methods, arm_compute::graph::ConvolutionMethod::Default); + data_layout = parser.add_option>("layout", supported_data_layouts, DataLayout::NHWC); padding_mode->set_help("Set padding mode"); help->set_help("Show this help message"); @@ -196,13 +188,16 @@ class ConvolutionOptions final : public CommonGraphValidateOptions os << "Threads : " << common_params.common_params.threads << std::endl; os << "Target : " << common_params.common_params.target << std::endl; os << "Data type : " << common_params.data_type << std::endl; - os << "Input dimensions(X,Y, Channels, Batch) : (" << common_params.input.width << "," << common_params.input.height << "," << common_params.input.fm << "," << common_params.input.batch << ")" + os << "Input dimensions(X,Y, Channels, Batch) : (" << common_params.input.width << "," + << common_params.input.height << "," << common_params.input.fm << "," << common_params.input.batch << ")" + << std::endl; + os << "Weight dimensions(X,Y, Channels(same as input), OFM) : (" << common_params.weights.width << "," + << common_params.weights.height << "," << common_params.input.fm << "," << common_params.weights.fm << ")" << std::endl; - os << "Weight dimensions(X,Y, Channels(same as input), OFM) : (" << common_params.weights.width << "," << common_params.weights.height << "," << common_params.input.fm << "," << - common_params.weights.fm << ")" << std::endl; - os << "Padding(top, bottom, left, right) (stride x, stride y) : (" << common_params.convolution.padding_top << "," << common_params.convolution.padding_bottom << "," << - common_params.convolution.padding_left << "," << common_params.convolution.padding_right << ") (" << common_params.convolution.padding_stride_x << "," << common_params.convolution.padding_stride_y << - ")" << std::endl; + os << "Padding(top, bottom, left, right) (stride x, stride y) : (" << common_params.convolution.padding_top + << "," << common_params.convolution.padding_bottom << "," << common_params.convolution.padding_left << "," + << common_params.convolution.padding_right << ") (" << common_params.convolution.padding_stride_x << "," + << common_params.convolution.padding_stride_y << ")" << std::endl; os << "Padding Mode: " << common_params.convolution.padding_mode << std::endl; os << "Convolution Method: " << common_params.convolution_method << std::endl; } @@ -219,32 +214,32 @@ class ConvolutionOptions final : public CommonGraphValidateOptions ~ConvolutionOptions() override = default; private: - SimpleOption *width; /**< Input width */ - SimpleOption *height; /**< Input height */ - SimpleOption *channels; /**< Input channels */ - SimpleOption *batch; /**< Input batch */ - SimpleOption *weights_width; /**< weights width */ - SimpleOption *weights_height; /**< weights height */ - SimpleOption *OFM; /**< Output Feature Map */ - SimpleOption *padding_top; /**< Padding top */ - SimpleOption *padding_left; /**< Padding left */ - SimpleOption *padding_bottom; /**< Padding bottom */ - SimpleOption *padding_right; /**< Padding right */ - SimpleOption *stride_x; /**< Padding stride x */ - SimpleOption *stride_y; /**< Padding stride y */ - EnumOption *padding_mode; /**< Padding mode */ - EnumOption *conv_mode; /**< Convolution method */ - EnumOption *data_layout; /**< Graph data layout */ - SimpleOption *scale; /**< Input Quantization scale from QASYMM8 */ - SimpleOption *offset; /**< Input Quantization offset from QASYMM8 */ - SimpleOption *weights_scale; /**< Weights Quantization scale from QASYMM8 */ - SimpleOption *weights_offset; /**< Weights Quantization offset from QASYMM8 */ - SimpleOption *output_scale; /**< Output Quantization scale from QASYMM8 */ - SimpleOption *output_offset; /**< Output Quantization offset from QASYMM8 */ - SimpleOption *input_range_low; /**< Lower bound for input randomization range */ - SimpleOption *input_range_high; /**< Upper bound for input randomization range */ - SimpleOption *weights_range_low; /**< Lower bound for weights randomization range */ - SimpleOption *weights_range_high; /**< Upper bound for weights randomization range */ + SimpleOption *width; /**< Input width */ + SimpleOption *height; /**< Input height */ + SimpleOption *channels; /**< Input channels */ + SimpleOption *batch; /**< Input batch */ + SimpleOption *weights_width; /**< weights width */ + SimpleOption *weights_height; /**< weights height */ + SimpleOption *OFM; /**< Output Feature Map */ + SimpleOption *padding_top; /**< Padding top */ + SimpleOption *padding_left; /**< Padding left */ + SimpleOption *padding_bottom; /**< Padding bottom */ + SimpleOption *padding_right; /**< Padding right */ + SimpleOption *stride_x; /**< Padding stride x */ + SimpleOption *stride_y; /**< Padding stride y */ + EnumOption *padding_mode; /**< Padding mode */ + EnumOption *conv_mode; /**< Convolution method */ + EnumOption *data_layout; /**< Graph data layout */ + SimpleOption *scale; /**< Input Quantization scale from QASYMM8 */ + SimpleOption *offset; /**< Input Quantization offset from QASYMM8 */ + SimpleOption *weights_scale; /**< Weights Quantization scale from QASYMM8 */ + SimpleOption *weights_offset; /**< Weights Quantization offset from QASYMM8 */ + SimpleOption *output_scale; /**< Output Quantization scale from QASYMM8 */ + SimpleOption *output_offset; /**< Output Quantization offset from QASYMM8 */ + SimpleOption *input_range_low; /**< Lower bound for input randomization range */ + SimpleOption *input_range_high; /**< Upper bound for input randomization range */ + SimpleOption *weights_range_low; /**< Lower bound for weights randomization range */ + SimpleOption *weights_range_high; /**< Upper bound for weights randomization range */ SimpleOption *input_npy; /**< Use input .npy image */ SimpleOption *output_npy; /**< Use output .npy image to verify*/ @@ -257,43 +252,33 @@ template class ConvolutionVerifyAccessor final : public VerifyAccessor { using BaseClassType = VerifyAccessor; - using BaseClassType::BaseClassType; using BaseClassType::_params; - using TBias = typename std::conditional::type, uint8_t>::value, int32_t, D>::type; + using BaseClassType::BaseClassType; + using TBias = + typename std::conditional::type, uint8_t>::value, int32_t, D>::type; - SimpleTensor reference(SimpleTensor &src, SimpleTensor &weights, SimpleTensor &bias, const TensorShape &output_shape) override + SimpleTensor reference(SimpleTensor &src, + SimpleTensor &weights, + SimpleTensor &bias, + const TensorShape &output_shape) override { // Calculate padding information const PadStrideInfo padding_info = calculate_convolution_padding(_params); //Calculate reference - return reference::convolution_layer(src, weights, bias, output_shape, padding_info, Size2D(1, 1), - 1, _params.output.quant_info); + return reference::convolution_layer(src, weights, bias, output_shape, padding_info, Size2D(1, 1), 1, + _params.output.quant_info); } float relative_tolerance() override { - const std::map> relative_tolerance - { - { - arm_compute::graph::Target::CL, - { { DataType::F16, 0.2f }, - { DataType::F32, 0.5f }, - { DataType::QASYMM8, 1.0f } - } - }, - { - arm_compute::graph::Target::NEON, - { { DataType::F16, 0.2f }, - { DataType::F32, 0.01f }, - { DataType::QASYMM8, 0.0f } - } - } - }; + const std::map> relative_tolerance{ + {arm_compute::graph::Target::CL, {{DataType::F16, 0.2f}, {DataType::F32, 0.5f}, {DataType::QASYMM8, 1.0f}}}, + {arm_compute::graph::Target::NEON, + {{DataType::F16, 0.2f}, {DataType::F32, 0.01f}, {DataType::QASYMM8, 0.0f}}}}; - if(_params.convolution_method == arm_compute::graph::ConvolutionMethod::Winograd - && _params.data_type == DataType::F32 - && _params.common_params.target == arm_compute::graph::Target::NEON) + if (_params.convolution_method == arm_compute::graph::ConvolutionMethod::Winograd && + _params.data_type == DataType::F32 && _params.common_params.target == arm_compute::graph::Target::NEON) { return 0.05f; } @@ -305,46 +290,18 @@ class ConvolutionVerifyAccessor final : public VerifyAccessor float absolute_tolerance() override { - const std::map> absolute_tolerance - { - { - Target::CL, - { { DataType::F16, 0.0f }, - { DataType::F32, 0.0001f }, - { DataType::QASYMM8, 0.0f } - } - }, - { - Target::NEON, - { { DataType::F16, 0.2f }, - { DataType::F32, 0.002f }, - { DataType::QASYMM8, 0.0f } - } - } - }; + const std::map> absolute_tolerance{ + {Target::CL, {{DataType::F16, 0.0f}, {DataType::F32, 0.0001f}, {DataType::QASYMM8, 0.0f}}}, + {Target::NEON, {{DataType::F16, 0.2f}, {DataType::F32, 0.002f}, {DataType::QASYMM8, 0.0f}}}}; return absolute_tolerance.at(_params.common_params.target).at(_params.data_type); } float tolerance_number() override { - const std::map> absolute_tolerance - { - { - Target::CL, - { { DataType::F16, 0.07f }, - { DataType::F32, 0.07f }, - { DataType::QASYMM8, 0.0f } - } - }, - { - Target::NEON, - { { DataType::F16, 0.07f }, - { DataType::F32, 0.0f }, - { DataType::QASYMM8, 0.0f } - } - } - }; + const std::map> absolute_tolerance{ + {Target::CL, {{DataType::F16, 0.07f}, {DataType::F32, 0.07f}, {DataType::QASYMM8, 0.0f}}}, + {Target::NEON, {{DataType::F16, 0.07f}, {DataType::F32, 0.0f}, {DataType::QASYMM8, 0.0f}}}}; return absolute_tolerance.at(_params.common_params.target).at(_params.data_type); } @@ -352,13 +309,13 @@ class ConvolutionVerifyAccessor final : public VerifyAccessor } // namespace -class GraphConvolutionValidateExample final : public GraphValidateExample +class GraphConvolutionValidateExample final + : public GraphValidateExample { using GraphValidateExample::graph; public: - GraphConvolutionValidateExample() - : GraphValidateExample("Convolution Graph example") + GraphConvolutionValidateExample() : GraphValidateExample("Convolution Graph example") { } @@ -367,16 +324,18 @@ class GraphConvolutionValidateExample final : public GraphValidateExample using namespace arm_compute::utils; @@ -93,28 +91,25 @@ class DepthConvolutionOptions final : public CommonGraphValidateOptions weights_npy(parser.add_option>("weights_npy")), bias_npy(parser.add_option>("bias_image")) { - const std::set available_padding_modes - { - ConvolutionPaddingMode::Valid, - ConvolutionPaddingMode::Same - }; + const std::set available_padding_modes{ConvolutionPaddingMode::Valid, + ConvolutionPaddingMode::Same}; - const std::set supported_convolution_methods - { + const std::set supported_convolution_methods{ arm_compute::graph::DepthwiseConvolutionMethod::Default, arm_compute::graph::DepthwiseConvolutionMethod::GEMV, arm_compute::graph::DepthwiseConvolutionMethod::Optimized3x3, }; - const std::set supported_data_layouts - { + const std::set supported_data_layouts{ DataLayout::NHWC, DataLayout::NCHW, }; - padding_mode = parser.add_option>("padding_mode", available_padding_modes, ConvolutionPaddingMode::Valid); - conv_mode = parser.add_option>("convolution_method", supported_convolution_methods, - arm_compute::graph::DepthwiseConvolutionMethod::Default); + padding_mode = parser.add_option>("padding_mode", available_padding_modes, + ConvolutionPaddingMode::Valid); + conv_mode = parser.add_option>( + "convolution_method", supported_convolution_methods, + arm_compute::graph::DepthwiseConvolutionMethod::Default); data_layout = parser.add_option>("layout", supported_data_layouts, DataLayout::NHWC); padding_mode->set_help("Set padding mode"); @@ -196,13 +191,16 @@ class DepthConvolutionOptions final : public CommonGraphValidateOptions os << "Threads : " << common_params.common_params.threads << std::endl; os << "Target : " << common_params.common_params.target << std::endl; os << "Data type : " << common_params.data_type << std::endl; - os << "Input dimensions(X,Y, Channels, Batch) : (" << common_params.input.width << "," << common_params.input.height << "," << common_params.input.fm << "," << common_params.input.batch << ")" + os << "Input dimensions(X,Y, Channels, Batch) : (" << common_params.input.width << "," + << common_params.input.height << "," << common_params.input.fm << "," << common_params.input.batch << ")" << std::endl; - os << "Weight dimensions(X,Y, Channels(same as input)) : (" << common_params.weights.width << "," << common_params.weights.height << "," << common_params.input.fm << "," + os << "Weight dimensions(X,Y, Channels(same as input)) : (" << common_params.weights.width << "," + << common_params.weights.height << "," << common_params.input.fm << "," << ")" << std::endl; - os << "Padding(top, bottom, left, right) (stride x, stride y) : (" << common_params.convolution.padding_top << "," << common_params.convolution.padding_bottom << "," << - common_params.convolution.padding_left << "," << common_params.convolution.padding_right << ") (" << common_params.convolution.padding_stride_x << "," << common_params.convolution.padding_stride_y << - ")" << std::endl; + os << "Padding(top, bottom, left, right) (stride x, stride y) : (" << common_params.convolution.padding_top + << "," << common_params.convolution.padding_bottom << "," << common_params.convolution.padding_left << "," + << common_params.convolution.padding_right << ") (" << common_params.convolution.padding_stride_x << "," + << common_params.convolution.padding_stride_y << ")" << std::endl; os << "Padding Mode: " << common_params.convolution.padding_mode << std::endl; os << "Convolution Method: " << common_params.depth_convolution_method << std::endl; os << "Depth multiplier: " << common_params.convolution.depth_multiplier; @@ -220,32 +218,32 @@ class DepthConvolutionOptions final : public CommonGraphValidateOptions ~DepthConvolutionOptions() override = default; private: - SimpleOption *width; /**< Input width */ - SimpleOption *height; /**< Input height */ - SimpleOption *channels; /**< Input channels */ - SimpleOption *batch; /**< Input batch */ - SimpleOption *weights_width; /**< weights width */ - SimpleOption *weights_height; /**< weights height */ - SimpleOption *padding_top; /**< Padding top */ - SimpleOption *padding_left; /**< Padding left */ - SimpleOption *padding_bottom; /**< Padding bottom */ - SimpleOption *padding_right; /**< Padding right */ - SimpleOption *stride_x; /**< Padding stride x */ - SimpleOption *stride_y; /**< Padding stride y */ - EnumOption *padding_mode; /**< Padding mode */ - EnumOption *conv_mode; /**< Convolution method */ - SimpleOption *depth_multiplier; /**< Depth multiplier */ - EnumOption *data_layout; /**< Graph data layout */ - SimpleOption *scale; /**< Input Quantization scale from QASYMM8 */ - SimpleOption *offset; /**< Input Quantization offset from QASYMM8 */ - SimpleOption *weights_scale; /**< Weights Quantization scale from QASYMM8 */ - SimpleOption *weights_offset; /**< Weights Quantization offset from QASYMM8 */ - SimpleOption *output_scale; /**< Output Quantization scale from QASYMM8 */ - SimpleOption *output_offset; /**< Output Quantization offset from QASYMM8 */ - SimpleOption *input_range_low; /**< Lower bound for input randomization range */ - SimpleOption *input_range_high; /**< Upper bound for input randomization range */ - SimpleOption *weights_range_low; /**< Lower bound for weights randomization range */ - SimpleOption *weights_range_high; /**< Upper bound for weights randomization range */ + SimpleOption *width; /**< Input width */ + SimpleOption *height; /**< Input height */ + SimpleOption *channels; /**< Input channels */ + SimpleOption *batch; /**< Input batch */ + SimpleOption *weights_width; /**< weights width */ + SimpleOption *weights_height; /**< weights height */ + SimpleOption *padding_top; /**< Padding top */ + SimpleOption *padding_left; /**< Padding left */ + SimpleOption *padding_bottom; /**< Padding bottom */ + SimpleOption *padding_right; /**< Padding right */ + SimpleOption *stride_x; /**< Padding stride x */ + SimpleOption *stride_y; /**< Padding stride y */ + EnumOption *padding_mode; /**< Padding mode */ + EnumOption *conv_mode; /**< Convolution method */ + SimpleOption *depth_multiplier; /**< Depth multiplier */ + EnumOption *data_layout; /**< Graph data layout */ + SimpleOption *scale; /**< Input Quantization scale from QASYMM8 */ + SimpleOption *offset; /**< Input Quantization offset from QASYMM8 */ + SimpleOption *weights_scale; /**< Weights Quantization scale from QASYMM8 */ + SimpleOption *weights_offset; /**< Weights Quantization offset from QASYMM8 */ + SimpleOption *output_scale; /**< Output Quantization scale from QASYMM8 */ + SimpleOption *output_offset; /**< Output Quantization offset from QASYMM8 */ + SimpleOption *input_range_low; /**< Lower bound for input randomization range */ + SimpleOption *input_range_high; /**< Upper bound for input randomization range */ + SimpleOption *weights_range_low; /**< Lower bound for weights randomization range */ + SimpleOption *weights_range_high; /**< Upper bound for weights randomization range */ SimpleOption *input_npy; /**< Use input .npy image */ SimpleOption *output_npy; /**< Use output .npy image to verify*/ @@ -259,88 +257,51 @@ class DepthConvolutionVerifyAccessor final : public VerifyAccessor { public: using BaseClassType = VerifyAccessor; - using BaseClassType::BaseClassType; using BaseClassType::_params; - using TBias = typename std::conditional::type, uint8_t>::value, int32_t, D>::type; + using BaseClassType::BaseClassType; + using TBias = + typename std::conditional::type, uint8_t>::value, int32_t, D>::type; public: - SimpleTensor reference(SimpleTensor &src, SimpleTensor &weights, SimpleTensor &bias, const TensorShape &output_shape) override + SimpleTensor reference(SimpleTensor &src, + SimpleTensor &weights, + SimpleTensor &bias, + const TensorShape &output_shape) override { // Calculate padding information const PadStrideInfo padding_info = calculate_convolution_padding(_params); //Calculate reference return reference::depthwise_convolution(src, weights, bias, output_shape, padding_info, - _params.convolution.depth_multiplier, - Size2D(1U, 1U), + _params.convolution.depth_multiplier, Size2D(1U, 1U), _params.output.quant_info); } float relative_tolerance() override { - const std::map> relative_tolerance - { - { - arm_compute::graph::Target::CL, - { { DataType::F16, 0.01f }, - { DataType::F32, 0.01f }, - { DataType::QASYMM8, 0.0f } - } - }, - { - arm_compute::graph::Target::NEON, - { { DataType::F16, 0.01f }, - { DataType::F32, 0.01f }, - { DataType::QASYMM8, 1.0f } - } - } - }; + const std::map> relative_tolerance{ + {arm_compute::graph::Target::CL, + {{DataType::F16, 0.01f}, {DataType::F32, 0.01f}, {DataType::QASYMM8, 0.0f}}}, + {arm_compute::graph::Target::NEON, + {{DataType::F16, 0.01f}, {DataType::F32, 0.01f}, {DataType::QASYMM8, 1.0f}}}}; return relative_tolerance.at(_params.common_params.target).at(_params.data_type); } float absolute_tolerance() override { - const std::map> absolute_tolerance - { - { - Target::CL, - { { DataType::F16, 0.0f }, - { DataType::F32, 0.0000f }, - { DataType::QASYMM8, 0.0f } - } - }, - { - Target::NEON, - { { DataType::F16, 0.2f }, - { DataType::F32, 0.002f }, - { DataType::QASYMM8, 0.0f } - } - } - }; + const std::map> absolute_tolerance{ + {Target::CL, {{DataType::F16, 0.0f}, {DataType::F32, 0.0000f}, {DataType::QASYMM8, 0.0f}}}, + {Target::NEON, {{DataType::F16, 0.2f}, {DataType::F32, 0.002f}, {DataType::QASYMM8, 0.0f}}}}; return absolute_tolerance.at(_params.common_params.target).at(_params.data_type); } float tolerance_number() override { - const std::map> absolute_tolerance - { - { - Target::CL, - { { DataType::F16, 0.05f }, - { DataType::F32, 0.00f }, - { DataType::QASYMM8, 0.0f } - } - }, - { - Target::NEON, - { { DataType::F16, 0.05f }, - { DataType::F32, 0.0f }, - { DataType::QASYMM8, 0.0f } - } - } - }; + const std::map> absolute_tolerance{ + {Target::CL, {{DataType::F16, 0.05f}, {DataType::F32, 0.00f}, {DataType::QASYMM8, 0.0f}}}, + {Target::NEON, {{DataType::F16, 0.05f}, {DataType::F32, 0.0f}, {DataType::QASYMM8, 0.0f}}}}; return absolute_tolerance.at(_params.common_params.target).at(_params.data_type); } @@ -348,13 +309,13 @@ class DepthConvolutionVerifyAccessor final : public VerifyAccessor } // namespace -class GraphDepthwiseConvolutionValidateExample final : public GraphValidateExample +class GraphDepthwiseConvolutionValidateExample final + : public GraphValidateExample { using GraphValidateExample::graph; public: - GraphDepthwiseConvolutionValidateExample() - : GraphValidateExample("DepthWiseConvolution Graph example") + GraphDepthwiseConvolutionValidateExample() : GraphValidateExample("DepthWiseConvolution Graph example") { } @@ -363,16 +324,18 @@ class GraphDepthwiseConvolutionValidateExample final : public GraphValidateExamp const PixelValue lower = PixelValue(params.input.range_low, params.data_type, params.input.quant_info); const PixelValue upper = PixelValue(params.input.range_high, params.data_type, params.input.quant_info); - const PixelValue weights_lower = PixelValue(params.weights.range_low, params.data_type, params.weights.quant_info); - const PixelValue weights_upper = PixelValue(params.weights.range_high, params.data_type, params.weights.quant_info); + const PixelValue weights_lower = + PixelValue(params.weights.range_low, params.data_type, params.weights.quant_info); + const PixelValue weights_upper = + PixelValue(params.weights.range_high, params.data_type, params.weights.quant_info); // Calculate padding information const PadStrideInfo padding_info = calculate_convolution_padding(params); - return DepthwiseConvolutionLayer(params.weights.width, params.weights.height, - get_accessor(params.weights, weights_lower, weights_upper, 1), - get_accessor(params.bias, lower, upper, 2), - padding_info, params.convolution.depth_multiplier, params.weights.quant_info, params.output.quant_info); + return DepthwiseConvolutionLayer( + params.weights.width, params.weights.height, get_accessor(params.weights, weights_lower, weights_upper, 1), + get_accessor(params.bias, lower, upper, 2), padding_info, params.convolution.depth_multiplier, + params.weights.quant_info, params.output.quant_info); } }; diff --git a/tests/validate_examples/graph_fully_connected.cpp b/tests/validate_examples/graph_fully_connected.cpp index 4c1b593793e..2d1af6f21e1 100644 --- a/tests/validate_examples/graph_fully_connected.cpp +++ b/tests/validate_examples/graph_fully_connected.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2020 Arm Limited. + * Copyright (c) 2019-2020, 2025 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -24,17 +24,15 @@ #include "arm_compute/graph.h" #include "tests/NEON/Accessor.h" -#include "tests/validation/Validation.h" #include "tests/validation/reference/FullyConnectedLayer.h" #include "tests/validation/reference/Permute.h" - +#include "tests/validation/Validation.h" #include "utils/CommonGraphOptions.h" #include "utils/GraphUtils.h" #include "utils/Utils.h" -#include "ValidateExample.h" #include "graph_validate_utils.h" - +#include "ValidateExample.h" #include using namespace arm_compute::utils; @@ -121,7 +119,8 @@ class FullyConnectedOptions final : public CommonGraphValidateOptions os << "Threads : " << common_params.common_params.threads << std::endl; os << "Target : " << common_params.common_params.target << std::endl; os << "Data type : " << common_params.data_type << std::endl; - os << "Input dimensions(X,Y, Channels, Batch) : (" << common_params.input.width << "," << common_params.input.height << "," << common_params.input.fm << "," << common_params.input.batch << ")" + os << "Input dimensions(X,Y, Channels, Batch) : (" << common_params.input.width << "," + << common_params.input.height << "," << common_params.input.fm << "," << common_params.input.batch << ")" << std::endl; os << "Number of outputs : " << common_params.fully_connected.num_outputs << std::endl; } @@ -158,9 +157,10 @@ template class FullyConnectedVerifyAccessor final : public VerifyAccessor { using BaseClassType = VerifyAccessor; - using BaseClassType::BaseClassType; using BaseClassType::_params; - using TBias = typename std::conditional::type, uint8_t>::value, int32_t, D>::type; + using BaseClassType::BaseClassType; + using TBias = + typename std::conditional::type, uint8_t>::value, int32_t, D>::type; // Inherited methods overriden: void create_tensors(arm_compute::test::SimpleTensor &src, @@ -169,27 +169,33 @@ class FullyConnectedVerifyAccessor final : public VerifyAccessor ITensor &tensor) override { // Calculate Tensor shapes for verification - const TensorShape input_shape = TensorShape(_params.input.width, _params.input.height, _params.input.fm, _params.input.batch); - const TensorDescriptor input_descriptor = TensorDescriptor(input_shape, _params.data_type, _params.input.quant_info); - const TensorDescriptor weights_descriptor = FullyConnectedLayerNode::compute_weights_descriptor(input_descriptor, - _params.fully_connected.num_outputs, - _params.fully_connected.info, - _params.weights.quant_info); - const TensorDescriptor output_desciptor = FullyConnectedLayerNode::compute_output_descriptor(input_descriptor, _params.fully_connected.num_outputs, _params.output.quant_info); + const TensorShape input_shape = + TensorShape(_params.input.width, _params.input.height, _params.input.fm, _params.input.batch); + const TensorDescriptor input_descriptor = + TensorDescriptor(input_shape, _params.data_type, _params.input.quant_info); + const TensorDescriptor weights_descriptor = FullyConnectedLayerNode::compute_weights_descriptor( + input_descriptor, _params.fully_connected.num_outputs, _params.fully_connected.info, + _params.weights.quant_info); + const TensorDescriptor output_desciptor = FullyConnectedLayerNode::compute_output_descriptor( + input_descriptor, _params.fully_connected.num_outputs, _params.output.quant_info); //Create Input tensors - src = SimpleTensor { input_descriptor.shape, _params.data_type, 1, input_descriptor.quant_info }; - weights = SimpleTensor { weights_descriptor.shape, _params.data_type, 1, weights_descriptor.quant_info }; - bias = SimpleTensor { TensorShape(tensor.info()->tensor_shape().x()), _params.data_type, 1, _params.input.quant_info }; + src = SimpleTensor{input_descriptor.shape, _params.data_type, 1, input_descriptor.quant_info}; + weights = SimpleTensor{weights_descriptor.shape, _params.data_type, 1, weights_descriptor.quant_info}; + bias = SimpleTensor{TensorShape(tensor.info()->tensor_shape().x()), _params.data_type, 1, + _params.input.quant_info}; } TensorShape output_shape(ITensor &tensor) override { ARM_COMPUTE_UNUSED(tensor); - const TensorShape input_shape = TensorShape(_params.input.width, _params.input.height, _params.input.fm, _params.input.batch); - const TensorDescriptor input_descriptor = TensorDescriptor(input_shape, _params.data_type, _params.input.quant_info); - const TensorDescriptor output_desciptor = FullyConnectedLayerNode::compute_output_descriptor(input_descriptor, _params.fully_connected.num_outputs, _params.output.quant_info); + const TensorShape input_shape = + TensorShape(_params.input.width, _params.input.height, _params.input.fm, _params.input.batch); + const TensorDescriptor input_descriptor = + TensorDescriptor(input_shape, _params.data_type, _params.input.quant_info); + const TensorDescriptor output_desciptor = FullyConnectedLayerNode::compute_output_descriptor( + input_descriptor, _params.fully_connected.num_outputs, _params.output.quant_info); return output_desciptor.shape; } @@ -204,69 +210,29 @@ class FullyConnectedVerifyAccessor final : public VerifyAccessor float relative_tolerance() override { - const std::map> relative_tolerance - { - { - arm_compute::graph::Target::CL, - { { DataType::F16, 0.2f }, - { DataType::F32, 0.05f }, - { DataType::QASYMM8, 1.0f } - } - }, - { - arm_compute::graph::Target::NEON, - { { DataType::F16, 0.2f }, - { DataType::F32, 0.01f }, - { DataType::QASYMM8, 1.0f } - } - } - }; + const std::map> relative_tolerance{ + {arm_compute::graph::Target::CL, + {{DataType::F16, 0.2f}, {DataType::F32, 0.05f}, {DataType::QASYMM8, 1.0f}}}, + {arm_compute::graph::Target::NEON, + {{DataType::F16, 0.2f}, {DataType::F32, 0.01f}, {DataType::QASYMM8, 1.0f}}}}; return relative_tolerance.at(_params.common_params.target).at(_params.data_type); } float absolute_tolerance() override { - const std::map> absolute_tolerance - { - { - Target::CL, - { { DataType::F16, 0.0f }, - { DataType::F32, 0.0001f }, - { DataType::QASYMM8, 1.0f } - } - }, - { - Target::NEON, - { { DataType::F16, 0.3f }, - { DataType::F32, 0.1f }, - { DataType::QASYMM8, 1.0f } - } - } - }; + const std::map> absolute_tolerance{ + {Target::CL, {{DataType::F16, 0.0f}, {DataType::F32, 0.0001f}, {DataType::QASYMM8, 1.0f}}}, + {Target::NEON, {{DataType::F16, 0.3f}, {DataType::F32, 0.1f}, {DataType::QASYMM8, 1.0f}}}}; return absolute_tolerance.at(_params.common_params.target).at(_params.data_type); } float tolerance_number() override { - const std::map> absolute_tolerance - { - { - Target::CL, - { { DataType::F16, 0.07f }, - { DataType::F32, 0.07f }, - { DataType::QASYMM8, 0.0f } - } - }, - { - Target::NEON, - { { DataType::F16, 0.07f }, - { DataType::F32, 0.0f }, - { DataType::QASYMM8, 0.0f } - } - } - }; + const std::map> absolute_tolerance{ + {Target::CL, {{DataType::F16, 0.07f}, {DataType::F32, 0.07f}, {DataType::QASYMM8, 0.0f}}}, + {Target::NEON, {{DataType::F16, 0.07f}, {DataType::F32, 0.0f}, {DataType::QASYMM8, 0.0f}}}}; return absolute_tolerance.at(_params.common_params.target).at(_params.data_type); } @@ -274,13 +240,13 @@ class FullyConnectedVerifyAccessor final : public VerifyAccessor } // namespace -class GraphFullyConnectedValidateExample final : public GraphValidateExample +class GraphFullyConnectedValidateExample final + : public GraphValidateExample { using GraphValidateExample::graph; public: - GraphFullyConnectedValidateExample() - : GraphValidateExample("Fully_connected Graph example") + GraphFullyConnectedValidateExample() : GraphValidateExample("Fully_connected Graph example") { } @@ -289,13 +255,15 @@ class GraphFullyConnectedValidateExample final : public GraphValidateExample>(::std::istream &stream, ConvolutionPaddingMode &Mode) { - static const std::map modes = - { - { "valid", ConvolutionPaddingMode::Valid }, - { "same", ConvolutionPaddingMode::Same }, - { "manual", ConvolutionPaddingMode::Manual } - }; - std::string value; + static const std::map modes = {{"valid", ConvolutionPaddingMode::Valid}, + {"same", ConvolutionPaddingMode::Same}, + {"manual", ConvolutionPaddingMode::Manual}}; + std::string value; stream >> value; #ifndef ARM_COMPUTE_EXCEPTIONS_DISABLED try @@ -66,7 +64,7 @@ inline ::std::istream &operator>>(::std::istream &stream, ConvolutionPaddingMode Mode = modes.at(arm_compute::utility::tolower(value)); #ifndef ARM_COMPUTE_EXCEPTIONS_DISABLED } - catch(const std::out_of_range &) + catch (const std::out_of_range &) { throw std::invalid_argument(value); } @@ -84,7 +82,7 @@ inline ::std::istream &operator>>(::std::istream &stream, ConvolutionPaddingMode */ inline ::std::ostream &operator<<(::std::ostream &os, ConvolutionPaddingMode Mode) { - switch(Mode) + switch (Mode) { case ConvolutionPaddingMode::Valid: os << "Valid"; @@ -105,30 +103,30 @@ inline ::std::ostream &operator<<(::std::ostream &os, ConvolutionPaddingMode Mod /** Structure holding all the input tensor graph parameters */ struct TensorParams { - int width{ 1 }; - int height{ 1 }; - int fm{ 1 }; - int batch{ 1 }; - QuantizationInfo quant_info{ 1.0f, 0 }; + int width{1}; + int height{1}; + int fm{1}; + int batch{1}; + QuantizationInfo quant_info{1.0f, 0}; std::string npy{}; - uint64_t range_low{ 0 }; - uint64_t range_high{ 16 }; + uint64_t range_low{0}; + uint64_t range_high{16}; }; /** Structure holding all the verification graph parameters */ struct VerificationParams { - float absolute_tolerance{ -1.f }; - float relative_tolerance{ -1.f }; - float tolerance_number{ -1.f }; + float absolute_tolerance{-1.f}; + float relative_tolerance{-1.f}; + float tolerance_number{-1.f}; }; /** Structure holding all the common graph parameters */ struct FrameworkParams { - bool help{ false }; - int threads{ 0 }; - arm_compute::graph::Target target{ arm_compute::graph::Target::NEON }; + bool help{false}; + int threads{0}; + arm_compute::graph::Target target{arm_compute::graph::Target::NEON}; }; /** Structure holding all the graph Example parameters */ @@ -140,29 +138,29 @@ struct CommonParams TensorParams bias{}; TensorParams output{}; VerificationParams verification{}; - arm_compute::DataType data_type{ DataType::F32 }; + arm_compute::DataType data_type{DataType::F32}; }; /** Structure holding all the Convolution layer graph parameters */ struct ConvolutionParams { - int depth_multiplier{ 1 }; + int depth_multiplier{1}; /** Padding graph parameters */ - int padding_top{ 0 }; - int padding_bottom{ 0 }; - int padding_left{ 0 }; - int padding_right{ 0 }; - int padding_stride_x{ 0 }; - int padding_stride_y{ 0 }; - ConvolutionPaddingMode padding_mode{ ConvolutionPaddingMode::Valid }; + int padding_top{0}; + int padding_bottom{0}; + int padding_left{0}; + int padding_right{0}; + int padding_stride_x{0}; + int padding_stride_y{0}; + ConvolutionPaddingMode padding_mode{ConvolutionPaddingMode::Valid}; struct { struct { - int X{ 0 }; - int Y{ 0 }; + int X{0}; + int Y{0}; } stride{}; - ConvolutionPaddingMode mode{ ConvolutionPaddingMode::Valid }; + ConvolutionPaddingMode mode{ConvolutionPaddingMode::Valid}; } padding{}; }; @@ -170,7 +168,7 @@ struct ConvolutionParams struct FullyConnectedParams { FullyConnectedLayerInfo info{}; - int num_outputs{ 1 }; + int num_outputs{1}; }; /** Structure holding all the graph Example parameters */ @@ -178,9 +176,10 @@ struct ExampleParams : public CommonParams { FullyConnectedParams fully_connected{}; ConvolutionParams convolution{}; - arm_compute::graph::DepthwiseConvolutionMethod depth_convolution_method{ arm_compute::graph::DepthwiseConvolutionMethod::Default }; - arm_compute::graph::ConvolutionMethod convolution_method{ arm_compute::graph::ConvolutionMethod::Default }; - arm_compute::DataLayout data_layout{ DataLayout::NCHW }; + arm_compute::graph::DepthwiseConvolutionMethod depth_convolution_method{ + arm_compute::graph::DepthwiseConvolutionMethod::Default}; + arm_compute::graph::ConvolutionMethod convolution_method{arm_compute::graph::ConvolutionMethod::Default}; + arm_compute::DataLayout data_layout{DataLayout::NCHW}; }; /** Calculate stride information. @@ -193,12 +192,14 @@ struct ExampleParams : public CommonParams */ inline PadStrideInfo calculate_convolution_padding(ExampleParams params) { - switch(params.convolution.padding_mode) + switch (params.convolution.padding_mode) { case ConvolutionPaddingMode::Manual: { - return PadStrideInfo(params.convolution.padding_stride_x, params.convolution.padding_stride_y, params.convolution.padding_left, params.convolution.padding_right, params.convolution.padding_top, - params.convolution.padding_bottom, DimensionRoundingType::FLOOR); + return PadStrideInfo(params.convolution.padding_stride_x, params.convolution.padding_stride_y, + params.convolution.padding_left, params.convolution.padding_right, + params.convolution.padding_top, params.convolution.padding_bottom, + DimensionRoundingType::FLOOR); } case ConvolutionPaddingMode::Valid: { @@ -206,9 +207,10 @@ inline PadStrideInfo calculate_convolution_padding(ExampleParams params) } case ConvolutionPaddingMode::Same: { - return arm_compute::calculate_same_pad(TensorShape(params.input.width, params.input.height), TensorShape(params.weights.width, params.weights.height), - PadStrideInfo(params.convolution.padding_stride_x, - params.convolution.padding_stride_y)); + return arm_compute::calculate_same_pad( + TensorShape(params.input.width, params.input.height), + TensorShape(params.weights.width, params.weights.height), + PadStrideInfo(params.convolution.padding_stride_x, params.convolution.padding_stride_y)); } default: ARM_COMPUTE_ERROR("NOT SUPPORTED!"); @@ -236,20 +238,19 @@ class CommonGraphValidateOptions relative_tolerance(parser.add_option>("rel_tolerance", -1.0f)), tolerance_number(parser.add_option>("tolerance_num", -1.0f)) { - const std::set supported_targets - { + const std::set supported_targets{ arm_compute::graph::Target::NEON, arm_compute::graph::Target::CL, }; - const std::set supported_data_types - { + const std::set supported_data_types{ DataType::F16, DataType::F32, DataType::QASYMM8, }; - target = parser.add_option>("target", supported_targets, arm_compute::graph::Target::NEON); + target = parser.add_option>("target", supported_targets, + arm_compute::graph::Target::NEON); data_type = parser.add_option>("type", supported_data_types, DataType::F32); target->set_help("Target to execute on"); @@ -329,9 +330,12 @@ void consume_common_graph_parameters(CommonGraphValidateOptions &options, Common * * @return An appropriate tensor accessor */ -inline std::unique_ptr get_accessor(const TensorParams &tensor, PixelValue lower, PixelValue upper, const std::random_device::result_type seed = 0) +inline std::unique_ptr get_accessor(const TensorParams &tensor, + PixelValue lower, + PixelValue upper, + const std::random_device::result_type seed = 0) { - if(!tensor.npy.empty()) + if (!tensor.npy.empty()) { return std::make_unique(tensor.npy); } @@ -346,19 +350,19 @@ template class VerifyAccessor : public graph::ITensorAccessor { public: - using TBias = typename std::conditional::type, uint8_t>::value, int32_t, D>::type; + using TBias = + typename std::conditional::type, uint8_t>::value, int32_t, D>::type; /** Constructor * * @param[in] params Convolution parameters */ - explicit VerifyAccessor(ExampleParams ¶ms) - : _params(std::move(params)) + explicit VerifyAccessor(ExampleParams ¶ms) : _params(std::move(params)) { } // Inherited methods overriden: bool access_tensor(ITensor &tensor) override { - if(_params.output.npy.empty()) + if (_params.output.npy.empty()) { arm_compute::test::SimpleTensor src; arm_compute::test::SimpleTensor weights; @@ -369,8 +373,10 @@ class VerifyAccessor : public graph::ITensorAccessor //Fill the tensors with random values fill_tensor(src, 0, static_cast(_params.input.range_low), static_cast(_params.input.range_high)); - fill_tensor(weights, 1, static_cast(_params.weights.range_low), static_cast(_params.weights.range_high)); - fill_tensor(bias, 2, static_cast(_params.input.range_low), static_cast(_params.input.range_high)); + fill_tensor(weights, 1, static_cast(_params.weights.range_low), + static_cast(_params.weights.range_high)); + fill_tensor(bias, 2, static_cast(_params.input.range_low), + static_cast(_params.input.range_high)); arm_compute::test::SimpleTensor output = reference(src, weights, bias, output_shape(tensor)); @@ -379,7 +385,9 @@ class VerifyAccessor : public graph::ITensorAccessor else { //The user provided a reference file use an npy accessor to validate - arm_compute::graph_utils::NumPyAccessor(_params.output.npy, tensor.info()->tensor_shape(), tensor.info()->data_type()).access_tensor(tensor); + arm_compute::graph_utils::NumPyAccessor(_params.output.npy, tensor.info()->tensor_shape(), + tensor.info()->data_type()) + .access_tensor(tensor); } return false; } @@ -401,9 +409,14 @@ class VerifyAccessor : public graph::ITensorAccessor { ARM_COMPUTE_UNUSED(tensor); //Create Input tensors - src = arm_compute::test::SimpleTensor { TensorShape(_params.input.width, _params.input.height, _params.input.fm, _params.input.batch), _params.data_type, 1, _params.input.quant_info }; - weights = arm_compute::test::SimpleTensor { TensorShape(_params.weights.width, _params.weights.height, _params.weights.fm), _params.data_type, 1, _params.weights.quant_info }; - bias = arm_compute::test::SimpleTensor { TensorShape(_params.input.height), _params.data_type, 1, _params.input.quant_info }; + src = arm_compute::test::SimpleTensor{ + TensorShape(_params.input.width, _params.input.height, _params.input.fm, _params.input.batch), + _params.data_type, 1, _params.input.quant_info}; + weights = arm_compute::test::SimpleTensor{ + TensorShape(_params.weights.width, _params.weights.height, _params.weights.fm), _params.data_type, 1, + _params.weights.quant_info}; + bias = arm_compute::test::SimpleTensor{TensorShape(_params.input.height), _params.data_type, 1, + _params.input.quant_info}; } /** Calculate reference output tensor shape. @@ -414,7 +427,8 @@ class VerifyAccessor : public graph::ITensorAccessor */ virtual TensorShape output_shape(ITensor &tensor) { - return arm_compute::graph_utils::permute_shape(tensor.info()->tensor_shape(), _params.data_layout, DataLayout::NCHW); + return arm_compute::graph_utils::permute_shape(tensor.info()->tensor_shape(), _params.data_layout, + DataLayout::NCHW); } /** Calculate reference tensor. @@ -442,7 +456,10 @@ class VerifyAccessor : public graph::ITensorAccessor * @param[in] low lower bound for random values * @param[in] high upper bound for random values */ - void fill_tensor(arm_compute::test::SimpleTensor &tensor, std::random_device::result_type seed, uint8_t low, uint8_t high) + void fill_tensor(arm_compute::test::SimpleTensor &tensor, + std::random_device::result_type seed, + uint8_t low, + uint8_t high) { ARM_COMPUTE_ERROR_ON(tensor.data_type() != arm_compute::DataType::QASYMM8); @@ -454,7 +471,7 @@ class VerifyAccessor : public graph::ITensorAccessor std::mt19937 gen(seed); std::uniform_int_distribution distribution(qasymm8_low, qasymm8_high); - for(int i = 0; i < tensor.num_elements(); ++i) + for (int i = 0; i < tensor.num_elements(); ++i) { tensor[i] = quantize_qasymm8(distribution(gen), qinfo); } @@ -468,12 +485,15 @@ class VerifyAccessor : public graph::ITensorAccessor * @param[in] low lower bound for random values * @param[in] high upper bound for random values */ - void fill_tensor(arm_compute::test::SimpleTensor &tensor, std::random_device::result_type seed, int32_t low, int32_t high) + void fill_tensor(arm_compute::test::SimpleTensor &tensor, + std::random_device::result_type seed, + int32_t low, + int32_t high) { std::mt19937 gen(seed); std::uniform_int_distribution distribution(static_cast(low), static_cast(high)); - for(int i = 0; i < tensor.num_elements(); ++i) + for (int i = 0; i < tensor.num_elements(); ++i) { tensor[i] = distribution(gen); } @@ -487,13 +507,16 @@ class VerifyAccessor : public graph::ITensorAccessor * @param[in] low lower bound for random values * @param[in] high upper bound for random values */ - void fill_tensor(arm_compute::test::SimpleTensor &tensor, std::random_device::result_type seed, float low, float high) + void fill_tensor(arm_compute::test::SimpleTensor &tensor, + std::random_device::result_type seed, + float low, + float high) { ARM_COMPUTE_ERROR_ON(tensor.data_type() != arm_compute::DataType::F32); std::mt19937 gen(seed); std::uniform_real_distribution distribution(low, high); - for(int i = 0; i < tensor.num_elements(); ++i) + for (int i = 0; i < tensor.num_elements(); ++i) { tensor[i] = distribution(gen); } @@ -507,13 +530,16 @@ class VerifyAccessor : public graph::ITensorAccessor * @param[in] low lower bound for random values * @param[in] high upper bound for random values */ - void fill_tensor(arm_compute::test::SimpleTensor &tensor, std::random_device::result_type seed, half low, half high) + void fill_tensor(arm_compute::test::SimpleTensor &tensor, + std::random_device::result_type seed, + half low, + half high) { ARM_COMPUTE_ERROR_ON(tensor.data_type() != arm_compute::DataType::F16); std::mt19937 gen(seed); std::uniform_real_distribution distribution(static_cast(low), static_cast(high)); - for(int i = 0; i < tensor.num_elements(); ++i) + for (int i = 0; i < tensor.num_elements(); ++i) { tensor[i] = static_cast(distribution(gen)); } @@ -554,26 +580,29 @@ class VerifyAccessor : public graph::ITensorAccessor float user_absolute_tolerance = _params.verification.absolute_tolerance; float user_tolerance_num = _params.verification.tolerance_number; /* If no user input was provided override with defaults. */ - if(user_relative_tolerance == -1) + if (user_relative_tolerance == -1) { user_relative_tolerance = relative_tolerance(); } - if(user_absolute_tolerance == -1) + if (user_absolute_tolerance == -1) { user_absolute_tolerance = absolute_tolerance(); } - if(user_tolerance_num == -1) + if (user_tolerance_num == -1) { user_tolerance_num = tolerance_number(); } - const arm_compute::test::validation::RelativeTolerance rel_tolerance(user_relative_tolerance); /**< Relative tolerance */ - const arm_compute::test::validation::AbsoluteTolerance abs_tolerance(user_absolute_tolerance); /**< Absolute tolerance */ - const float tolerance_num(user_tolerance_num); /**< Tolerance number */ + const arm_compute::test::validation::RelativeTolerance rel_tolerance( + user_relative_tolerance); /**< Relative tolerance */ + const arm_compute::test::validation::AbsoluteTolerance abs_tolerance( + user_absolute_tolerance); /**< Absolute tolerance */ + const float tolerance_num(user_tolerance_num); /**< Tolerance number */ - arm_compute::test::validation::validate(arm_compute::test::Accessor(tensor), output, rel_tolerance, tolerance_num, abs_tolerance); + arm_compute::test::validation::validate(arm_compute::test::Accessor(tensor), output, rel_tolerance, + tolerance_num, abs_tolerance); } ExampleParams _params; @@ -588,22 +617,19 @@ class VerifyAccessor : public graph::ITensorAccessor template