From 403a185d9e15b7bdff4f38d687814963451f627f Mon Sep 17 00:00:00 2001 From: Narumol Prangnawarat Date: Thu, 12 Mar 2020 14:24:13 +0000 Subject: IVGCVSW-4512 Add BFloat16 Debug Workload Signed-off-by: Narumol Prangnawarat Change-Id: Id179cb4774a4565e5e905e5fe4c34299178644de --- src/backends/reference/RefLayerSupport.cpp | 3 ++- src/backends/reference/RefWorkloadFactory.cpp | 4 ++++ src/backends/reference/test/RefLayerTests.cpp | 5 +++++ src/backends/reference/workloads/Debug.cpp | 7 +++++++ src/backends/reference/workloads/RefDebugWorkload.cpp | 1 + src/backends/reference/workloads/RefDebugWorkload.hpp | 1 + 6 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src/backends/reference') diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp index 9dc576cac8..94128fe7cd 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::BFloat16, DataType::Float16, DataType::Float32, DataType::QAsymmU8, diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp index 1d82421490..aebf19bf28 100644 --- a/src/backends/reference/RefWorkloadFactory.cpp +++ b/src/backends/reference/RefWorkloadFactory.cpp @@ -203,6 +203,10 @@ std::unique_ptr RefWorkloadFactory::CreateConvolution2d(const Convolu std::unique_ptr RefWorkloadFactory::CreateDebug(const DebugQueueDescriptor& descriptor, const WorkloadInfo& info) const { + if (IsBFloat16(info)) + { + return std::make_unique(descriptor, info); + } if (IsFloat16(info)) { return std::make_unique(descriptor, info); diff --git a/src/backends/reference/test/RefLayerTests.cpp b/src/backends/reference/test/RefLayerTests.cpp index a6bfe3575c..73b2a05e09 100644 --- a/src/backends/reference/test/RefLayerTests.cpp +++ b/src/backends/reference/test/RefLayerTests.cpp @@ -1417,6 +1417,11 @@ ARMNN_AUTO_TEST_CASE(Debug3dFloat32, Debug3dFloat32Test) ARMNN_AUTO_TEST_CASE(Debug2dFloat32, Debug2dFloat32Test) ARMNN_AUTO_TEST_CASE(Debug1dFloat32, Debug1dFloat32Test) +ARMNN_AUTO_TEST_CASE(Debug4dBFloat16, Debug4dBFloat16Test) +ARMNN_AUTO_TEST_CASE(Debug3dBFloat16, Debug3dBFloat16Test) +ARMNN_AUTO_TEST_CASE(Debug2dBFloat16, Debug2dBFloat16Test) +ARMNN_AUTO_TEST_CASE(Debug1dBFloat16, Debug1dBFloat16Test) + ARMNN_AUTO_TEST_CASE(Debug4dUint8, Debug4dUint8Test) ARMNN_AUTO_TEST_CASE(Debug3dUint8, Debug3dUint8Test) ARMNN_AUTO_TEST_CASE(Debug2dUint8, Debug2dUint8Test) diff --git a/src/backends/reference/workloads/Debug.cpp b/src/backends/reference/workloads/Debug.cpp index 49e9e02ffb..aadbc7613b 100644 --- a/src/backends/reference/workloads/Debug.cpp +++ b/src/backends/reference/workloads/Debug.cpp @@ -5,6 +5,7 @@ #include "Debug.hpp" +#include #include #include @@ -88,6 +89,12 @@ void Debug(const TensorInfo& inputInfo, std::cout << " }" << std::endl; } +template void Debug(const TensorInfo& inputInfo, + const BFloat16* inputData, + LayerGuid guid, + const std::string& layerName, + unsigned int slotIndex); + template void Debug(const TensorInfo& inputInfo, const Half* inputData, LayerGuid guid, diff --git a/src/backends/reference/workloads/RefDebugWorkload.cpp b/src/backends/reference/workloads/RefDebugWorkload.cpp index af714a3ca7..72b03effca 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 5a2a1cdf1b..1ccbcc590b 100644 --- a/src/backends/reference/workloads/RefDebugWorkload.hpp +++ b/src/backends/reference/workloads/RefDebugWorkload.hpp @@ -37,6 +37,7 @@ private: DebugCallbackFunction m_Callback; }; +using RefDebugBFloat16Workload = RefDebugWorkload; using RefDebugFloat16Workload = RefDebugWorkload; using RefDebugFloat32Workload = RefDebugWorkload; using RefDebugQAsymmU8Workload = RefDebugWorkload; -- cgit v1.2.1