// // Copyright © 2018-2024 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "RefDebugWorkload.hpp" #include "Debug.hpp" #include "RefWorkloadUtils.hpp" #include #include namespace armnn { template void RefDebugWorkload::Execute() const { Execute(m_Data.m_Inputs); } template void RefDebugWorkload::ExecuteAsync(ExecutionData& executionData) { WorkingMemDescriptor* workingMemDescriptor = static_cast(executionData.m_Data); Execute(workingMemDescriptor->m_Inputs); } template void RefDebugWorkload::Execute(std::vector inputs) const { using T = ResolveType; ARMNN_SCOPED_PROFILING_EVENT_REF_NAME_GUID("Execute"); const TensorInfo& inputInfo = GetTensorInfo(inputs[0]); const T* inputData = GetInputTensorData(0, m_Data); T* outputData = GetOutputTensorData(0, m_Data); if (m_Callback) { m_Callback(m_Data.m_Guid, m_Data.m_SlotIndex, inputs[0]); } else { Debug(inputInfo, inputData, m_Data.m_Guid, m_Data.m_LayerName, m_Data.m_SlotIndex, m_Data.m_LayerOutputToFile); } std::memcpy(outputData, inputData, inputInfo.GetNumElements()*sizeof(T)); } template void RefDebugWorkload::RegisterDebugCallback(const DebugCallbackFunction& func) { m_Callback = func; } template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; template class RefDebugWorkload; } // namespace armnn