diff options
Diffstat (limited to 'src/backends/reference')
-rw-r--r-- | src/backends/reference/test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/backends/reference/test/RefLayerSupportTests.cpp | 2 | ||||
-rw-r--r-- | src/backends/reference/test/RefMemCopyTests.cpp | 70 |
3 files changed, 72 insertions, 1 deletions
diff --git a/src/backends/reference/test/CMakeLists.txt b/src/backends/reference/test/CMakeLists.txt index 9d6572a4af..2476c31de6 100644 --- a/src/backends/reference/test/CMakeLists.txt +++ b/src/backends/reference/test/CMakeLists.txt @@ -12,6 +12,7 @@ list(APPEND armnnRefBackendUnitTests_sources RefJsonPrinterTests.cpp RefLayerSupportTests.cpp RefLayerTests.cpp + RefMemCopyTests.cpp RefMemoryManagerTests.cpp RefOptimizedNetworkTests.cpp RefPerAxisIteratorTests.cpp diff --git a/src/backends/reference/test/RefLayerSupportTests.cpp b/src/backends/reference/test/RefLayerSupportTests.cpp index 833e254406..9a27c7c0b3 100644 --- a/src/backends/reference/test/RefLayerSupportTests.cpp +++ b/src/backends/reference/test/RefLayerSupportTests.cpp @@ -6,7 +6,7 @@ #include <layers/ConvertFp16ToFp32Layer.hpp> #include <layers/ConvertFp32ToFp16Layer.hpp> -#include <TensorHelpers.hpp> +#include <armnnTestUtils/TensorHelpers.hpp> #include <armnn/backends/TensorHandle.hpp> #include <reference/RefWorkloadFactory.hpp> diff --git a/src/backends/reference/test/RefMemCopyTests.cpp b/src/backends/reference/test/RefMemCopyTests.cpp new file mode 100644 index 0000000000..e97d979a9b --- /dev/null +++ b/src/backends/reference/test/RefMemCopyTests.cpp @@ -0,0 +1,70 @@ +// +// Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <reference/RefWorkloadFactory.hpp> +#include <reference/RefBackend.hpp> +#include <armnnTestUtils/LayerTestResult.hpp> +#include <armnnTestUtils/MemCopyTestImpl.hpp> +#include <armnnTestUtils/MockBackend.hpp> +#include <doctest/doctest.h> + +namespace +{ + +template <> +struct MemCopyTestHelper<armnn::RefWorkloadFactory> +{ + static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager() + { + armnn::RefBackend backend; + return backend.CreateMemoryManager(); + } + + static armnn::RefWorkloadFactory GetFactory(const armnn::IBackendInternal::IMemoryManagerSharedPtr&) + { + return armnn::RefWorkloadFactory(); + } +}; +} // namespace + +TEST_SUITE("RefMemCopy") +{ + + TEST_CASE("CopyBetweenCpuMockAndRef") + { + LayerTestResult<float, 4> result = + MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(false); + auto predResult = + CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); + CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); + } + + TEST_CASE("CopyBetweenRefAndCpuMock") + { + LayerTestResult<float, 4> result = + MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false); + auto predResult = + CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); + CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); + } + + TEST_CASE("CopyBetweenCpuMockAndRefWithSubtensors") + { + LayerTestResult<float, 4> result = + MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(true); + auto predResult = + CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); + CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); + } + + TEST_CASE("CopyBetweenRefAndCpuMockWithSubtensors") + { + LayerTestResult<float, 4> result = + MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true); + auto predResult = + CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); + CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); + } +} |