diff options
author | Matthew Bentham <matthew.bentham@arm.com> | 2018-11-20 14:33:33 +0000 |
---|---|---|
committer | Matteo Martincigh <matteo.martincigh@arm.com> | 2018-11-20 15:38:24 +0000 |
commit | 8910528b126fed87628c23f7e51f7e018b13989a (patch) | |
tree | 67d7a3b0cfe8d0878f545d45b48c45c1e62320b2 /src/backends | |
parent | 07fefa5d487bbd47c7755a7bb88b05edbe1d8342 (diff) | |
download | armnn-8910528b126fed87628c23f7e51f7e018b13989a.tar.gz |
IVGCVSW-1199 Disable auto-flattening of Compute Library tensors
This is one of the reasons why the tests in https://review.mlplatform.org/#/c/ml/armnn/+/237/
are failing (but not the only reason).
Change-Id: If485bade2a6dd013cba826cec71d748fc7747249
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/aclCommon/ArmComputeTensorUtils.cpp | 2 | ||||
-rw-r--r-- | src/backends/aclCommon/test/CreateWorkloadClNeon.hpp | 6 | ||||
-rw-r--r-- | src/backends/cl/test/ClCreateWorkloadTests.cpp | 22 |
3 files changed, 15 insertions, 15 deletions
diff --git a/src/backends/aclCommon/ArmComputeTensorUtils.cpp b/src/backends/aclCommon/ArmComputeTensorUtils.cpp index 9fb78f8a80..ba7cd14f3f 100644 --- a/src/backends/aclCommon/ArmComputeTensorUtils.cpp +++ b/src/backends/aclCommon/ArmComputeTensorUtils.cpp @@ -40,7 +40,7 @@ arm_compute::TensorShape BuildArmComputeTensorShape(const armnn::TensorShape& te for (unsigned int i = 0; i < tensorShape.GetNumDimensions(); i++) { // Note that our dimensions are stored in the opposite order to ACL's. - shape.set(tensorShape.GetNumDimensions() - i - 1, tensorShape[i]); + shape.set(tensorShape.GetNumDimensions() - i - 1, tensorShape[i], false); // TensorShape::set() flattens leading ones, so that batch size 1 cannot happen. // arm_compute tensors expect this. diff --git a/src/backends/aclCommon/test/CreateWorkloadClNeon.hpp b/src/backends/aclCommon/test/CreateWorkloadClNeon.hpp index ec2072d243..adabed07f8 100644 --- a/src/backends/aclCommon/test/CreateWorkloadClNeon.hpp +++ b/src/backends/aclCommon/test/CreateWorkloadClNeon.hpp @@ -47,7 +47,9 @@ boost::test_tools::predicate_result CompareTensorHandleShape(IComputeTensorHandl if (info->dimension(i) != expectedDimension) { boost::test_tools::predicate_result res(false); - res.message() << "Different dimension [" << info->dimension(i) << "!=" << expectedDimension << "]"; + res.message() << "For dimension " << i << + " expected size " << expectedDimension << + " got " << info->dimension(i); return res; } @@ -104,4 +106,4 @@ void CreateMemCopyWorkloads(IWorkloadFactory& factory) BOOST_TEST((outputHandle2->GetTensorInfo() == TensorInfo({2, 3}, DataType::Float32))); } -} //namespace
\ No newline at end of file +} //namespace diff --git a/src/backends/cl/test/ClCreateWorkloadTests.cpp b/src/backends/cl/test/ClCreateWorkloadTests.cpp index 47f1515e30..8cef9d78b1 100644 --- a/src/backends/cl/test/ClCreateWorkloadTests.cpp +++ b/src/backends/cl/test/ClCreateWorkloadTests.cpp @@ -37,8 +37,8 @@ static void ClCreateActivationWorkloadTest() auto inputHandle = boost::polymorphic_downcast<IClTensorHandle*>(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast<IClTensorHandle*>(queueDescriptor.m_Outputs[0]); - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, {1})); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, {1})); + BOOST_TEST(CompareIClTensorHandleShape(inputHandle, {1, 1})); + BOOST_TEST(CompareIClTensorHandleShape(outputHandle, {1, 1})); } BOOST_AUTO_TEST_CASE(CreateActivationFloatWorkload) @@ -208,8 +208,8 @@ BOOST_AUTO_TEST_CASE(CreateConvertFp16ToFp32Workload) auto inputHandle = boost::polymorphic_downcast<IClTensorHandle*>(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast<IClTensorHandle*>(queueDescriptor.m_Outputs[0]); - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, {3, 2, 3})); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, {3, 2, 3})); + BOOST_TEST(CompareIClTensorHandleShape(inputHandle, {1, 3, 2, 3})); + BOOST_TEST(CompareIClTensorHandleShape(outputHandle, {1, 3, 2, 3})); BOOST_TEST((inputHandle->GetTensor().info()->data_type() == arm_compute::DataType::F16)); BOOST_TEST((outputHandle->GetTensor().info()->data_type() == arm_compute::DataType::F32)); } @@ -226,8 +226,8 @@ BOOST_AUTO_TEST_CASE(CreateConvertFp32ToFp16Workload) auto inputHandle = boost::polymorphic_downcast<IClTensorHandle*>(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast<IClTensorHandle*>(queueDescriptor.m_Outputs[0]); - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, {3, 2, 3})); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, {3, 2, 3})); + BOOST_TEST(CompareIClTensorHandleShape(inputHandle, {1, 3, 2, 3})); + BOOST_TEST(CompareIClTensorHandleShape(outputHandle, {1, 3, 2, 3})); BOOST_TEST((inputHandle->GetTensor().info()->data_type() == arm_compute::DataType::F32)); BOOST_TEST((outputHandle->GetTensor().info()->data_type() == arm_compute::DataType::F16)); } @@ -469,7 +469,7 @@ static void ClCreateReshapeWorkloadTest() auto outputHandle = boost::polymorphic_downcast<IClTensorHandle*>(queueDescriptor.m_Outputs[0]); BOOST_TEST(CompareIClTensorHandleShape(inputHandle, {4, 1})); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, {4})); // Leading size 1 dimensions are collapsed by ACL. + BOOST_TEST(CompareIClTensorHandleShape(outputHandle, {1, 4})); } BOOST_AUTO_TEST_CASE(CreateReshapeFloatWorkload) @@ -537,9 +537,7 @@ static void ClSplitterWorkloadTest() BOOST_TEST(CompareIClTensorHandleShape(outputHandle2, {2, 7, 7})); auto outputHandle0 = boost::polymorphic_downcast<IClTensorHandle*>(queueDescriptor.m_Outputs[0]); - // NOTE: At the moment the CL collapses the tensor to a 2 dim when dimension zero = 1 - // we are raising this difference between the NEON and CL libs as an issue with the compute library team. - BOOST_TEST(CompareIClTensorHandleShape(outputHandle0, {7, 7})); + BOOST_TEST(CompareIClTensorHandleShape(outputHandle0, {1, 7, 7})); } BOOST_AUTO_TEST_CASE(CreateSplitterFloatWorkload) @@ -784,8 +782,8 @@ static void ClMeanWorkloadTest() auto outputHandle = boost::polymorphic_downcast<IClTensorHandle*>(queueDescriptor.m_Outputs[0]); // The first dimension (batch size) in both input and output is singular thus it has been reduced by ACL. - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, { 3, 7, 4 })); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, { 4 })); + BOOST_TEST(CompareIClTensorHandleShape(inputHandle, { 1, 3, 7, 4 })); + BOOST_TEST(CompareIClTensorHandleShape(outputHandle, { 1, 4 })); } BOOST_AUTO_TEST_CASE(CreateMeanFloat32Workload) |