blob: 739ea7cdb3301185af9b44dc9c9664ef54727561 [file] [log] [blame]
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Colm Donelanc42a9872022-02-02 16:35:09 +00006#include <armnnTestUtils/LayerTestResult.hpp>
7#include <armnnTestUtils/MemCopyTestImpl.hpp>
8#include <armnnTestUtils/MockBackend.hpp>
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00009#include <cl/ClWorkloadFactory.hpp>
Colm Donelanc42a9872022-02-02 16:35:09 +000010#include <cl/ClBackend.hpp>
Sadik Armagan1625efc2021-06-10 18:24:34 +010011#include <doctest/doctest.h>
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010012
Colm Donelanc42a9872022-02-02 16:35:09 +000013namespace
14{
15
16template <>
17struct MemCopyTestHelper<armnn::ClWorkloadFactory>
18{
19 static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
20 {
21 armnn::ClBackend backend;
22 return backend.CreateMemoryManager();
23 }
24
25 static armnn::ClWorkloadFactory GetFactory(
26 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
27 const armnn::ModelOptions& modelOptions = {})
28 {
29 armnn::ClBackend backend;
30 return armnn::ClWorkloadFactory(armnn::PolymorphicPointerDowncast<armnn::ClMemoryManager>(memoryManager),
31 backend.CreateBackendSpecificModelContext(modelOptions));
32 }
33};
34} // namespace
35
Sadik Armagan1625efc2021-06-10 18:24:34 +010036TEST_SUITE("ClMemCopy")
37{
38TEST_CASE("CopyBetweenCpuAndGpu")
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010039{
Matteo Martincigh49124022019-01-11 13:25:59 +000040 LayerTestResult<float, 4> result =
Colm Donelanc42a9872022-02-02 16:35:09 +000041 MemCopyTest<armnn::MockWorkloadFactory, armnn::ClWorkloadFactory, armnn::DataType::Float32>(false);
Sadik Armagan483c8112021-06-01 09:24:52 +010042 auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
43 result.m_ActualShape, result.m_ExpectedShape);
Sadik Armagan1625efc2021-06-10 18:24:34 +010044 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010045}
46
Sadik Armagan1625efc2021-06-10 18:24:34 +010047TEST_CASE("CopyBetweenGpuAndCpu")
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010048{
Matteo Martincigh49124022019-01-11 13:25:59 +000049 LayerTestResult<float, 4> result =
Colm Donelanc42a9872022-02-02 16:35:09 +000050 MemCopyTest<armnn::ClWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false);
Sadik Armagan483c8112021-06-01 09:24:52 +010051 auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
52 result.m_ActualShape, result.m_ExpectedShape);
Sadik Armagan1625efc2021-06-10 18:24:34 +010053 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010054}
55
Sadik Armagan1625efc2021-06-10 18:24:34 +010056TEST_CASE("CopyBetweenCpuAndGpuWithSubtensors")
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010057{
Matteo Martincigh49124022019-01-11 13:25:59 +000058 LayerTestResult<float, 4> result =
Colm Donelanc42a9872022-02-02 16:35:09 +000059 MemCopyTest<armnn::MockWorkloadFactory, armnn::ClWorkloadFactory, armnn::DataType::Float32>(true);
Sadik Armagan483c8112021-06-01 09:24:52 +010060 auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
61 result.m_ActualShape, result.m_ExpectedShape);
Sadik Armagan1625efc2021-06-10 18:24:34 +010062 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010063}
64
Sadik Armagan1625efc2021-06-10 18:24:34 +010065TEST_CASE("CopyBetweenGpuAndCpuWithSubtensors")
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010066{
Matteo Martincigh49124022019-01-11 13:25:59 +000067 LayerTestResult<float, 4> result =
Colm Donelanc42a9872022-02-02 16:35:09 +000068 MemCopyTest<armnn::ClWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true);
Sadik Armagan483c8112021-06-01 09:24:52 +010069 auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
70 result.m_ActualShape, result.m_ExpectedShape);
Sadik Armagan1625efc2021-06-10 18:24:34 +010071 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010072}
73
Sadik Armagan1625efc2021-06-10 18:24:34 +010074}