aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorColm Donelan <Colm.Donelan@arm.com>2021-03-24 14:51:31 +0000
committerColm Donelan <colm.donelan@arm.com>2021-03-25 09:13:55 +0000
commitade8c1daab87abf628c42a0bbc002193d7ac40f6 (patch)
tree6df07d11a9a2fb7a38ffc496b82182ea6886fe1c /src
parentf0a6dec75832604d5ab18242dc216852821a8279 (diff)
downloadarmnn-ade8c1daab87abf628c42a0bbc002193d7ac40f6.tar.gz
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 <Colm.Donelan@arm.com> Change-Id: Icb16d8bbb784fb0357deef281d7aa713e11af8ac
Diffstat (limited to 'src')
-rw-r--r--src/backends/neon/test/CMakeLists.txt27
-rw-r--r--src/backends/neon/test/NeonLayerTests.cpp27
-rw-r--r--src/backends/neon/test/NeonLayerTests_NDK_Bug.cpp54
3 files changed, 98 insertions, 10 deletions
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<DataType::Float32>)
+// Moved to NeonLayerTests_NDK_Bug.cpp
+//ARMNN_AUTO_TEST_CASE_WITH_THF(LogSoftmaxFloat32_1, LogSoftmaxTest1<DataType::Float32>)
// 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<DataType::Float32>)
+// Moved to NeonLayerTests_NDK_Bug.cpp
+//ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumFloat32, ReduceSumSimpleTest<DataType::Float32>)
ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_1, ReduceSumSingleAxisTest1<DataType::Float32>)
ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_2, ReduceSumSingleAxisTest2<DataType::Float32>)
-ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_3, ReduceSumSingleAxisTest3<DataType::Float32>)
+// Moved to NeonLayerTests_NDK_Bug.cpp
+//ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_3, ReduceSumSingleAxisTest3<DataType::Float32>)
// ReduceMax
ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceMaxFloat32, ReduceMaxSimpleTest<DataType::Float32>)
@@ -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 <test/TensorHelpers.hpp>
+#include <test/UnitTests.hpp>
+
+#include <neon/NeonLayerSupport.hpp>
+#include <neon/NeonWorkloadFactory.hpp>
+
+#include <reference/RefWorkloadFactory.hpp>
+
+#include <backendsCommon/test/ActivationFixture.hpp>
+#include <backendsCommon/test/LayerTests.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+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<DataType::Float32>)
+
+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<DataType::Float32>)
+
+ARMNN_AUTO_TEST_CASE_WITH_THF(ReduceSumSingleAxisFloat32_3, ReduceSumSingleAxisTest3<DataType::Float32>)
+
+
+BOOST_AUTO_TEST_SUITE_END()