From db1a2834b4e9d74ed538943634212eccbd4a789b Mon Sep 17 00:00:00 2001 From: Aron Virginas-Tar Date: Tue, 12 Nov 2019 16:15:11 +0000 Subject: Add FP16 support to DebugWorkload Signed-off-by: Aron Virginas-Tar Change-Id: Ia879f2d84a1b977474ee0dafa976f2aab32bd3ae --- src/backends/reference/RefLayerSupport.cpp | 3 ++- src/backends/reference/RefWorkloadFactory.cpp | 5 +++++ src/backends/reference/workloads/Debug.cpp | 10 ++++++++++ src/backends/reference/workloads/RefDebugWorkload.cpp | 1 + src/backends/reference/workloads/RefDebugWorkload.hpp | 1 + 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp index ef0cc8c363..5a84d8ac78 100644 --- a/src/backends/reference/RefLayerSupport.cpp +++ b/src/backends/reference/RefLayerSupport.cpp @@ -495,8 +495,9 @@ bool RefLayerSupport::IsDebugSupported(const TensorInfo& input, { bool supported = true; - std::array supportedTypes = + std::array supportedTypes = { + DataType::Float16, DataType::Float32, DataType::QuantisedAsymm8, DataType::QuantisedSymm16 diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp index c2cb51abf3..7fd93435e7 100644 --- a/src/backends/reference/RefWorkloadFactory.cpp +++ b/src/backends/reference/RefWorkloadFactory.cpp @@ -172,10 +172,15 @@ std::unique_ptr RefWorkloadFactory::CreateConvolution2d(const Convolu std::unique_ptr RefWorkloadFactory::CreateDebug(const DebugQueueDescriptor& descriptor, const WorkloadInfo& info) const { + if (IsFloat16(info)) + { + return std::make_unique(descriptor, info); + } if (IsQSymm16(info)) { return std::make_unique(descriptor, info); } + return MakeWorkload(descriptor, info); } diff --git a/src/backends/reference/workloads/Debug.cpp b/src/backends/reference/workloads/Debug.cpp index 09a0dfc03b..b7d0911ef3 100644 --- a/src/backends/reference/workloads/Debug.cpp +++ b/src/backends/reference/workloads/Debug.cpp @@ -2,8 +2,11 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // + #include "Debug.hpp" +#include + #include #include @@ -85,6 +88,12 @@ void Debug(const TensorInfo& inputInfo, std::cout << " }" << std::endl; } +template void Debug(const TensorInfo& inputInfo, + const Half* inputData, + LayerGuid guid, + const std::string& layerName, + unsigned int slotIndex); + template void Debug(const TensorInfo& inputInfo, const float* inputData, LayerGuid guid, @@ -102,4 +111,5 @@ template void Debug(const TensorInfo& inputInfo, LayerGuid guid, const std::string& layerName, unsigned int slotIndex); + } // namespace armnn diff --git a/src/backends/reference/workloads/RefDebugWorkload.cpp b/src/backends/reference/workloads/RefDebugWorkload.cpp index 325817b19f..2a3883f8f7 100644 --- a/src/backends/reference/workloads/RefDebugWorkload.cpp +++ b/src/backends/reference/workloads/RefDebugWorkload.cpp @@ -44,6 +44,7 @@ void RefDebugWorkload::RegisterDebugCallback(const DebugCallbackFuncti m_Callback = func; } +template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; diff --git a/src/backends/reference/workloads/RefDebugWorkload.hpp b/src/backends/reference/workloads/RefDebugWorkload.hpp index 6a1fceba0a..0964515b2c 100644 --- a/src/backends/reference/workloads/RefDebugWorkload.hpp +++ b/src/backends/reference/workloads/RefDebugWorkload.hpp @@ -37,6 +37,7 @@ private: DebugCallbackFunction m_Callback; }; +using RefDebugFloat16Workload = RefDebugWorkload; using RefDebugFloat32Workload = RefDebugWorkload; using RefDebugQAsymm8Workload = RefDebugWorkload; using RefDebugQSymm16Workload = RefDebugWorkload; -- cgit v1.2.1