2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // See LICENSE file in the project root for full license information.
7 #include "Workload.hpp"
8 #include <arm_compute/core/CL/OpenCL.h>
9 #include <arm_compute/runtime/CL/CLFunctions.h>
10 #include <arm_compute/runtime/SubTensor.h>
11 #include "ArmComputeTensorUtils.hpp"
12 #include "OpenClTimer.hpp"
13 #include "CpuTensorHandle.hpp"
16 #define ARMNN_SCOPED_PROFILING_EVENT_CL(name) \
17 ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(armnn::Compute::GpuAcc, \
19 armnn::OpenClTimer(), \
20 armnn::WallClockTimer())
26 void CopyArmComputeClTensorData(const T* srcData, arm_compute::CLTensor& dstTensor)
29 ARMNN_SCOPED_PROFILING_EVENT_CL("MapClTensorForWriting");
34 ARMNN_SCOPED_PROFILING_EVENT_CL("CopyToClTensor");
35 armcomputetensorutils::CopyArmComputeITensorData<T>(srcData, dstTensor);
42 void InitialiseArmComputeClTensorData(arm_compute::CLTensor& clTensor, const T* data)
44 armcomputetensorutils::InitialiseArmComputeTensorEmpty(clTensor);
45 CopyArmComputeClTensorData<T>(data, clTensor);
48 inline void InitializeArmComputeClTensorDataForFloatTypes(arm_compute::CLTensor& clTensor,
49 const ConstCpuTensorHandle *handle)
52 switch(handle->GetTensorInfo().GetDataType())
54 case DataType::Float16:
55 InitialiseArmComputeClTensorData(clTensor, handle->GetConstTensor<armnn::Half>());
57 case DataType::Float32:
58 InitialiseArmComputeClTensorData(clTensor, handle->GetConstTensor<float>());
61 BOOST_ASSERT_MSG(false, "Unexpected floating point type.");