1 // 2 // Copyright © 2022 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include <reference/RefWorkloadFactory.hpp> 7 #include <reference/RefBackend.hpp> 8 #include <armnnTestUtils/LayerTestResult.hpp> 9 #include <armnnTestUtils/MemCopyTestImpl.hpp> 10 #include <armnnTestUtils/MockBackend.hpp> 11 #include <doctest/doctest.h> 12 13 namespace 14 { 15 16 template <> 17 struct MemCopyTestHelper<armnn::RefWorkloadFactory> 18 { GetMemoryManager__anonf6c9f3bb0111::MemCopyTestHelper19 static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager() 20 { 21 armnn::RefBackend backend; 22 return backend.CreateMemoryManager(); 23 } 24 GetFactory__anonf6c9f3bb0111::MemCopyTestHelper25 static armnn::RefWorkloadFactory GetFactory(const armnn::IBackendInternal::IMemoryManagerSharedPtr&) 26 { 27 return armnn::RefWorkloadFactory(); 28 } 29 }; 30 } // namespace 31 32 TEST_SUITE("RefMemCopy") 33 { 34 35 TEST_CASE("CopyBetweenMockAccAndRef") 36 { 37 LayerTestResult<float, 4> result = 38 MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(false); 39 auto predResult = 40 CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); 41 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); 42 } 43 44 TEST_CASE("CopyBetweenRefAndMockAcc") 45 { 46 LayerTestResult<float, 4> result = 47 MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false); 48 auto predResult = 49 CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); 50 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); 51 } 52 53 TEST_CASE("CopyBetweenMockAccAndRefWithSubtensors") 54 { 55 LayerTestResult<float, 4> result = 56 MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(true); 57 auto predResult = 58 CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); 59 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); 60 } 61 62 TEST_CASE("CopyBetweenRefAndMockAccWithSubtensors") 63 { 64 LayerTestResult<float, 4> result = 65 MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true); 66 auto predResult = 67 CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); 68 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); 69 } 70 } 71