Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 1 | // |
| 2 | // Copyright © 2017 Arm Ltd. All rights reserved. |
| 3 | // SPDX-License-Identifier: MIT |
| 4 | // |
| 5 | |
Aron Virginas-Tar | c9cc804 | 2018-11-01 16:15:57 +0000 | [diff] [blame] | 6 | #include <aclCommon/ArmComputeTensorUtils.hpp> |
Aron Virginas-Tar | c9cc804 | 2018-11-01 16:15:57 +0000 | [diff] [blame] | 7 | #include <aclCommon/test/MemCopyTestImpl.hpp> |
Aron Virginas-Tar | 5605519 | 2018-11-12 18:10:43 +0000 | [diff] [blame] | 8 | |
Matteo Martincigh | d95e906 | 2019-01-31 15:35:59 +0000 | [diff] [blame] | 9 | #if defined(ARMCOMPUTECL_ENABLED) && defined(ARMCOMPUTENEON_ENABLED) |
| 10 | #include <cl/ClWorkloadFactory.hpp> |
Aron Virginas-Tar | c9cc804 | 2018-11-01 16:15:57 +0000 | [diff] [blame] | 11 | #include <cl/test/ClContextControlFixture.hpp> |
Aron Virginas-Tar | 5605519 | 2018-11-12 18:10:43 +0000 | [diff] [blame] | 12 | #include <cl/test/ClWorkloadFactoryHelper.hpp> |
| 13 | |
Matteo Martincigh | d95e906 | 2019-01-31 15:35:59 +0000 | [diff] [blame] | 14 | #include <neon/NeonWorkloadFactory.hpp> |
Aron Virginas-Tar | 5605519 | 2018-11-12 18:10:43 +0000 | [diff] [blame] | 15 | #include <neon/test/NeonWorkloadFactoryHelper.hpp> |
David Beck | 39fedf0 | 2018-10-16 12:58:49 +0100 | [diff] [blame] | 16 | #endif |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 17 | |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 18 | #include <doctest/doctest.h> |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 19 | |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 20 | TEST_SUITE("MemCopyCommon") |
| 21 | { |
| 22 | TEST_CASE("AclTypeConversions") |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 23 | { |
| 24 | arm_compute::Strides strides(1, 2, 3, 4); |
| 25 | armnn::TensorShape convertedStrides = armnn::armcomputetensorutils::GetStrides(strides); |
| 26 | |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 27 | CHECK(convertedStrides[0] == 4); |
| 28 | CHECK(convertedStrides[1] == 3); |
| 29 | CHECK(convertedStrides[2] == 2); |
| 30 | CHECK(convertedStrides[3] == 1); |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 31 | |
| 32 | arm_compute::TensorShape shape(5, 6, 7, 8); |
| 33 | armnn::TensorShape convertedshape = armnn::armcomputetensorutils::GetShape(shape); |
| 34 | |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 35 | CHECK(convertedshape[0] == 8); |
| 36 | CHECK(convertedshape[1] == 7); |
| 37 | CHECK(convertedshape[2] == 6); |
| 38 | CHECK(convertedshape[3] == 5); |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 39 | } |
| 40 | |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 41 | } |
Aron Virginas-Tar | ceae3aa | 2018-10-18 10:39:38 +0100 | [diff] [blame] | 42 | |
Matteo Martincigh | d95e906 | 2019-01-31 15:35:59 +0000 | [diff] [blame] | 43 | #if defined(ARMCOMPUTECL_ENABLED) && defined(ARMCOMPUTENEON_ENABLED) |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 44 | |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 45 | TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpu") |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 46 | { |
Matteo Martincigh | 4912402 | 2019-01-11 13:25:59 +0000 | [diff] [blame] | 47 | LayerTestResult<float, 4> result = |
| 48 | MemCopyTest<armnn::NeonWorkloadFactory, armnn::ClWorkloadFactory, armnn::DataType::Float32>(false); |
Sadik Armagan | 483c811 | 2021-06-01 09:24:52 +0100 | [diff] [blame] | 49 | auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData, |
| 50 | result.m_ActualShape, result.m_ExpectedShape); |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 51 | CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 52 | } |
| 53 | |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 54 | TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenGpuAndNeon") |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 55 | { |
Matteo Martincigh | 4912402 | 2019-01-11 13:25:59 +0000 | [diff] [blame] | 56 | LayerTestResult<float, 4> result = |
| 57 | MemCopyTest<armnn::ClWorkloadFactory, armnn::NeonWorkloadFactory, armnn::DataType::Float32>(false); |
Sadik Armagan | 483c811 | 2021-06-01 09:24:52 +0100 | [diff] [blame] | 58 | auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData, |
| 59 | result.m_ActualShape, result.m_ExpectedShape); |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 60 | CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 61 | } |
| 62 | |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 63 | TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpuWithSubtensors") |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 64 | { |
Matteo Martincigh | 4912402 | 2019-01-11 13:25:59 +0000 | [diff] [blame] | 65 | LayerTestResult<float, 4> result = |
| 66 | MemCopyTest<armnn::NeonWorkloadFactory, armnn::ClWorkloadFactory, armnn::DataType::Float32>(true); |
Sadik Armagan | 483c811 | 2021-06-01 09:24:52 +0100 | [diff] [blame] | 67 | auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData, |
| 68 | result.m_ActualShape, result.m_ExpectedShape); |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 69 | CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 70 | } |
| 71 | |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 72 | TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenGpuAndNeonWithSubtensors") |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 73 | { |
Matteo Martincigh | 4912402 | 2019-01-11 13:25:59 +0000 | [diff] [blame] | 74 | LayerTestResult<float, 4> result = |
| 75 | MemCopyTest<armnn::ClWorkloadFactory, armnn::NeonWorkloadFactory, armnn::DataType::Float32>(true); |
Sadik Armagan | 483c811 | 2021-06-01 09:24:52 +0100 | [diff] [blame] | 76 | auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData, |
| 77 | result.m_ActualShape, result.m_ExpectedShape); |
Sadik Armagan | 1625efc | 2021-06-10 18:24:34 +0100 | [diff] [blame] | 78 | CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); |
Aron Virginas-Tar | 3b278e9 | 2018-10-12 13:00:55 +0100 | [diff] [blame] | 79 | } |
| 80 | |
Matteo Martincigh | d95e906 | 2019-01-31 15:35:59 +0000 | [diff] [blame] | 81 | #endif |