From ac60d28414041774d7a4c8b6b5c4b0991712ef0f Mon Sep 17 00:00:00 2001 From: Matteo Martincigh Date: Thu, 25 Jul 2019 15:25:44 +0100 Subject: IVGCVSW-3543 Implement the backend versioning algorithm * Added version structure for backends, with comparisons operators * Added version to IBackendInternal * Added version utility function to DynamicBackendUtils class Signed-off-by: Matteo Martincigh Change-Id: I3697469675c27f79f7cfb296cfa69ec7e06375e5 --- src/backends/backendsCommon/test/CMakeLists.txt | 2 + .../backendsCommon/test/DynamicBackendTests.cpp | 12 +++++ .../backendsCommon/test/DynamicBackendTests.hpp | 61 ++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 src/backends/backendsCommon/test/DynamicBackendTests.cpp create mode 100644 src/backends/backendsCommon/test/DynamicBackendTests.hpp (limited to 'src/backends/backendsCommon/test') diff --git a/src/backends/backendsCommon/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt index 7c2d0ebfa8..3ddaaaf162 100644 --- a/src/backends/backendsCommon/test/CMakeLists.txt +++ b/src/backends/backendsCommon/test/CMakeLists.txt @@ -19,6 +19,8 @@ list(APPEND armnnBackendsCommonUnitTests_sources DequantizeEndToEndTestImpl.hpp DetectionPostProcessLayerTestImpl.hpp DetectionPostProcessTestImpl.hpp + DynamicBackendTests.cpp + DynamicBackendTests.hpp EndToEndTestImpl.hpp FullyConnectedTestImpl.hpp GatherTestImpl.hpp diff --git a/src/backends/backendsCommon/test/DynamicBackendTests.cpp b/src/backends/backendsCommon/test/DynamicBackendTests.cpp new file mode 100644 index 0000000000..5104d0663d --- /dev/null +++ b/src/backends/backendsCommon/test/DynamicBackendTests.cpp @@ -0,0 +1,12 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "DynamicBackendTests.hpp" + +BOOST_AUTO_TEST_SUITE(DynamicBackendTests) + +ARMNN_SIMPLE_TEST_CASE(BackendVersioning, BackendVersioningTestImpl); + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/backends/backendsCommon/test/DynamicBackendTests.hpp b/src/backends/backendsCommon/test/DynamicBackendTests.hpp new file mode 100644 index 0000000000..3b0c95b00f --- /dev/null +++ b/src/backends/backendsCommon/test/DynamicBackendTests.hpp @@ -0,0 +1,61 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include + +#include + +#include + +void BackendVersioningTestImpl() +{ + class TestDynamicBackendUtils : public armnn::DynamicBackendUtils + { + public: + static bool IsBackendCompatibleTest(const armnn::BackendVersion& backendApiVersion, + const armnn::BackendVersion& backendVersion) + { + return IsBackendCompatibleImpl(backendApiVersion, backendVersion); + } + }; + + // The backend API version used for the tests + armnn::BackendVersion backendApiVersion{ 2, 4 }; + + // Same backend and backend API versions are compatible with the backend API + armnn::BackendVersion sameBackendVersion{ 2, 4 }; + BOOST_TEST(sameBackendVersion == backendApiVersion); + BOOST_TEST(sameBackendVersion <= backendApiVersion); + BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion, sameBackendVersion) == true); + + // Backend versions that differ from the backend API version by major revision are not compatible + // with the backend API + armnn::BackendVersion laterMajorBackendVersion{ 3, 4 }; + BOOST_TEST(!(laterMajorBackendVersion == backendApiVersion)); + BOOST_TEST(!(laterMajorBackendVersion <= backendApiVersion)); + BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion, laterMajorBackendVersion) == false); + + armnn::BackendVersion earlierMajorBackendVersion{ 1, 4 }; + BOOST_TEST(!(earlierMajorBackendVersion == backendApiVersion)); + BOOST_TEST(earlierMajorBackendVersion <= backendApiVersion); + BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion, + earlierMajorBackendVersion) == false); + + // Backend versions with the same major revision but later minor revision than + // the backend API version are not compatible with the backend API + armnn::BackendVersion laterMinorBackendVersion{ 2, 5 }; + BOOST_TEST(!(laterMinorBackendVersion == backendApiVersion)); + BOOST_TEST(!(laterMinorBackendVersion <= backendApiVersion)); + BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion, laterMinorBackendVersion) == false); + + // Backend versions with the same major revision but earlier minor revision than + // the backend API version are compatible with the backend API + armnn::BackendVersion earlierMinorBackendVersion{ 2, 3 }; + BOOST_TEST(!(earlierMinorBackendVersion == backendApiVersion)); + BOOST_TEST(earlierMinorBackendVersion <= backendApiVersion); + BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion, earlierMinorBackendVersion) == true); +} -- cgit v1.2.1