From 4cf29d6b4bf1c8c6e6080099cb5eddfd079ee68c Mon Sep 17 00:00:00 2001 From: John Mcloughlin Date: Mon, 25 Sep 2023 14:10:32 +0100 Subject: GitHub #734 Add ExecuteNetwork support for S64 bit output * Add Signed 64 bit support for Output and Debug Layers Signed-off-by: John Mcloughlin Change-Id: I991c2d5f1067b16d0fac362e7406305fbe90d034 --- src/backends/reference/RefWorkloadFactory.cpp | 8 ++++++++ src/backends/reference/workloads/Debug.cpp | 9 ++++++++- src/backends/reference/workloads/RefDebugWorkload.cpp | 1 + src/backends/reference/workloads/RefDebugWorkload.hpp | 1 + tests/ExecuteNetwork/ArmNNExecutor.cpp | 6 +++++- 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp index c4d9583a66..ad6ec9a792 100644 --- a/src/backends/reference/RefWorkloadFactory.cpp +++ b/src/backends/reference/RefWorkloadFactory.cpp @@ -45,6 +45,10 @@ bool IsDataType(const WorkloadInfo& info) } return false; } +bool IsSigned64(const WorkloadInfo& info) +{ + return IsDataType(info); +} bool IsSigned32(const WorkloadInfo& info) { return IsDataType(info); @@ -263,6 +267,10 @@ std::unique_ptr RefWorkloadFactory::CreateWorkload(LayerType type, { return std::make_unique(*debugQueueDescriptor, info); } + if (IsSigned64(info)) + { + return std::make_unique(*debugQueueDescriptor, info); + } return MakeWorkload(*debugQueueDescriptor, info); } case LayerType::DepthToSpace: diff --git a/src/backends/reference/workloads/Debug.cpp b/src/backends/reference/workloads/Debug.cpp index 50aecc8b66..564dd7ae5c 100644 --- a/src/backends/reference/workloads/Debug.cpp +++ b/src/backends/reference/workloads/Debug.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -165,4 +165,11 @@ template void Debug(const TensorInfo& inputInfo, unsigned int slotIndex, bool outputsToFile); +template void Debug(const TensorInfo& inputInfo, + const int64_t* inputData, + LayerGuid guid, + const std::string& layerName, + unsigned int slotIndex, + bool outputsToFile); + } // namespace armnn diff --git a/src/backends/reference/workloads/RefDebugWorkload.cpp b/src/backends/reference/workloads/RefDebugWorkload.cpp index 3653bb6c13..94eed4ff4f 100644 --- a/src/backends/reference/workloads/RefDebugWorkload.cpp +++ b/src/backends/reference/workloads/RefDebugWorkload.cpp @@ -65,5 +65,6 @@ template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; +template class RefDebugWorkload; } // namespace armnn diff --git a/src/backends/reference/workloads/RefDebugWorkload.hpp b/src/backends/reference/workloads/RefDebugWorkload.hpp index 0dd98d2ef3..4c99990ec4 100644 --- a/src/backends/reference/workloads/RefDebugWorkload.hpp +++ b/src/backends/reference/workloads/RefDebugWorkload.hpp @@ -47,5 +47,6 @@ using RefDebugQAsymmS8Workload = RefDebugWorkload; using RefDebugQSymmS16Workload = RefDebugWorkload; using RefDebugQSymmS8Workload = RefDebugWorkload; using RefDebugSigned32Workload = RefDebugWorkload; +using RefDebugSigned64Workload = RefDebugWorkload; } // namespace armnn diff --git a/tests/ExecuteNetwork/ArmNNExecutor.cpp b/tests/ExecuteNetwork/ArmNNExecutor.cpp index 8ce3689e9f..42d41ef169 100644 --- a/tests/ExecuteNetwork/ArmNNExecutor.cpp +++ b/tests/ExecuteNetwork/ArmNNExecutor.cpp @@ -682,6 +682,11 @@ void ArmNNExecutor::PrintOutputTensors(const armnn::OutputTensors* outputTensors PrintTensor(outputWriteInfo, "%d "); break; } + case armnn::DataType::Signed64: + { + PrintTensor(outputWriteInfo, "%ld "); + break; + } case armnn::DataType::QSymmS8: case armnn::DataType::QAsymmS8: { @@ -697,7 +702,6 @@ void ArmNNExecutor::PrintOutputTensors(const armnn::OutputTensors* outputTensors case armnn::DataType::Float16: case armnn::DataType::QSymmS16: case armnn::DataType::BFloat16: - case armnn::DataType::Signed64: default: { LogAndThrow("Unexpected DataType"); -- cgit v1.2.1