ArmNN
 25.11
Loading...
Searching...
No Matches
MemCopyWorkload.cpp
Go to the documentation of this file.
1//
2// Copyright © 2022, 2024 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include <ResolveType.hpp>
7
8#include "WorkloadUtils.hpp"
9
12
14
15#include <cstring>
16
17namespace armnn
18{
19
20namespace
21{
22
23template <typename SrcTensorHandleType, typename DstTensorHandleType>
25 std::vector<std::pair<SrcTensorHandleType*, DstTensorHandleType*>>& tensorHandlePairs)
26{
27 const unsigned int numInputs = static_cast<unsigned int>(descriptor.m_Inputs.size());
28 tensorHandlePairs.reserve(numInputs);
29
30 for (unsigned int i = 0; i < numInputs; ++i)
31 {
32 SrcTensorHandleType* const srcTensorHandle = PolymorphicDowncast<SrcTensorHandleType*>(
33 descriptor.m_Inputs[i]);
34 DstTensorHandleType* const dstTensorHandle = PolymorphicDowncast<DstTensorHandleType*>(
35 descriptor.m_Outputs[i]);
36
37 tensorHandlePairs.emplace_back(srcTensorHandle, dstTensorHandle);
38 }
39}
40
41} //namespace
42
43
45 const WorkloadInfo& info)
47{
48 GatherTensorHandlePairs(descriptor, m_TensorHandlePairs);
49}
50
52{
53 ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "CopyMemGeneric_Execute");
54
55 auto copyFunc = [](void* dst, const void* src, size_t size)
56 {
57 memcpy(dst, src, size);
58 };
59
60 for (const auto& pair : m_TensorHandlePairs)
61 {
62 CopyTensorContentsGeneric(pair.first, pair.second, copyFunc);
63 }
64}
65
66} //namespace armnn
#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)
BaseWorkload(const MemCopyQueueDescriptor &descriptor, const WorkloadInfo &info)
Definition Workload.hpp:35
CopyMemGenericWorkload(const MemCopyQueueDescriptor &descriptor, const WorkloadInfo &info)
void Execute() const override
Copyright (c) 2021 ARM Limited and Contributors.
void GatherTensorHandlePairs(const DescriptorType &descriptor, std::vector< std::pair< SrcTensorHandleType *, DstTensorHandleType * > > &tensorHandlePairs)
DestType PolymorphicDowncast(SourceType *value)
Polymorphic downcast for build in pointers only.
void CopyTensorContentsGeneric(const ITensorHandle *srcTensor, ITensorHandle *dstTensor, CopyFunc copy)
Contains information about TensorInfos of a layer.