From ade8c1daab87abf628c42a0bbc002193d7ac40f6 Mon Sep 17 00:00:00 2001 From: Colm Donelan Date: Wed, 24 Mar 2021 14:51:31 +0000 Subject: IVGCVSW-5676 Eliminating some Neon unit tests for debug builds. * Creating a new NeonLayerTests_NDK_Bug test class. * Moving a subset of tests effected by an NDK bug from NeonLayerTests into NeonLayerTests_NDK_Bug. * Excluding NeonLayerTests_NDK_Bug from the build if it's an Android debug build and NDK is less than r21. Signed-off-by: Colm Donelan Change-Id: Icb16d8bbb784fb0357deef281d7aa713e11af8ac --- src/backends/neon/test/CMakeLists.txt | 27 ++++++++++++ src/backends/neon/test/NeonLayerTests.cpp | 27 +++++++----- src/backends/neon/test/NeonLayerTests_NDK_Bug.cpp | 54 +++++++++++++++++++++++ 3 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 src/backends/neon/test/NeonLayerTests_NDK_Bug.cpp (limited to 'src/backends') diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt index a821df7284..5c37f1f2a7 100644 --- a/src/backends/neon/test/CMakeLists.txt +++ b/src/backends/neon/test/CMakeLists.txt @@ -16,6 +16,33 @@ list(APPEND armnnNeonBackendUnitTests_sources NeonWorkloadFactoryHelper.hpp ) +# There's a known Android NDK bug which causes a subset of NeonLayerTests to +# fail. We'll exclude these tests in NeonLayerTests_NDK_Bug.cpp if we're doing +# a debug build and NDK is less than r21. +# https://github.com/android/ndk/issues/1135 + +# Default to always including these tests. +set(INCLUDE_NDK_BUG_TESTS "ON") +# Reconsider if we in a debug build. +if ( NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release" ) + # And NDK_VERSION has been set. + if ( DEFINED NDK_VERSION ) + # And the version is less than r21. + if ( ${NDK_VERSION} STRLESS "r21" ) + set(INCLUDE_NDK_BUG_TESTS "OFF") + endif() + endif() +endif() + +if ( INCLUDE_NDK_BUG_TESTS STREQUAL "ON" ) + list(APPEND armnnNeonBackendUnitTests_sources + NeonLayerTests_NDK_Bug.cpp + ) + message ( "Added NeonLayerTests_NDK_Bug.cpp" ) +else() + +endif() + if (ARMNNREF) list(APPEND armnnNeonBackendUnitTests_sources NeonFallbackTests.cpp diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp index 8cccf6f780..c63f0c286f 100644 --- a/src/backends/neon/test/NeonLayerTests.cpp +++ b/src/backends/neon/test/NeonLayerTests.cpp @@ -505,13 +505,15 @@ ARMNN_AUTO_TEST_CASE_WITH_THF(Tanh, TanhTest) ARMNN_AUTO_TEST_CASE_WITH_THF(Elu, EluTest) // Softmax -ARMNN_AUTO_TEST_CASE_WITH_THF(SimpleSoftmaxBeta1, SimpleSoftmaxTest, 1.0f) -ARMNN_AUTO_TEST_CASE_WITH_THF(SimpleSoftmaxBeta2, SimpleSoftmaxTest, 2.0f) +// Moved to NeonLayerTests_NDK_Bug.cpp +//ARMNN_AUTO_TEST_CASE_WITH_THF(SimpleSoftmaxBeta1, SimpleSoftmaxTest, 1.0f) +//ARMNN_AUTO_TEST_CASE_WITH_THF(SimpleSoftmaxBeta2, SimpleSoftmaxTest, 2.0f) ARMNN_AUTO_TEST_CASE_WITH_THF(SimpleSoftmaxBeta1Uint8, SimpleSoftmaxUint8Test, 1.0f) ARMNN_AUTO_TEST_CASE_WITH_THF(SimpleSoftmaxBeta2Uint8, SimpleSoftmaxUint8Test, 2.0f) // LogSoftmax -ARMNN_AUTO_TEST_CASE_WITH_THF(LogSoftmaxFloat32_1, LogSoftmaxTest1) +// Moved to NeonLayerTests_NDK_Bug.cpp +//ARMNN_AUTO_TEST_CASE_WITH_THF(LogSoftmaxFloat32_1, LogSoftmaxTest1) // Space To Batch Nd ARMNN_AUTO_TEST_CASE_WITH_THF(SpaceToBatchNdSimpleFloat32, SpaceToBatchNdSimpleFloat32Test) @@ -702,7 +704,8 @@ ARMNN_AUTO_TEST_CASE_WITH_THF(L2Normalization2d, L2Normalization2dTest, DataLayo ARMNN_AUTO_TEST_CASE_WITH_THF(L2Normalization3d, L2Normalization3dTest, DataLayout::NCHW) ARMNN_AUTO_TEST_CASE_WITH_THF(L2Normalization4d, L2Normalization4dTest, DataLayout::NCHW) -ARMNN_AUTO_TEST_CASE_WITH_THF(L2Normalization1dNhwc, L2Normalization1dTest, DataLayout::NHWC) +// Moved to NeonLayerTests_NDK_Bug.cpp +//ARMNN_AUTO_TEST_CASE_WITH_THF(L2Normalization1dNhwc, L2Normalization1dTest, DataLayout::NHWC) ARMNN_AUTO_TEST_CASE_WITH_THF(L2Normalization2dNhwc, L2Normalization2dTest, DataLayout::NHWC) ARMNN_AUTO_TEST_CASE_WITH_THF(L2Normalization3dNhwc, L2Normalization3dTest, DataLayout::NHWC) ARMNN_AUTO_TEST_CASE_WITH_THF(L2Normalization4dNhwc, L2Normalization4dTest, DataLayout::NHWC) @@ -819,8 +822,9 @@ ARMNN_AUTO_TEST_CASE_WITH_THF(LstmLayerFloat32NoCifgNoPeepholeNoProjection, LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest) ARMNN_AUTO_TEST_CASE_WITH_THF(LstmLayerFloat32NoCifgWithPeepholeWithProjection, LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest) -ARMNN_AUTO_TEST_CASE_WITH_THF(LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNorm, - LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNormTest) +// Moved to NeonLayerTests_NDK_Bug.cpp +//ARMNN_AUTO_TEST_CASE_WITH_THF(LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNorm, +// LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNormTest) // QLstm ARMNN_AUTO_TEST_CASE_WITH_THF(QLstm, QLstmTest) @@ -1373,10 +1377,12 @@ ARMNN_AUTO_TEST_CASE_WITH_THF(LogicalOrBroadcast2, LogicalOrBroadcast2Test) ARMNN_AUTO_TEST_CASE_WITH_THF(LogicalOrBroadcast3, LogicalOrBroadcast3Test) // ReduceSum -ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumFloat32, ReduceSumSimpleTest) +// Moved to NeonLayerTests_NDK_Bug.cpp +//ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumFloat32, ReduceSumSimpleTest) ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_1, ReduceSumSingleAxisTest1) ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_2, ReduceSumSingleAxisTest2) -ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_3, ReduceSumSingleAxisTest3) +// Moved to NeonLayerTests_NDK_Bug.cpp +//ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_3, ReduceSumSingleAxisTest3) // ReduceMax ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceMaxFloat32, ReduceMaxSimpleTest) @@ -1429,8 +1435,9 @@ ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(CompareL2Pooling2dWithReference, Compa ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(UNSUPPORTED_CompareL2Pooling2dWithReferenceUint8, ComparePooling2dUint8Test, PoolingAlgorithm::L2) -ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(CompareSoftmaxBeta1WithReference, CompareSoftmaxTest, 1.0f) -ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(CompareSoftmaxBeta2WithReference, CompareSoftmaxTest, 2.0f) +// Moved to NeonLayerTests_NDK_Bug.cpp +//ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(CompareSoftmaxBeta1WithReference, CompareSoftmaxTest, 1.0f) +//ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(CompareSoftmaxBeta2WithReference, CompareSoftmaxTest, 2.0f) ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(CompareSoftmaxUint8Beta1WithReference, CompareSoftmaxUint8Test, 1.0f) ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(CompareSoftmaxUint8Beta2WithReference, CompareSoftmaxUint8Test, 2.0f) diff --git a/src/backends/neon/test/NeonLayerTests_NDK_Bug.cpp b/src/backends/neon/test/NeonLayerTests_NDK_Bug.cpp new file mode 100644 index 0000000000..ca6dea9fab --- /dev/null +++ b/src/backends/neon/test/NeonLayerTests_NDK_Bug.cpp @@ -0,0 +1,54 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "NeonWorkloadFactoryHelper.hpp" + +#include +#include + +#include +#include + +#include + +#include +#include + +#include + +BOOST_AUTO_TEST_SUITE(Compute_ArmComputeNeon) + +using namespace armnn; + +using FactoryType = NeonWorkloadFactory; + +// ============================================================================ +// This is a specific subset of NeonLayerTests that can fail because of a known problem +// in the Android NDK. https://github.com/android/ndk/issues/1135 +// We extract them here so then in the case of a debug Android build they can be excluded. +// The tests will pass in a release build. The problem has been corrected in NDK r21. + +// Softmax +ARMNN_AUTO_TEST_CASE_WITH_THF(SimpleSoftmaxBeta1, SimpleSoftmaxTest, 1.0f) +ARMNN_AUTO_TEST_CASE_WITH_THF(SimpleSoftmaxBeta2, SimpleSoftmaxTest, 2.0f) + +// LogSoftmax +ARMNN_AUTO_TEST_CASE_WITH_THF(LogSoftmaxFloat32_1, LogSoftmaxTest1) + +ARMNN_AUTO_TEST_CASE_WITH_THF(L2Normalization1dNhwc, L2Normalization1dTest, DataLayout::NHWC) + +ARMNN_AUTO_TEST_CASE_WITH_THF(LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNorm, + LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNormTest) + +ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(CompareSoftmaxBeta1WithReference, CompareSoftmaxTest, 1.0f) +ARMNN_COMPARE_REF_AUTO_TEST_CASE_WITH_THF(CompareSoftmaxBeta2WithReference, CompareSoftmaxTest, 2.0f) + +// ReduceSum +ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumFloat32, ReduceSumSimpleTest) + +ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_3, ReduceSumSingleAxisTest3) + + +BOOST_AUTO_TEST_SUITE_END() -- cgit v1.2.1