ArmNN
 25.11
Loading...
Searching...
No Matches
ClTensorHandle.cpp
Go to the documentation of this file.
1//
2// Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "ClTensorHandle.hpp"
7
9
10namespace armnn
11{
12 std::shared_ptr<ITensorHandle> ClTensorHandle::DecorateTensorHandle(const TensorInfo& tensorInfo)
13 {
14 auto* parent = const_cast<ClTensorHandle*>(this);
15 auto decorated = std::make_shared<ClTensorHandleDecorator>(parent, tensorInfo);
16 m_Decorated.emplace_back(decorated);
17 return decorated;
18 }
19
21 : m_Original(nullptr), m_TensorInfo()
22 {
23 }
24
25 ClTensorDecorator::ClTensorDecorator(arm_compute::ICLTensor* original, const TensorInfo& tensorInfo)
26 : m_Original(nullptr), m_TensorInfo()
27 {
28 m_TensorInfo = armcomputetensorutils::BuildArmComputeTensorInfo(tensorInfo);
29 m_Original = original;
30 }
31
32 arm_compute::ITensorInfo* ClTensorDecorator::info() const
33 {
34 return &m_TensorInfo;
35 }
36
37 arm_compute::ITensorInfo* ClTensorDecorator::info()
38 {
39 return &m_TensorInfo;
40 }
41
42 const cl::Buffer& ClTensorDecorator::cl_buffer() const
43 {
44 ARM_COMPUTE_ERROR_ON(m_Original == nullptr);
45 return m_Original->cl_buffer();
46 }
47
48 arm_compute::ICLTensor* ClTensorDecorator::parent()
49 {
50 return nullptr;
51 }
52
53 arm_compute::CLQuantization ClTensorDecorator::quantization() const
54 {
55 return m_Original->quantization();
56 }
57
58 void ClTensorDecorator::map(bool blocking)
59 {
60 arm_compute::ICLTensor::map(arm_compute::CLScheduler::get().queue(), blocking);
61 }
62
64 {
65 arm_compute::ICLTensor::unmap(arm_compute::CLScheduler::get().queue());
66 }
67
68 uint8_t* ClTensorDecorator::do_map(cl::CommandQueue& q, bool blocking)
69 {
70 if(m_Original->buffer() == nullptr)
71 {
72 m_Original->map(q, blocking);
73 }
74 return m_Original->buffer();
75 }
76
77 void ClTensorDecorator::do_unmap(cl::CommandQueue& q)
78 {
79 m_Original->unmap(q);
80 }
81
82}
void map(bool blocking=true)
uint8_t * do_map(cl::CommandQueue &q, bool blocking) override
void do_unmap(cl::CommandQueue &q) override
const cl::Buffer & cl_buffer() const override
arm_compute::CLQuantization quantization() const override
arm_compute::ICLTensor * parent()
virtual arm_compute::ITensorInfo * info() const override
ClTensorHandle(const TensorInfo &tensorInfo)
virtual std::shared_ptr< ITensorHandle > DecorateTensorHandle(const TensorInfo &tensorInfo) override
Returns a decorated version of this TensorHandle allowing us to override the TensorInfo for it.
Copyright (c) 2021 ARM Limited and Contributors.