blob: 6c77266ea93c75493a4903e175e0df32fbeed157 [file] [log] [blame]
Sadik Armaganf40d6d42021-04-22 09:12:11 +01001//
Mike Kelly7cbe7812023-07-25 17:37:33 +01002// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved.
Sadik Armaganf40d6d42021-04-22 09:12:11 +01003// SPDX-License-Identifier: MIT
4//
5
6#include "ClCastWorkload.hpp"
7#include "ClWorkloadUtils.hpp"
8
9#include <armnn/utility/PolymorphicDowncast.hpp>
10
11#include <aclCommon/ArmComputeTensorUtils.hpp>
12
13#include <cl/ClTensorHandle.hpp>
14
15namespace armnn
16{
17
18static constexpr arm_compute::ConvertPolicy g_AclConvertPolicy = arm_compute::ConvertPolicy::SATURATE;
19
20arm_compute::Status ClCastValidate(const TensorInfo& input, const TensorInfo& output)
21{
22 const arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);
23 const arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);
24
25 return arm_compute::CLCast::validate(&aclInput, &aclOutput, g_AclConvertPolicy);
26}
27
28ClCastWorkload::ClCastWorkload(const CastQueueDescriptor& descriptor,
29 const WorkloadInfo& info,
30 const arm_compute::CLCompileContext& clCompileContext)
Teresa Charlin588cbdf2022-01-19 15:55:37 +000031 : ClBaseWorkload<CastQueueDescriptor>(descriptor, info)
Sadik Armaganf40d6d42021-04-22 09:12:11 +010032{
33 m_Data.ValidateInputsOutputs("ClCastWorkload", 1, 1);
34
35 arm_compute::ICLTensor& input = PolymorphicDowncast<ClTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
36 arm_compute::ICLTensor& output = PolymorphicDowncast<ClTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
37
Kevin May9f6862d2021-10-22 15:42:28 +010038 {
Mike Kelly7cbe7812023-07-25 17:37:33 +010039 ARMNN_SCOPED_PROFILING_EVENT_CL_NAME_GUID("ClCastWorkload_configure");
Kevin May9f6862d2021-10-22 15:42:28 +010040 m_CastLayer.configure(clCompileContext, &input, &output, g_AclConvertPolicy);
41 }
Sadik Armaganf40d6d42021-04-22 09:12:11 +010042}
43
44void ClCastWorkload::Execute() const
45{
Mike Kelly7cbe7812023-07-25 17:37:33 +010046 ARMNN_SCOPED_PROFILING_EVENT_CL_NAME_GUID("ClCastWorkload_Execute");
Sadik Armaganf40d6d42021-04-22 09:12:11 +010047 RunClFunction(m_CastLayer, CHECK_LOCATION());
48}
49
50} // namespace armnn