// // Copyright © 2017 Arm Ltd. All rights reserved. // See LICENSE file in the project root for full license information. // #pragma once #include "CpuTensorHandleFwd.hpp" #include "backends/Workload.hpp" #include namespace armnn { template class CopyFromCpuToCpuWorkload : public TypedWorkload { public: CopyFromCpuToCpuWorkload(const MemCopyQueueDescriptor& descriptor, const WorkloadInfo& info); void Execute() const override; private: using TensorHandlePair = std::pair; std::vector m_TensorHandlePairs; }; using CopyFromCpuToCpuFloat32Workload = CopyFromCpuToCpuWorkload; using CopyFromCpuToCpuUint8Workload = CopyFromCpuToCpuWorkload; #if ARMCOMPUTECL_ENABLED class IClTensorHandle; template class CopyFromCpuToClWorkload : public TypedWorkload { public: CopyFromCpuToClWorkload(const MemCopyQueueDescriptor& descriptor, const WorkloadInfo& info); void Execute() const override; private: using TensorHandlePair = std::pair; std::vector m_TensorHandlePairs; }; using CopyFromCpuToClFloat32Workload = CopyFromCpuToClWorkload; using CopyFromCpuToClUint8Workload = CopyFromCpuToClWorkload; template class CopyFromClToCpuWorkload : public TypedWorkload { public: CopyFromClToCpuWorkload(const MemCopyQueueDescriptor& descriptor, const WorkloadInfo& info); void Execute() const override; private: using TensorHandlePair = std::pair; std::vector m_TensorHandlePairs; }; using CopyFromClToCpuFloat32Workload = CopyFromClToCpuWorkload; using CopyFromClToCpuUint8Workload = CopyFromClToCpuWorkload; #endif // ARMCOMPUTECL_ENABLED #if ARMCOMPUTENEON_ENABLED class INeonTensorHandle; template class CopyFromCpuToNeonWorkload : public TypedWorkload { public: CopyFromCpuToNeonWorkload(const MemCopyQueueDescriptor& descriptor, const WorkloadInfo& info); void Execute() const override; protected: using TensorHandlePair = std::pair; std::vector m_TensorHandlePairs; }; using CopyFromCpuToNeonFloat32Workload = CopyFromCpuToNeonWorkload; using CopyFromCpuToNeonUint8Workload = CopyFromCpuToNeonWorkload; template class CopyFromNeonToCpuWorkload : public TypedWorkload { public: CopyFromNeonToCpuWorkload(const MemCopyQueueDescriptor& descriptor, const WorkloadInfo& info); void Execute() const override; protected: using TensorHandlePair = std::pair; std::vector m_TensorHandlePairs; }; using CopyFromNeonToCpuFloat32Workload = CopyFromNeonToCpuWorkload; using CopyFromNeonToCpuUint8Workload = CopyFromNeonToCpuWorkload; #endif #if ARMCOMPUTECL_ENABLED && ARMCOMPUTENEON_ENABLED template class CopyFromNeonToClWorkload : public TypedWorkload { public: CopyFromNeonToClWorkload(const MemCopyQueueDescriptor& descriptor, const WorkloadInfo& info); void Execute() const override; private: using TensorHandlePair = std::pair; std::vector m_TensorHandlePairs; }; using CopyFromNeonToClFloat32Workload = CopyFromNeonToClWorkload; using CopyFromNeonToClUint8Workload = CopyFromNeonToClWorkload; template class CopyFromClToNeonWorkload : public TypedWorkload { public: CopyFromClToNeonWorkload(const MemCopyQueueDescriptor& descriptor, const WorkloadInfo& info); void Execute() const override; private: using TensorHandlePair = std::pair; std::vector m_TensorHandlePairs; }; using CopyFromClToNeonFloat32Workload = CopyFromClToNeonWorkload; using CopyFromClToNeonUint8Workload = CopyFromClToNeonWorkload; #endif }