diff options
author | Nattapat Chaimanowong <nattapat.chaimanowong@arm.com> | 2018-10-16 13:21:27 +0100 |
---|---|---|
committer | Matthew Bentham <matthew.bentham@arm.com> | 2018-10-22 16:57:54 +0100 |
commit | 177d8d26925a58a579943e010d28d1ceaa033d64 (patch) | |
tree | 73bc6bb530621f33a6b7cd27ae303a3f92fb556c /src/backends/neon/workloads/NeonWorkloadUtils.hpp | |
parent | 97a06fd57e7864a882ef5e37a1bf7286f5be5185 (diff) | |
download | armnn-177d8d26925a58a579943e010d28d1ceaa033d64.tar.gz |
IVGCVSW-1951 Update NeonWorkloadUtils
Change-Id: I147dbf6811f84ec4588264d636a36efc8ec56f72
Diffstat (limited to 'src/backends/neon/workloads/NeonWorkloadUtils.hpp')
-rw-r--r-- | src/backends/neon/workloads/NeonWorkloadUtils.hpp | 58 |
1 files changed, 41 insertions, 17 deletions
diff --git a/src/backends/neon/workloads/NeonWorkloadUtils.hpp b/src/backends/neon/workloads/NeonWorkloadUtils.hpp index c4accd6c89..48ec753546 100644 --- a/src/backends/neon/workloads/NeonWorkloadUtils.hpp +++ b/src/backends/neon/workloads/NeonWorkloadUtils.hpp @@ -5,30 +5,54 @@ #pragma once #include <backends/Workload.hpp> - +#include <backends/aclCommon/ArmComputeTensorUtils.hpp> #include <backends/neon/NeonTensorHandle.hpp> #include <backends/neon/NeonTimer.hpp> - -#include <arm_compute/core/Types.h> -#include <arm_compute/core/Helpers.h> +#include <backends/CpuTensorHandle.hpp> #include <arm_compute/runtime/NEON/NEFunctions.h> -#include <arm_compute/runtime/SubTensor.h> -#include <boost/cast.hpp> +#include <Half.hpp> + +#define ARMNN_SCOPED_PROFILING_EVENT_NEON(name) \ + ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(armnn::Compute::CpuAcc, \ + name, \ + armnn::NeonTimer(), \ + armnn::WallClockTimer()) + +using namespace armnn::armcomputetensorutils; namespace armnn { -class Layer; - -template<typename T> -void InitialiseArmComputeTensorData(arm_compute::Tensor& tensor, const T* data); -void InitializeArmComputeTensorDataForFloatTypes(arm_compute::Tensor& tensor, const ConstCpuTensorHandle* handle); -} //namespace armnn +template <typename T> +void CopyArmComputeTensorData(arm_compute::Tensor& dstTensor, const T* srcData) +{ + InitialiseArmComputeTensorEmpty(dstTensor); + CopyArmComputeITensorData(srcData, dstTensor); +} +inline void InitializeArmComputeTensorData(arm_compute::Tensor& tensor, + const ConstCpuTensorHandle* handle) +{ + BOOST_ASSERT(handle); + + switch(handle->GetTensorInfo().GetDataType()) + { + case DataType::Float16: + CopyArmComputeTensorData(tensor, handle->GetConstTensor<armnn::Half>()); + break; + case DataType::Float32: + CopyArmComputeTensorData(tensor, handle->GetConstTensor<float>()); + break; + case DataType::QuantisedAsymm8: + CopyArmComputeTensorData(tensor, handle->GetConstTensor<uint8_t>()); + break; + case DataType::Signed32: + CopyArmComputeTensorData(tensor, handle->GetConstTensor<int32_t>()); + break; + default: + BOOST_ASSERT_MSG(false, "Unexpected tensor type."); + } +}; -#define ARMNN_SCOPED_PROFILING_EVENT_NEON(name) \ - ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(armnn::Compute::CpuAcc, \ - name, \ - armnn::NeonTimer(), \ - armnn::WallClockTimer()) +} //namespace armnn |