diff options
author | arovir01 <Aron.Virginas-Tar@arm.com> | 2018-10-09 18:04:24 +0100 |
---|---|---|
committer | Matthew Bentham <matthew.bentham@arm.com> | 2018-10-22 16:57:53 +0100 |
commit | 43095f31edf103d71a8e2420b549d21fd349b49e (patch) | |
tree | 1414f25d8fadd4aa84fbed008743c4672b606b26 /src/backends | |
parent | 3b72db05d6f8df28728b292c8bbd27c402dc8704 (diff) | |
download | armnn-43095f31edf103d71a8e2420b549d21fd349b49e.tar.gz |
IVGCVSW-1988: Refactor backend-specific unit tests
Change-Id: I8eca81d2e0780390eaa837c186ffe1c7d41fdebe
Diffstat (limited to 'src/backends')
23 files changed, 369 insertions, 278 deletions
diff --git a/src/backends/cl/CMakeLists.txt b/src/backends/cl/CMakeLists.txt index a7ce893f20..04da6ddcff 100644 --- a/src/backends/cl/CMakeLists.txt +++ b/src/backends/cl/CMakeLists.txt @@ -15,7 +15,8 @@ list(APPEND armnnClBackend_sources ) if(ARMCOMPUTECL) - add_subdirectory(workloads test) + add_subdirectory(workloads) + add_subdirectory(test) endif() add_library(armnnClBackend STATIC ${armnnClBackend_sources}) diff --git a/src/backends/cl/backend.cmake b/src/backends/cl/backend.cmake index 1af88e3c9b..f8a1c1c62a 100644 --- a/src/backends/cl/backend.cmake +++ b/src/backends/cl/backend.cmake @@ -6,6 +6,7 @@ if(ARMCOMPUTECL) add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/cl) list(APPEND armnnLibraries armnnClBackend armnnClBackendWorkloads) + list(APPEND armnnUnitTestLibraries armnnClBackendUnitTests) else() message("CL backend is disabled") add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/cl) diff --git a/src/backends/cl/test/CMakeLists.txt b/src/backends/cl/test/CMakeLists.txt index e69de29bb2..795a7dc9d2 100644 --- a/src/backends/cl/test/CMakeLists.txt +++ b/src/backends/cl/test/CMakeLists.txt @@ -0,0 +1,16 @@ +# +# Copyright © 2017 Arm Ltd. All rights reserved. +# SPDX-License-Identifier: MIT +# + +list(APPEND armnnClBackendUnitTests_sources + ClContextControlFixture.hpp + ClCreateWorkloadTests.cpp + ClLayerSupportTests.cpp + ClLayerTests.cpp +) + +add_library(armnnClBackendUnitTests STATIC ${armnnClBackendUnitTests_sources}) +target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src) +target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn) +target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
\ No newline at end of file diff --git a/src/backends/test/ClContextControlFixture.hpp b/src/backends/cl/test/ClContextControlFixture.hpp index fd53e3fcf3..fd53e3fcf3 100644 --- a/src/backends/test/ClContextControlFixture.hpp +++ b/src/backends/cl/test/ClContextControlFixture.hpp diff --git a/src/backends/test/CreateWorkloadCl.cpp b/src/backends/cl/test/ClCreateWorkloadTests.cpp index d56bad2bb9..659ba82e8a 100644 --- a/src/backends/test/CreateWorkloadCl.cpp +++ b/src/backends/cl/test/ClCreateWorkloadTests.cpp @@ -2,13 +2,15 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // -#include <backends/cl/ClWorkloadFactory.hpp> -#include <backends/reference/RefWorkloadFactory.hpp> + +#include "ClContextControlFixture.hpp" + #include <backends/MemCopyWorkload.hpp> -#include <backends/cl/workloads/ClWorkloadUtils.hpp> -#include <backends/cl/workloads/ClWorkloads.hpp> #include <backends/cl/ClTensorHandle.hpp> -#include "ClContextControlFixture.hpp" +#include <backends/cl/ClWorkloadFactory.hpp> +#include <backends/cl/workloads/ClWorkloads.hpp> +#include <backends/cl/workloads/ClWorkloadUtils.hpp> +#include <backends/reference/RefWorkloadFactory.hpp> #include <test/CreateWorkloadClNeon.hpp> diff --git a/src/backends/cl/test/ClLayerSupportTests.cpp b/src/backends/cl/test/ClLayerSupportTests.cpp new file mode 100644 index 0000000000..513366e8dc --- /dev/null +++ b/src/backends/cl/test/ClLayerSupportTests.cpp @@ -0,0 +1,104 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <armnn/layers/ConvertFp16ToFp32Layer.hpp> +#include <armnn/layers/ConvertFp32ToFp16Layer.hpp> +#include <armnn/test/TensorHelpers.hpp> + +#include <backends/CpuTensorHandle.hpp> +#include <backends/cl/ClWorkloadFactory.hpp> +#include <backends/cl/test/ClContextControlFixture.hpp> +#include <backends/test/IsLayerSupportedTestImpl.hpp> +#include <backends/test/LayerTests.hpp> + +#include <boost/test/unit_test.hpp> + +#include <string> + +BOOST_AUTO_TEST_SUITE(ClLayerSupport) + +BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat16Cl, ClContextControlFixture) +{ + armnn::ClWorkloadFactory factory; + IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float16>(&factory); +} + +BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat32Cl, ClContextControlFixture) +{ + armnn::ClWorkloadFactory factory; + IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float32>(&factory); +} + +BOOST_FIXTURE_TEST_CASE(IsLayerSupportedUint8Cl, ClContextControlFixture) +{ + armnn::ClWorkloadFactory factory; + IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory); +} + +BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedCl, ClContextControlFixture) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer, + armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported); + + BOOST_CHECK(result); +} + +BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputCl, ClContextControlFixture) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer, + armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported); + + BOOST_CHECK(!result); + BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float16"); +} + +BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputCl, ClContextControlFixture) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer, + armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported); + + BOOST_CHECK(!result); + BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float32"); +} + +BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedCl, ClContextControlFixture) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer, + armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported); + + BOOST_CHECK(result); +} + +BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputCl, ClContextControlFixture) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer, + armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported); + + BOOST_CHECK(!result); + BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float32"); +} + +BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputCl, ClContextControlFixture) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer, + armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported); + + BOOST_CHECK(!result); + BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float16"); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/backends/test/ArmComputeCl.cpp b/src/backends/cl/test/ClLayerTests.cpp index f4ead34c58..ab63ba4abb 100644 --- a/src/backends/test/ArmComputeCl.cpp +++ b/src/backends/cl/test/ClLayerTests.cpp @@ -2,24 +2,27 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // -#include <boost/test/unit_test.hpp> + +#include "ClContextControlFixture.hpp" + #include "test/TensorHelpers.hpp" -#include "LayerTests.hpp" +#include "test/UnitTests.hpp" #include <backends/CpuTensorHandle.hpp> +#include <backends/cl/ClLayerSupport.hpp> #include <backends/cl/ClWorkloadFactory.hpp> #include <backends/cl/workloads/ClWorkloadUtils.hpp> #include <backends/reference/RefWorkloadFactory.hpp> -#include <backends/cl/ClLayerSupport.hpp> -#include "ActivationFixture.hpp" -#include "ClContextControlFixture.hpp" +#include <backends/test/ActivationFixture.hpp> +#include <backends/test/LayerTests.hpp> #include <arm_compute/core/CL/CLKernelLibrary.h> #include <arm_compute/runtime/CL/CLScheduler.h> -#include <string> -#include <iostream> -#include "test/UnitTests.hpp" +#include <boost/test/unit_test.hpp> + +#include <iostream> +#include <string> BOOST_FIXTURE_TEST_SUITE(Compute_ArmComputeCl, ClContextControlFixture) using FactoryType = armnn::ClWorkloadFactory; diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt index c6492bc076..93c7955a5f 100644 --- a/src/backends/neon/CMakeLists.txt +++ b/src/backends/neon/CMakeLists.txt @@ -14,7 +14,8 @@ if(ARMCOMPUTENEON) NeonTensorHandle.hpp ) - add_subdirectory(workloads test) + add_subdirectory(workloads) + add_subdirectory(test) else() list(APPEND armnnNeonBackend_sources NeonLayerSupport.cpp diff --git a/src/backends/neon/backend.cmake b/src/backends/neon/backend.cmake index 5f02c845ed..0240d527b3 100644 --- a/src/backends/neon/backend.cmake +++ b/src/backends/neon/backend.cmake @@ -6,6 +6,7 @@ if(ARMCOMPUTENEON) add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/neon) list(APPEND armnnLibraries armnnNeonBackend armnnNeonBackendWorkloads) + list(APPEND armnnUnitTestLibraries armnnNeonBackendUnitTests) else() message("NEON backend is disabled") add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/neon) diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt index f41a074999..82156f380b 100644 --- a/src/backends/neon/test/CMakeLists.txt +++ b/src/backends/neon/test/CMakeLists.txt @@ -2,3 +2,14 @@ # Copyright © 2017 Arm Ltd. All rights reserved. # SPDX-License-Identifier: MIT # + +list(APPEND armnnNeonBackendUnitTests_sources + NeonCreateWorkloadTests.cpp + NeonLayerSupportTests.cpp + NeonLayerTests.cpp +) + +add_library(armnnNeonBackendUnitTests STATIC ${armnnNeonBackendUnitTests_sources}) +target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src) +target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn) +target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
\ No newline at end of file diff --git a/src/backends/test/CreateWorkloadNeon.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp index b2ec563a69..d1a5b2a5f2 100644 --- a/src/backends/test/CreateWorkloadNeon.cpp +++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp @@ -2,13 +2,14 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // + +#include <armnn/test/CreateWorkloadClNeon.hpp> + +#include <backends/MemCopyWorkload.hpp> #include <backends/neon/NeonWorkloadFactory.hpp> #include <backends/neon/NeonTensorHandle.hpp> #include <backends/neon/workloads/NeonWorkloadUtils.hpp> #include <backends/neon/workloads/NeonWorkloads.hpp> -#include <backends/MemCopyWorkload.hpp> - -#include "test/CreateWorkloadClNeon.hpp" BOOST_AUTO_TEST_SUITE(CreateWorkloadNeon) diff --git a/src/backends/neon/test/NeonLayerSupportTests.cpp b/src/backends/neon/test/NeonLayerSupportTests.cpp new file mode 100644 index 0000000000..db7897fc28 --- /dev/null +++ b/src/backends/neon/test/NeonLayerSupportTests.cpp @@ -0,0 +1,59 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <armnn/layers/ConvertFp16ToFp32Layer.hpp> +#include <armnn/layers/ConvertFp32ToFp16Layer.hpp> +#include <armnn/test/TensorHelpers.hpp> + +#include <backends/CpuTensorHandle.hpp> +#include <backends/neon/NeonWorkloadFactory.hpp> +#include <backends/test/IsLayerSupportedTestImpl.hpp> +#include <backends/test/LayerTests.hpp> + +#include <boost/test/unit_test.hpp> + +#include <string> + +BOOST_AUTO_TEST_SUITE(NeonLayerSupport) + +BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat16Neon) +{ + armnn::NeonWorkloadFactory factory; + IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float16>(&factory); +} + +BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat32Neon) +{ + armnn::NeonWorkloadFactory factory; + IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float32>(&factory); +} + +BOOST_AUTO_TEST_CASE(IsLayerSupportedUint8Neon) +{ + armnn::NeonWorkloadFactory factory; + IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory); +} + +BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedNeon) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp16ToFp32Layer, + armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported); + + BOOST_CHECK(result); +} + +BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedNeon) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp32ToFp16Layer, + armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported); + + BOOST_CHECK(result); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/backends/test/ArmComputeNeon.cpp b/src/backends/neon/test/NeonLayerTests.cpp index 045aa30889..2d4ee996a4 100644 --- a/src/backends/test/ArmComputeNeon.cpp +++ b/src/backends/neon/test/NeonLayerTests.cpp @@ -2,21 +2,20 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // -#include <boost/test/unit_test.hpp> -#include "test/TensorHelpers.hpp" -#include "LayerTests.hpp" +#include <armnn/test/TensorHelpers.hpp> +#include <armnn/test/UnitTests.hpp> #include <backends/CpuTensorHandle.hpp> #include <backends/neon/NeonLayerSupport.hpp> #include <backends/neon/NeonWorkloadFactory.hpp> #include <backends/reference/RefWorkloadFactory.hpp> +#include <backends/test/ActivationFixture.hpp> +#include <backends/test/LayerTests.hpp> #include <backends/test/TensorCopyUtils.hpp> -#include "ActivationFixture.hpp" - -#include "WorkloadTestUtils.hpp" +#include <backends/test/WorkloadTestUtils.hpp> -#include "test/UnitTests.hpp" +#include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_SUITE(Compute_ArmComputeNeon) using FactoryType = armnn::NeonWorkloadFactory; diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt index 9810cf86e2..5aa3fc27f5 100644 --- a/src/backends/reference/CMakeLists.txt +++ b/src/backends/reference/CMakeLists.txt @@ -17,5 +17,5 @@ target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src) target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn) target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils) -add_subdirectory(workloads test) - +add_subdirectory(workloads) +add_subdirectory(test) diff --git a/src/backends/reference/backend.cmake b/src/backends/reference/backend.cmake index 95e72a438d..5ae088a124 100644 --- a/src/backends/reference/backend.cmake +++ b/src/backends/reference/backend.cmake @@ -5,3 +5,4 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/reference) list(APPEND armnnLibraries armnnRefBackend armnnRefBackendWorkloads) +list(APPEND armnnUnitTestLibraries armnnRefBackendUnitTests) diff --git a/src/backends/reference/test/CMakeLists.txt b/src/backends/reference/test/CMakeLists.txt index f41a074999..8f86f86d39 100644 --- a/src/backends/reference/test/CMakeLists.txt +++ b/src/backends/reference/test/CMakeLists.txt @@ -2,3 +2,14 @@ # Copyright © 2017 Arm Ltd. All rights reserved. # SPDX-License-Identifier: MIT # + +list(APPEND armnnRefBackendUnitTests_sources + RefCreateWorkloadTests.cpp + RefLayerSupportTests.cpp + RefLayerTests.cpp +) + +add_library(armnnRefBackendUnitTests STATIC ${armnnRefBackendUnitTests_sources}) +target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src) +target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn) +target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
\ No newline at end of file diff --git a/src/backends/test/CreateWorkloadRef.cpp b/src/backends/reference/test/RefCreateWorkloadTests.cpp index c30093da92..e88fbed014 100644 --- a/src/backends/test/CreateWorkloadRef.cpp +++ b/src/backends/reference/test/RefCreateWorkloadTests.cpp @@ -2,11 +2,12 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // + +#include <armnn/test/CreateWorkload.hpp> + +#include <backends/CpuTensorHandle.hpp> #include <backends/reference/RefWorkloadFactory.hpp> #include <backends/reference/workloads/RefWorkloads.hpp> -#include <backends/CpuTensorHandle.hpp> - -#include "test/CreateWorkload.hpp" namespace { diff --git a/src/backends/reference/test/RefLayerSupportTests.cpp b/src/backends/reference/test/RefLayerSupportTests.cpp new file mode 100644 index 0000000000..be3f3f8f97 --- /dev/null +++ b/src/backends/reference/test/RefLayerSupportTests.cpp @@ -0,0 +1,118 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <armnn/layers/ConvertFp16ToFp32Layer.hpp> +#include <armnn/layers/ConvertFp32ToFp16Layer.hpp> +#include <armnn/test/TensorHelpers.hpp> + +#include <backends/CpuTensorHandle.hpp> +#include <backends/reference/RefWorkloadFactory.hpp> +#include <backends/test/LayerTests.hpp> +#include <backends/test/IsLayerSupportedTestImpl.hpp> + +#include <boost/test/unit_test.hpp> + +#include <string> + +namespace +{ + +bool LayerTypeMatchesTest() +{ + return LayerTypeMatchesTestImpl<armnn::LayerType::FirstLayer>(Tag<armnn::LayerType::FirstLayer>()); +}; + +} // anonymous namespace + +BOOST_AUTO_TEST_SUITE(RefLayerSupported) + +BOOST_AUTO_TEST_CASE(IsLayerSupportedLayerTypeMatches) +{ + LayerTypeMatchesTest(); +} + +BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat16Reference) +{ + armnn::RefWorkloadFactory factory; + IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float16>(&factory); +} + +BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat32Reference) +{ + armnn::RefWorkloadFactory factory; + IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float32>(&factory); +} + +BOOST_AUTO_TEST_CASE(IsLayerSupportedUint8Reference) +{ + armnn::RefWorkloadFactory factory; + IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory); +} + +BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedReference) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer, + armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported); + + BOOST_CHECK(result); +} + +BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputReference) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer, + armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported); + + BOOST_CHECK(!result); + BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float32 data type input"); +} + +BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputReference) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer, + armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported); + + BOOST_CHECK(!result); + BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float16 data type output"); +} + +BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedReference) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer, + armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported); + + BOOST_CHECK(result); +} + +BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputReference) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer, + armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported); + + BOOST_CHECK(!result); + BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float16 data type input"); +} + +BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputReference) +{ + std::string reasonIfUnsupported; + + bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer, + armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported); + + BOOST_CHECK(!result); + BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float32 data type output"); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/backends/test/Reference.cpp b/src/backends/reference/test/RefLayerTests.cpp index 05ebf2e8b0..de2c2fe332 100644 --- a/src/backends/test/Reference.cpp +++ b/src/backends/reference/test/RefLayerTests.cpp @@ -2,14 +2,14 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // -#include <boost/test/unit_test.hpp> -#include "LayerTests.hpp" #include "test/TensorHelpers.hpp" +#include "test/UnitTests.hpp" #include <backends/reference/RefWorkloadFactory.hpp> +#include <backends/test/LayerTests.hpp> -#include "test/UnitTests.hpp" +#include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_SUITE(Compute_Reference) using FactoryType = armnn::RefWorkloadFactory; diff --git a/src/backends/test/ActivationFixture.hpp b/src/backends/test/ActivationFixture.hpp index d9d4ca7470..5028b252e1 100644 --- a/src/backends/test/ActivationFixture.hpp +++ b/src/backends/test/ActivationFixture.hpp @@ -7,6 +7,11 @@ #include "TensorCopyUtils.hpp" #include "WorkloadTestUtils.hpp" +#include <armnn/test/TensorHelpers.hpp> + +#include <boost/numeric/conversion/cast.hpp> +#include <boost/multi_array.hpp> + struct ActivationFixture { ActivationFixture() diff --git a/src/backends/test/IsLayerSupportedTest.cpp b/src/backends/test/IsLayerSupportedTest.cpp deleted file mode 100644 index 089822dade..0000000000 --- a/src/backends/test/IsLayerSupportedTest.cpp +++ /dev/null @@ -1,239 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// -#include <boost/test/unit_test.hpp> - -#include <test/TensorHelpers.hpp> -#include "LayerTests.hpp" - -#include <backends/CpuTensorHandle.hpp> -#include <backends/reference/RefWorkloadFactory.hpp> -#include <backends/neon/NeonWorkloadFactory.hpp> - -#include <string> -#include <iostream> -#include <backends/cl/ClWorkloadFactory.hpp> - -#include "IsLayerSupportedTestImpl.hpp" -#include <backends/test/ClContextControlFixture.hpp> - -#include <layers/ConvertFp16ToFp32Layer.hpp> -#include <layers/ConvertFp32ToFp16Layer.hpp> - -BOOST_AUTO_TEST_SUITE(IsLayerSupported) - -BOOST_AUTO_TEST_CASE(IsLayerSupportedLayerTypeMatches) -{ - LayerTypeMatchesTest(); -} - -BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat16Reference) -{ - armnn::RefWorkloadFactory factory; - IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float16>(&factory); -} - -BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat32Reference) -{ - armnn::RefWorkloadFactory factory; - IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float32>(&factory); -} - -BOOST_AUTO_TEST_CASE(IsLayerSupportedUint8Reference) -{ - armnn::RefWorkloadFactory factory; - IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory); -} - -BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedReference) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer, - armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported); - - BOOST_CHECK(result); -} - -BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputReference) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer, - armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported); - - BOOST_CHECK(!result); - BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float32 data type input"); -} - -BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputReference) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer, - armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported); - - BOOST_CHECK(!result); - BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float16 data type output"); -} - -BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedReference) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer, - armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported); - - BOOST_CHECK(result); -} - -BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputReference) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer, - armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported); - - BOOST_CHECK(!result); - BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float16 data type input"); -} - -BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputReference) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer, - armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported); - - BOOST_CHECK(!result); - BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float32 data type output"); -} - -#ifdef ARMCOMPUTENEON_ENABLED -BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat16Neon) -{ - armnn::NeonWorkloadFactory factory; - IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float16>(&factory); -} - -BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat32Neon) -{ - armnn::NeonWorkloadFactory factory; - IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float32>(&factory); -} - -BOOST_AUTO_TEST_CASE(IsLayerSupportedUint8Neon) -{ - armnn::NeonWorkloadFactory factory; - IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory); -} - -BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedNeon) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp16ToFp32Layer, - armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported); - - BOOST_CHECK(result); -} - -BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedNeon) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp32ToFp16Layer, - armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported); - - BOOST_CHECK(result); -} -#endif //#ifdef ARMCOMPUTENEON_ENABLED. - - -#ifdef ARMCOMPUTECL_ENABLED - -BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat16Cl, ClContextControlFixture) -{ - armnn::ClWorkloadFactory factory; - IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float16>(&factory); -} - -BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat32Cl, ClContextControlFixture) -{ - armnn::ClWorkloadFactory factory; - IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float32>(&factory); -} - -BOOST_FIXTURE_TEST_CASE(IsLayerSupportedUint8Cl, ClContextControlFixture) -{ - armnn::ClWorkloadFactory factory; - IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory); -} - -BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedCl, ClContextControlFixture) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer, - armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported); - - BOOST_CHECK(result); -} - -BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputCl, ClContextControlFixture) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer, - armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported); - - BOOST_CHECK(!result); - BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float16"); -} - -BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputCl, ClContextControlFixture) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer, - armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported); - - BOOST_CHECK(!result); - BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float32"); -} - -BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedCl, ClContextControlFixture) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer, - armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported); - - BOOST_CHECK(result); -} - -BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputCl, ClContextControlFixture) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer, - armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported); - - BOOST_CHECK(!result); - BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float32"); -} - -BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputCl, ClContextControlFixture) -{ - std::string reasonIfUnsupported; - - bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer, - armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported); - - BOOST_CHECK(!result); - BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float16"); -} -#endif //#ifdef ARMCOMPUTECL_ENABLED. - -BOOST_AUTO_TEST_SUITE_END() diff --git a/src/backends/test/IsLayerSupportedTestImpl.hpp b/src/backends/test/IsLayerSupportedTestImpl.hpp index 0f31c8ed08..867f7f2732 100644 --- a/src/backends/test/IsLayerSupportedTestImpl.hpp +++ b/src/backends/test/IsLayerSupportedTestImpl.hpp @@ -537,11 +537,6 @@ bool LayerTypeMatchesTestImpl(Tag<Type>) LayerTypeMatchesTestImpl<NextType(Type)>(Tag<NextType(Type)>()); }; -bool LayerTypeMatchesTest() -{ - return LayerTypeMatchesTestImpl<armnn::LayerType::FirstLayer>(Tag<armnn::LayerType::FirstLayer>()); -}; - template<typename FactoryType, typename LayerType, armnn::DataType InputDataType , armnn::DataType OutputDataType> bool IsConvertLayerSupportedTests(std::string& reasonIfUnsupported) { diff --git a/src/backends/test/LayerTests.cpp b/src/backends/test/LayerTests.cpp index 17f3ae12e1..d88db06411 100644 --- a/src/backends/test/LayerTests.cpp +++ b/src/backends/test/LayerTests.cpp @@ -39,7 +39,7 @@ #include "ConvertFp16ToFp32TestImpl.hpp" #include "ConvertFp32ToFp16TestImpl.hpp" -#include "ClContextControlFixture.hpp" +#include <backends/cl/test/ClContextControlFixture.hpp> // 3-channel 16x8 image used as common input data for a number of Conv2d tests. static std::vector<float> ConvInput3x8x16({ |