From 67e6c54b4c4ff1e46a9ed14014d279794a666969 Mon Sep 17 00:00:00 2001 From: Keith Davis Date: Wed, 19 Feb 2020 10:08:33 +0000 Subject: IVGCVSW-4472 Yolo v3 ExecuteNetwork failing * Add Debug workload for QAsymmS8/U8 * Change Dequantize tests to test AsymmS8 instead of SymmS8 * Fix incorrect supportedness within RefLayerSupport Signed-off-by: Keith Davis Change-Id: Ie51f1e33c564d46c86bf0150b1addda3fc093d13 --- src/backends/reference/RefLayerSupport.cpp | 19 ++++++++----------- src/backends/reference/RefWorkloadFactory.cpp | 18 ++++++++++++++++++ src/backends/reference/workloads/RefDebugWorkload.cpp | 1 + src/backends/reference/workloads/RefDebugWorkload.hpp | 1 + 4 files changed, 28 insertions(+), 11 deletions(-) (limited to 'src/backends/reference') diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp index bba83e23d4..5cb36c4299 100644 --- a/src/backends/reference/RefLayerSupport.cpp +++ b/src/backends/reference/RefLayerSupport.cpp @@ -82,7 +82,6 @@ bool RefLayerSupport::IsActivationSupported(const TensorInfo& input, std::array supportedTypes = { DataType::Float32, DataType::Float16, - DataType::QSymmS8, DataType::QAsymmS8, DataType::QAsymmU8, DataType::QSymmS16 @@ -147,7 +146,6 @@ bool RefLayerSupport::IsAdditionSupported(const TensorInfo& input0, std::array supportedTypes = { DataType::Float32, DataType::Float16, - DataType::QSymmS8, DataType::QAsymmS8, DataType::QAsymmU8, DataType::QSymmS16 @@ -332,8 +330,8 @@ bool RefLayerSupport::IsConcatSupported(const std::vector inp { DataType::Float32, DataType::Float16, - DataType::QSymmS8, DataType::QAsymmU8, + DataType::QAsymmS8, DataType::QSymmS16 }; @@ -355,11 +353,12 @@ bool RefLayerSupport::IsConcatSupported(const std::vector inp bool RefLayerSupport::IsConstantSupported(const TensorInfo& output, Optional reasonIfUnsupported) const { - std::array supportedTypes = + std::array supportedTypes = { DataType::Float32, DataType::Signed32, DataType::QAsymmU8, + DataType::QAsymmS8, DataType::QSymmS8, DataType::QSymmS16 }; @@ -1120,7 +1119,7 @@ bool RefLayerSupport::IsMaximumSupported(const TensorInfo& input0, std::array supportedTypes = { DataType::Float32, DataType::Float16, - DataType::QSymmS8, + DataType::QAsymmS8, DataType::QAsymmU8, DataType::QSymmS16 }; @@ -1284,11 +1283,11 @@ bool RefLayerSupport::IsMultiplicationSupported(const TensorInfo& input0, { bool supported = true; - std::array supportedTypes = { + std::array supportedTypes = { DataType::Float32, DataType::Float16, - DataType::QSymmS8, DataType::QAsymmU8, + DataType::QAsymmS8, DataType::QSymmS16 }; @@ -1416,11 +1415,10 @@ bool RefLayerSupport::IsPooling2dSupported(const TensorInfo& input, bool supported = true; // Define supported output and inputs types. - std::array supportedTypes = + std::array supportedTypes = { DataType::Float32, DataType::Float16, - DataType::QSymmS8, DataType::QAsymmS8, DataType::QAsymmU8, DataType::QSymmS16 @@ -1488,7 +1486,6 @@ bool RefLayerSupport::IsReshapeSupported(const TensorInfo& input, DataType::Signed32, DataType::QAsymmS8, DataType::QAsymmU8, - DataType::QSymmS8, DataType::QSymmS16 }; @@ -1532,8 +1529,8 @@ bool RefLayerSupport::IsResizeSupported(const TensorInfo& input, { DataType::Float32, DataType::Float16, - DataType::QSymmS8, DataType::QAsymmU8, + DataType::QAsymmS8, DataType::QSymmS16 }; diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp index dadb456104..02dbbabf9f 100644 --- a/src/backends/reference/RefWorkloadFactory.cpp +++ b/src/backends/reference/RefWorkloadFactory.cpp @@ -65,6 +65,16 @@ bool IsQSymmS8(const WorkloadInfo& info) return IsDataType(info); } +bool IsQAsymmS8(const WorkloadInfo& info) +{ + return IsDataType(info); +} + +bool IsQAsymmU8(const WorkloadInfo& info) +{ + return IsDataType(info); +} + RefWorkloadFactory::RefWorkloadFactory(const std::shared_ptr& memoryManager) : m_MemoryManager(memoryManager) { @@ -200,6 +210,14 @@ std::unique_ptr RefWorkloadFactory::CreateDebug(const DebugQueueDescr { return std::make_unique(descriptor, info); } + if (IsQAsymmU8(info)) + { + return std::make_unique(descriptor, info); + } + if (IsQAsymmS8(info)) + { + return std::make_unique(descriptor, info); + } if (IsSigned32(info)) { return std::make_unique(descriptor, info); diff --git a/src/backends/reference/workloads/RefDebugWorkload.cpp b/src/backends/reference/workloads/RefDebugWorkload.cpp index 2f0b4276c0..af714a3ca7 100644 --- a/src/backends/reference/workloads/RefDebugWorkload.cpp +++ b/src/backends/reference/workloads/RefDebugWorkload.cpp @@ -47,6 +47,7 @@ void RefDebugWorkload::RegisterDebugCallback(const DebugCallbackFuncti template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; +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 4966ca3432..5a2a1cdf1b 100644 --- a/src/backends/reference/workloads/RefDebugWorkload.hpp +++ b/src/backends/reference/workloads/RefDebugWorkload.hpp @@ -40,6 +40,7 @@ private: using RefDebugFloat16Workload = RefDebugWorkload; using RefDebugFloat32Workload = RefDebugWorkload; using RefDebugQAsymmU8Workload = RefDebugWorkload; +using RefDebugQAsymmS8Workload = RefDebugWorkload; using RefDebugQSymmS16Workload = RefDebugWorkload; using RefDebugQSymmS8Workload = RefDebugWorkload; using RefDebugSigned32Workload = RefDebugWorkload; -- cgit v1.2.1