From 1342bed114effa8b183ba683189117cd730ab635 Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Wed, 17 Nov 2021 15:01:00 +0000 Subject: IVGCVSW-6452 'Move CompatibleTypes.hpp to the armnnUtils library' * Moved CompatibleTypes.hpp to include folder * Added implementation file to source CompatibleTypes.cpp Signed-off-by: Sadik Armagan Change-Id: I94d2bffdb82a0592943f497d4f57972151d9f2db --- Android.mk | 1 + CMakeLists.txt | 3 +- include/armnnUtils/CompatibleTypes.hpp | 16 +++++++ src/armnn/CompatibleTypes.hpp | 65 ---------------------------- src/armnnUtils/CompatibleTypes.cpp | 65 ++++++++++++++++++++++++++++ src/backends/backendsCommon/TensorHandle.hpp | 22 +++++++--- 6 files changed, 101 insertions(+), 71 deletions(-) create mode 100644 include/armnnUtils/CompatibleTypes.hpp delete mode 100644 src/armnn/CompatibleTypes.hpp create mode 100644 src/armnnUtils/CompatibleTypes.cpp diff --git a/Android.mk b/Android.mk index e39a0e8071..c3cb155731 100644 --- a/Android.mk +++ b/Android.mk @@ -144,6 +144,7 @@ LOCAL_SRC_FILES := \ src/armnn/Utils.cpp \ src/armnn/WallClockTimer.cpp \ src/armnn/WorkingMemHandle.cpp \ + src/armnnUtils/CompatibleTypes.cpp \ src/armnnUtils/DataLayoutIndexed.cpp \ src/armnnUtils/DotSerializer.cpp \ src/armnnUtils/FloatingPointConverter.cpp \ diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ea40de109..fde058216b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,6 +71,7 @@ add_custom_target(AdditionalCMakeFiles SOURCES ${additional_cmake_files}) set(armnnUtils_sources) list(APPEND armnnUtils_sources + include/armnnUtils/CompatibleTypes.hpp include/armnnUtils/DataLayoutIndexed.hpp include/armnnUtils/Permute.hpp include/armnnUtils/Filesystem.hpp @@ -81,6 +82,7 @@ list(APPEND armnnUtils_sources include/armnnUtils/Threads.hpp include/armnnUtils/Transpose.hpp src/armnnUtils/BFloat16.hpp + src/armnnUtils/CompatibleTypes.cpp src/armnnUtils/Filesystem.cpp src/armnnUtils/GraphTopologicalSort.hpp src/armnnUtils/Half.hpp @@ -362,7 +364,6 @@ list(APPEND armnn_sources src/armnn/BackendRegistry.cpp src/armnn/BackendSettings.hpp src/armnn/BackendHelper.cpp - src/armnn/CompatibleTypes.hpp src/armnn/Descriptors.cpp src/armnn/DeviceSpec.hpp src/armnn/DllExport.hpp diff --git a/include/armnnUtils/CompatibleTypes.hpp b/include/armnnUtils/CompatibleTypes.hpp new file mode 100644 index 0000000000..0640fcc428 --- /dev/null +++ b/include/armnnUtils/CompatibleTypes.hpp @@ -0,0 +1,16 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include + +namespace armnnUtils +{ + +template +bool CompatibleTypes(armnn::DataType); + +} //namespace armnnUtils diff --git a/src/armnn/CompatibleTypes.hpp b/src/armnn/CompatibleTypes.hpp deleted file mode 100644 index e24d5dfc4c..0000000000 --- a/src/armnn/CompatibleTypes.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include - -#include -#include - -namespace armnn -{ - -template -bool CompatibleTypes(DataType) -{ - return false; -} - -template<> -inline bool CompatibleTypes(DataType dataType) -{ - return dataType == DataType::Float32; -} - -template<> -inline bool CompatibleTypes(DataType dataType) -{ - return dataType == DataType::Float16; -} - -template<> -inline bool CompatibleTypes(DataType dataType) -{ - return dataType == DataType::BFloat16; -} - -template<> -inline bool CompatibleTypes(DataType dataType) -{ - return dataType == DataType::Boolean || dataType == DataType::QAsymmU8; -} - -template<> -inline bool CompatibleTypes(DataType dataType) -{ - return dataType == DataType::QSymmS8 - || dataType == DataType::QAsymmS8; -} - -template<> -inline bool CompatibleTypes(DataType dataType) -{ - return dataType == DataType::QSymmS16; -} - -template<> -inline bool CompatibleTypes(DataType dataType) -{ - return dataType == DataType::Signed32; -} - -} //namespace armnn diff --git a/src/armnnUtils/CompatibleTypes.cpp b/src/armnnUtils/CompatibleTypes.cpp new file mode 100644 index 0000000000..9a3251d293 --- /dev/null +++ b/src/armnnUtils/CompatibleTypes.cpp @@ -0,0 +1,65 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// +#include +#include + +#include "BFloat16.hpp" +#include "Half.hpp" + +using namespace armnn; + +namespace armnnUtils +{ + +template +bool CompatibleTypes(DataType) +{ + return false; +} + +template<> +bool CompatibleTypes(DataType dataType) +{ + return dataType == DataType::Float32; +} + +template<> +bool CompatibleTypes(DataType dataType) +{ + return dataType == DataType::Float16; +} + +template<> +bool CompatibleTypes(DataType dataType) +{ + return dataType == DataType::BFloat16; +} + +template<> +bool CompatibleTypes(DataType dataType) +{ + return dataType == DataType::Boolean || dataType == DataType::QAsymmU8; +} + +template<> +bool CompatibleTypes(DataType dataType) +{ + return dataType == DataType::QSymmS8 + || dataType == DataType::QAsymmS8; +} + +template<> +bool CompatibleTypes(DataType dataType) +{ + return dataType == DataType::QSymmS16; +} + +template<> +bool CompatibleTypes(DataType dataType) +{ + return dataType == DataType::Signed32; +} + +} //namespace armnnUtils diff --git a/src/backends/backendsCommon/TensorHandle.hpp b/src/backends/backendsCommon/TensorHandle.hpp index b898bd11a5..ba1fc16378 100644 --- a/src/backends/backendsCommon/TensorHandle.hpp +++ b/src/backends/backendsCommon/TensorHandle.hpp @@ -10,7 +10,7 @@ #include -#include +#include #include @@ -30,8 +30,14 @@ public: template const T* GetConstTensor() const { - ARMNN_ASSERT(CompatibleTypes(GetTensorInfo().GetDataType())); - return reinterpret_cast(m_Memory); + if (armnnUtils::CompatibleTypes(GetTensorInfo().GetDataType())) + { + return reinterpret_cast(m_Memory); + } + else + { + throw armnn::Exception("Attempting to get not compatible type tensor!"); + } } const TensorInfo& GetTensorInfo() const @@ -79,8 +85,14 @@ public: template T* GetTensor() const { - ARMNN_ASSERT(CompatibleTypes(GetTensorInfo().GetDataType())); - return reinterpret_cast(m_MutableMemory); + if (armnnUtils::CompatibleTypes(GetTensorInfo().GetDataType())) + { + return reinterpret_cast(m_MutableMemory); + } + else + { + throw armnn::Exception("Attempting to get not compatible type tensor!"); + } } protected: -- cgit v1.2.1