16 #include <arm_compute/runtime/CL/CLTensor.h> 17 #include <arm_compute/runtime/IFunction.h> 21 #define ARMNN_SCOPED_PROFILING_EVENT_CL(name) \ 22 ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(armnn::Compute::GpuAcc, \ 23 armnn::EmptyOptional(), \ 25 armnn::OpenClTimer(), \ 26 armnn::WallClockTimer()) 28 #define ARMNN_SCOPED_PROFILING_EVENT_CL_GUID(name, guid) \ 29 ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(armnn::Compute::GpuAcc, \ 32 armnn::OpenClTimer(), \ 33 armnn::WallClockTimer()) 40 switch (convolutionMethod)
42 case arm_compute::ConvolutionMethod::FFT:
44 case arm_compute::ConvolutionMethod::DIRECT:
46 case arm_compute::ConvolutionMethod::GEMM:
48 case arm_compute::ConvolutionMethod::WINOGRAD:
65 armcomputetensorutils::CopyArmComputeITensorData<T>(srcData, dstTensor);
72 const std::vector<int>& m_end,
73 const std::vector<int>& m_stride)
79 unsigned int num_dims =
static_cast<unsigned int>(m_begin.size());
81 for (
unsigned int i = 0; i < num_dims; i++) {
82 unsigned int revertedIndex = num_dims - i - 1;
84 starts.set(i, static_cast<int>(m_begin[revertedIndex]));
85 ends.set(i, static_cast<int>(m_end[revertedIndex]));
86 strides.set(i, static_cast<int>(m_stride[revertedIndex]));
89 return std::make_tuple(starts, ends, strides);
93 const std::vector<unsigned int>& m_size)
100 unsigned int num_dims =
static_cast<unsigned int>(m_begin.size());
105 for (
unsigned int i = 0; i < num_dims; i++)
107 unsigned int revertedIndex = num_dims - i - 1;
109 starts.set(i, static_cast<int>(m_begin[revertedIndex]));
110 ends.set(i, static_cast<int>(m_begin[revertedIndex] + m_size[revertedIndex]));
113 return std::make_tuple(starts, ends);
121 armcomputetensorutils::InitialiseArmComputeTensorEmpty(clTensor);
148 throw Exception(
"Unexpected tensor type during InitializeArmComputeClTensorData().");
154 std::stringstream message;
155 message <<
"CL error: " << clError.
what() <<
". Error code: " << clError.err();
172 template <
typename DataType,
typename PayloadType>
176 return reinterpret_cast<DataType*
>(tensorHandle->
Map());
std::string GetConvolutionMethodString(arm_compute::ConvolutionMethod &convolutionMethod)
#define ARMNN_SCOPED_PROFILING_EVENT_CL(name)
void RunClFunction(arm_compute::IFunction &function, const CheckLocation &location)
std::array< unsigned int, MaxNumOfTensorDimensions > Coordinates
virtual const char * what() const noexcept override
Copyright (c) 2021 ARM Limited and Contributors.
const TensorInfo & GetTensorInfo() const
DataType GetDataType() const
RuntimeException WrapClError(const cl::Error &clError, const CheckLocation &location)
#define ARMNN_ASSERT(COND)
auto SetClSliceData(const std::vector< unsigned int > &m_begin, const std::vector< unsigned int > &m_size)
virtual const void * Map(bool blocking=true) const =0
Map the tensor data for access.
void CopyArmComputeClTensorData(arm_compute::CLTensor &dstTensor, const T *srcData)
Base class for all ArmNN exceptions so that users can filter to just those.
DataType * GetOutputTensorData(unsigned int idx, const PayloadType &data)
void InitializeArmComputeClTensorData(arm_compute::CLTensor &clTensor, const ConstTensorHandle *handle)
auto SetClStridedSliceData(const std::vector< int > &m_begin, const std::vector< int > &m_end, const std::vector< int > &m_stride)
const T * GetConstTensor() const