aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarovir01 <Aron.Virginas-Tar@arm.com>2018-10-01 17:08:59 +0100
committerMatthew Bentham <matthew.bentham@arm.com>2018-10-10 16:16:57 +0100
commit616e775763280992de92287b129dc335be91a24c (patch)
tree5b7ced2fa8005f4371fe8005ee98cb88d16e0e09
parent29cadb3ff3066d6feb1801a921be326bf5ed8f47 (diff)
downloadarmnn-616e775763280992de92287b129dc335be91a24c.tar.gz
IVGCVSW-1913: Fix for ValidationTest.concat_float_3_relaxed
* Added RefPermuteFloat16Workload to serve as a fallback when CL does not support the required permute configuration for FP16 * Move Half.hpp to armnnUtils as the utils library should not be including private header files from the armnn library Change-Id: Ibf0f698451e8406f7ed7cce470dab60b6d16361d
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/armnn/TypeUtils.hpp4
-rw-r--r--src/armnn/optimizations/ConvertConstants.hpp4
-rw-r--r--src/armnn/test/FP16SupportTest.cpp5
-rw-r--r--src/armnn/test/FloatingPointConverterTest.cpp2
-rw-r--r--src/armnnUtils/FloatingPointConverter.cpp3
-rw-r--r--src/armnnUtils/Half.hpp (renamed from src/armnn/Half.hpp)0
-rw-r--r--src/armnnUtils/Permute.cpp3
-rw-r--r--src/backends/cl/workloads/ClBaseConstantWorkload.cpp3
-rw-r--r--src/backends/cl/workloads/ClWorkloadUtils.hpp4
-rw-r--r--src/backends/neon/workloads/NeonBaseConstantWorkload.hpp2
-rw-r--r--src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp2
-rw-r--r--src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp3
-rw-r--r--src/backends/neon/workloads/NeonConvolution2dBaseWorkload.cpp2
-rw-r--r--src/backends/reference/RefWorkloadFactory.cpp3
-rw-r--r--src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp4
-rw-r--r--src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp4
-rw-r--r--src/backends/reference/workloads/RefPermuteWorkload.cpp1
-rw-r--r--src/backends/reference/workloads/RefPermuteWorkload.hpp1
-rw-r--r--src/backends/reference/workloads/RefWorkloadUtils.hpp2
-rw-r--r--src/backends/test/ConvertFp16ToFp32TestImpl.hpp2
-rw-r--r--src/backends/test/ConvertFp32ToFp16TestImpl.hpp4
-rw-r--r--src/backends/test/LayerTests.hpp2
-rw-r--r--src/backends/test/TensorCopyUtils.cpp12
24 files changed, 44 insertions, 30 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8d77d91c49..39d83c22bb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,6 +27,7 @@ add_custom_target(AdditionalCMakeFiles SOURCES ${additional_cmake_files})
set(armnnUtils_sources)
list(APPEND armnnUtils_sources
src/armnnUtils/GraphTopologicalSort.hpp
+ src/armnnUtils/Half.hpp
src/armnnUtils/Logging.hpp
src/armnnUtils/Permute.hpp
src/armnnUtils/Logging.cpp
@@ -219,7 +220,6 @@ list(APPEND armnn_sources
src/armnn/layers/SplitterLayer.cpp
src/armnn/layers/SubtractionLayer.cpp
src/armnn/layers/SubtractionLayer.hpp
- src/armnn/Half.hpp
src/armnn/InternalTypes.hpp
src/armnn/InternalTypes.cpp
src/armnn/JsonPrinter.hpp
diff --git a/src/armnn/TypeUtils.hpp b/src/armnn/TypeUtils.hpp
index e159d1fd07..cd19211a66 100644
--- a/src/armnn/TypeUtils.hpp
+++ b/src/armnn/TypeUtils.hpp
@@ -6,7 +6,7 @@
#pragma once
#include "armnn/Types.hpp"
-#include "Half.hpp"
+#include "armnnUtils/Half.hpp"
namespace armnn
{
@@ -37,4 +37,4 @@ template<DataType DT>
using ResolveType = typename ResolveTypeImpl<DT>::Type;
-} //namespace armnn \ No newline at end of file
+} //namespace armnn
diff --git a/src/armnn/optimizations/ConvertConstants.hpp b/src/armnn/optimizations/ConvertConstants.hpp
index 9306a53bf4..d92ea28717 100644
--- a/src/armnn/optimizations/ConvertConstants.hpp
+++ b/src/armnn/optimizations/ConvertConstants.hpp
@@ -6,10 +6,12 @@
#pragma once
#include "Optimization.hpp"
+
#include <backends/CpuTensorHandle.hpp>
-#include <Half.hpp>
#include <FloatingPointConverter.hpp>
+#include <armnnUtils/Half.hpp>
+
namespace armnn
{
namespace optimizations
diff --git a/src/armnn/test/FP16SupportTest.cpp b/src/armnn/test/FP16SupportTest.cpp
index 6baadc4c77..2706d1f363 100644
--- a/src/armnn/test/FP16SupportTest.cpp
+++ b/src/armnn/test/FP16SupportTest.cpp
@@ -7,6 +7,8 @@
#include <armnn/Descriptors.hpp>
#include <armnn/IRuntime.hpp>
#include <armnn/INetwork.hpp>
+#include <armnnUtils/Half.hpp>
+
#include <Graph.hpp>
#include <Optimizer.hpp>
#include <backends/CpuTensorHandle.hpp>
@@ -15,7 +17,6 @@
#include <boost/core/ignore_unused.hpp>
#include <boost/test/unit_test.hpp>
-#include <Half.hpp>
#include <set>
using namespace armnn;
@@ -111,4 +112,4 @@ BOOST_AUTO_TEST_CASE(Fp16AdditionTest)
BOOST_TEST(outputData == std::vector<Half>({ 101.0_h, 202.0_h, 303.0_h, 404.0_h})); // Add
}
-BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/armnn/test/FloatingPointConverterTest.cpp b/src/armnn/test/FloatingPointConverterTest.cpp
index 3c7c8bdbf3..ec4288c438 100644
--- a/src/armnn/test/FloatingPointConverterTest.cpp
+++ b/src/armnn/test/FloatingPointConverterTest.cpp
@@ -4,7 +4,7 @@
//
#include "FloatingPointConverter.hpp"
-#include "Half.hpp"
+#include <armnnUtils/Half.hpp>
#include <malloc.h>
#include <iostream>
diff --git a/src/armnnUtils/FloatingPointConverter.cpp b/src/armnnUtils/FloatingPointConverter.cpp
index 522c44b093..92409d4eea 100644
--- a/src/armnnUtils/FloatingPointConverter.cpp
+++ b/src/armnnUtils/FloatingPointConverter.cpp
@@ -4,7 +4,8 @@
//
#include "FloatingPointConverter.hpp"
-#include "../armnn/Half.hpp"
+
+#include "Half.hpp"
#include <boost/assert.hpp>
diff --git a/src/armnn/Half.hpp b/src/armnnUtils/Half.hpp
index c4b47a3609..c4b47a3609 100644
--- a/src/armnn/Half.hpp
+++ b/src/armnnUtils/Half.hpp
diff --git a/src/armnnUtils/Permute.cpp b/src/armnnUtils/Permute.cpp
index 9fe198b3a7..61f4e0e644 100644
--- a/src/armnnUtils/Permute.cpp
+++ b/src/armnnUtils/Permute.cpp
@@ -5,6 +5,7 @@
#include "Permute.hpp"
+#include "Half.hpp"
#include <armnn/Tensor.hpp>
#include <cassert>
@@ -109,6 +110,8 @@ void Permute(const armnn::TensorShape& dstShape, const armnn::PermutationVector&
// Instantiates for types.
template void Permute(const armnn::TensorShape& dstShape, const armnn::PermutationVector& mappings,
+ const armnn::Half* src, armnn::Half* dst);
+template void Permute(const armnn::TensorShape& dstShape, const armnn::PermutationVector& mappings,
const float* src, float* dst);
template void Permute(const armnn::TensorShape& dstShape, const armnn::PermutationVector& mappings,
const uint8_t* src, uint8_t* dst);
diff --git a/src/backends/cl/workloads/ClBaseConstantWorkload.cpp b/src/backends/cl/workloads/ClBaseConstantWorkload.cpp
index 2557020b59..848ab5ade6 100644
--- a/src/backends/cl/workloads/ClBaseConstantWorkload.cpp
+++ b/src/backends/cl/workloads/ClBaseConstantWorkload.cpp
@@ -4,10 +4,11 @@
//
#include "ClBaseConstantWorkload.hpp"
+
+#include <armnnUtils/Half.hpp>
#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
#include <backends/cl/ClTensorHandle.hpp>
#include <backends/CpuTensorHandle.hpp>
-#include <Half.hpp>
#include "ClWorkloadUtils.hpp"
diff --git a/src/backends/cl/workloads/ClWorkloadUtils.hpp b/src/backends/cl/workloads/ClWorkloadUtils.hpp
index 3a8ff00bb6..af4ccd0bb8 100644
--- a/src/backends/cl/workloads/ClWorkloadUtils.hpp
+++ b/src/backends/cl/workloads/ClWorkloadUtils.hpp
@@ -4,11 +4,11 @@
//
#pragma once
-#include "OpenClTimer.hpp"
+#include <armnnUtils/Half.hpp>
#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
#include <backends/CpuTensorHandle.hpp>
-#include <Half.hpp>
+#include "OpenClTimer.hpp"
#define ARMNN_SCOPED_PROFILING_EVENT_CL(name) \
ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(armnn::Compute::GpuAcc, \
diff --git a/src/backends/neon/workloads/NeonBaseConstantWorkload.hpp b/src/backends/neon/workloads/NeonBaseConstantWorkload.hpp
index 6bb275ac13..828e476d29 100644
--- a/src/backends/neon/workloads/NeonBaseConstantWorkload.hpp
+++ b/src/backends/neon/workloads/NeonBaseConstantWorkload.hpp
@@ -6,12 +6,12 @@
#pragma once
#include <arm_compute/core/Types.h>
+#include <armnnUtils/Half.hpp>
#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
#include <backends/neon/NeonTensorHandle.hpp>
#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
#include <backends/CpuTensorHandle.hpp>
#include <backends/Workload.hpp>
-#include <Half.hpp>
#include <boost/cast.hpp>
diff --git a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
index 84e341fe64..c8a3f27352 100644
--- a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
+++ b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
@@ -4,9 +4,9 @@
//
#include "NeonConvertFp16ToFp32Workload.hpp"
-#include <Half.hpp>
#include <FloatingPointConverter.hpp>
+#include <armnnUtils/Half.hpp>
#include <backends/WorkloadUtils.hpp>
namespace armnn
diff --git a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
index 261de3d0ce..6bcf6e082c 100644
--- a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
+++ b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
@@ -5,9 +5,8 @@
#include "NeonConvertFp32ToFp16Workload.hpp"
-#include <Half.hpp>
+#include <armnnUtils/Half.hpp>
#include <FloatingPointConverter.hpp>
-
#include <Profiling.hpp>
#include <backends/WorkloadUtils.hpp>
diff --git a/src/backends/neon/workloads/NeonConvolution2dBaseWorkload.cpp b/src/backends/neon/workloads/NeonConvolution2dBaseWorkload.cpp
index 547f563d59..3b9626d7d3 100644
--- a/src/backends/neon/workloads/NeonConvolution2dBaseWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution2dBaseWorkload.cpp
@@ -10,7 +10,7 @@
#include "NeonConvolution2dBaseWorkload.hpp"
#include <armnn/Types.hpp>
-#include <Half.hpp>
+#include <armnnUtils/Half.hpp>
namespace armnn
{
diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp
index 582c691a18..d7d2e27d59 100644
--- a/src/backends/reference/RefWorkloadFactory.cpp
+++ b/src/backends/reference/RefWorkloadFactory.cpp
@@ -114,7 +114,8 @@ std::unique_ptr<armnn::IWorkload> RefWorkloadFactory::CreateFullyConnected(
std::unique_ptr<armnn::IWorkload> RefWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor,
const WorkloadInfo& info) const
{
- return MakeWorkload<RefPermuteFloat32Workload, RefPermuteUint8Workload>(descriptor, info);
+ return armnn::MakeWorkload<RefPermuteFloat16Workload, RefPermuteFloat32Workload, RefPermuteUint8Workload>
+ (descriptor, info);
}
std::unique_ptr<armnn::IWorkload> RefWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
diff --git a/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp b/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp
index e148bf6a9d..b01246b1e9 100644
--- a/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp
+++ b/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp
@@ -4,10 +4,12 @@
//
#include "RefConvertFp16ToFp32Workload.hpp"
-#include "Half.hpp"
+
#include "RefWorkloadUtils.hpp"
#include "FloatingPointConverter.hpp"
+#include <armnnUtils/Half.hpp>
+
namespace armnn
{
diff --git a/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp b/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp
index efaaf8e1ad..99e3541dd6 100644
--- a/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp
+++ b/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp
@@ -5,12 +5,12 @@
#include "RefConvertFp32ToFp16Workload.hpp"
-#include "Half.hpp"
#include "FloatingPointConverter.hpp"
#include "RefWorkloadUtils.hpp"
-
#include "Profiling.hpp"
+#include "armnnUtils/Half.hpp"
+
namespace armnn
{
diff --git a/src/backends/reference/workloads/RefPermuteWorkload.cpp b/src/backends/reference/workloads/RefPermuteWorkload.cpp
index 4093ff38f4..df5015636b 100644
--- a/src/backends/reference/workloads/RefPermuteWorkload.cpp
+++ b/src/backends/reference/workloads/RefPermuteWorkload.cpp
@@ -26,6 +26,7 @@ void RefPermuteWorkload<DataType>::Execute() const
armnnUtils::Permute(GetTensorInfo(dst).GetShape(), mappings, GetConstCpuData<T>(src), GetCpuData<T>(dst));
}
+template class RefPermuteWorkload<DataType::Float16>;
template class RefPermuteWorkload<DataType::Float32>;
template class RefPermuteWorkload<DataType::QuantisedAsymm8>;
diff --git a/src/backends/reference/workloads/RefPermuteWorkload.hpp b/src/backends/reference/workloads/RefPermuteWorkload.hpp
index 2cc176d205..841a080dfd 100644
--- a/src/backends/reference/workloads/RefPermuteWorkload.hpp
+++ b/src/backends/reference/workloads/RefPermuteWorkload.hpp
@@ -27,6 +27,7 @@ public:
void Execute() const override;
};
+using RefPermuteFloat16Workload = RefPermuteWorkload<DataType::Float16>;
using RefPermuteFloat32Workload = RefPermuteWorkload<DataType::Float32>;
using RefPermuteUint8Workload = RefPermuteWorkload<DataType::QuantisedAsymm8>;
diff --git a/src/backends/reference/workloads/RefWorkloadUtils.hpp b/src/backends/reference/workloads/RefWorkloadUtils.hpp
index 153c519350..67a1f5e867 100644
--- a/src/backends/reference/workloads/RefWorkloadUtils.hpp
+++ b/src/backends/reference/workloads/RefWorkloadUtils.hpp
@@ -9,7 +9,7 @@
#include <armnn/Tensor.hpp>
#include <armnn/Types.hpp>
-#include <Half.hpp>
+#include <armnnUtils/Half.hpp>
#include <boost/polymorphic_cast.hpp>
diff --git a/src/backends/test/ConvertFp16ToFp32TestImpl.hpp b/src/backends/test/ConvertFp16ToFp32TestImpl.hpp
index b75879dea6..483689df4c 100644
--- a/src/backends/test/ConvertFp16ToFp32TestImpl.hpp
+++ b/src/backends/test/ConvertFp16ToFp32TestImpl.hpp
@@ -8,13 +8,13 @@
#include <armnn/ArmNN.hpp>
#include <armnn/Tensor.hpp>
#include <armnn/TypesUtils.hpp>
+#include <armnnUtils/Half.hpp>
#include <backends/WorkloadInfo.hpp>
#include <backends/CpuTensorHandle.hpp>
#include <test/TensorHelpers.hpp>
-#include <Half.hpp>
LayerTestResult<float, 4> SimpleConvertFp16ToFp32Test(armnn::IWorkloadFactory& workloadFactory)
{
diff --git a/src/backends/test/ConvertFp32ToFp16TestImpl.hpp b/src/backends/test/ConvertFp32ToFp16TestImpl.hpp
index 1325b4b054..e4698a93e5 100644
--- a/src/backends/test/ConvertFp32ToFp16TestImpl.hpp
+++ b/src/backends/test/ConvertFp32ToFp16TestImpl.hpp
@@ -8,13 +8,13 @@
#include <armnn/ArmNN.hpp>
#include <armnn/Tensor.hpp>
#include <armnn/TypesUtils.hpp>
+#include <armnnUtils/Half.hpp>
#include <backends/WorkloadInfo.hpp>
#include <backends/CpuTensorHandle.hpp>
#include <test/TensorHelpers.hpp>
-#include <Half.hpp>
LayerTestResult<armnn::Half, 4> SimpleConvertFp32ToFp16Test(armnn::IWorkloadFactory& workloadFactory)
{
@@ -52,4 +52,4 @@ LayerTestResult<armnn::Half, 4> SimpleConvertFp32ToFp16Test(armnn::IWorkloadFact
CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
return ret;
-} \ No newline at end of file
+}
diff --git a/src/backends/test/LayerTests.hpp b/src/backends/test/LayerTests.hpp
index 9dc3afa150..8939903432 100644
--- a/src/backends/test/LayerTests.hpp
+++ b/src/backends/test/LayerTests.hpp
@@ -6,7 +6,7 @@
#include "armnn/ArmNN.hpp"
#include "armnn/Tensor.hpp"
-#include "Half.hpp"
+#include "armnnUtils/Half.hpp"
#include <boost/multi_array.hpp>
#include <boost/assert.hpp>
diff --git a/src/backends/test/TensorCopyUtils.cpp b/src/backends/test/TensorCopyUtils.cpp
index e92469aaa3..7e17e8b9fd 100644
--- a/src/backends/test/TensorCopyUtils.cpp
+++ b/src/backends/test/TensorCopyUtils.cpp
@@ -3,13 +3,11 @@
// SPDX-License-Identifier: MIT
//
-#include <algorithm>
-#include <cstring>
-#include <boost/cast.hpp>
-#include <Half.hpp>
-
#include "TensorCopyUtils.hpp"
+#include <armnnUtils/Half.hpp>
+
+
#ifdef ARMCOMPUTECL_ENABLED
#include <backends/cl/ClTensorHandle.hpp>
#endif
@@ -24,6 +22,10 @@
#include <backends/CpuTensorHandle.hpp>
+#include <boost/cast.hpp>
+#include <algorithm>
+#include <cstring>
+
void CopyDataToITensorHandle(armnn::ITensorHandle* tensorHandle, const void* mem)
{
switch (tensorHandle->GetType())