24.02.1
|
Interface for the ROI pooling layer kernel. More...
#include <CLROIPoolingLayerKernel.h>
Public Member Functions | |
CLROIPoolingLayerKernel () | |
Default constructor. More... | |
CLROIPoolingLayerKernel (const CLROIPoolingLayerKernel &)=delete | |
Prevent instances of this class from being copied (As this class contains pointers) More... | |
CLROIPoolingLayerKernel & | operator= (const CLROIPoolingLayerKernel &)=delete |
Prevent instances of this class from being copied (As this class contains pointers) More... | |
CLROIPoolingLayerKernel (CLROIPoolingLayerKernel &&)=default | |
Allow instances of this class to be moved. More... | |
CLROIPoolingLayerKernel & | operator= (CLROIPoolingLayerKernel &&)=default |
Allow instances of this class to be moved. More... | |
~CLROIPoolingLayerKernel ()=default | |
Default destructor. More... | |
void | configure (const ICLTensor *input, const ICLTensor *rois, ICLTensor *output, const ROIPoolingLayerInfo &pool_info) |
Set the input and output tensors. More... | |
void | configure (const CLCompileContext &compile_context, const ICLTensor *input, const ICLTensor *rois, const ICLTensor *output, const ROIPoolingLayerInfo &pool_info) |
Set the input and output tensors. More... | |
void | run (const Window &window, cl::CommandQueue &queue) override |
Enqueue the OpenCL kernel to process the given window on the passed OpenCL command queue. More... | |
Public Member Functions inherited from ICLKernel | |
ICLKernel () | |
Constructor. More... | |
cl::Kernel & | kernel () |
Returns a reference to the OpenCL kernel of this object. More... | |
CLKernelType | type () const |
Returns the CL kernel type. More... | |
template<typename T > | |
void | add_1D_array_argument (unsigned int &idx, const ICLArray< T > *array, const Strides &strides, unsigned int num_dimensions, const Window &window) |
Add the passed 1D array's parameters to the object's kernel's arguments starting from the index idx. More... | |
void | add_1D_tensor_argument (unsigned int &idx, const ICLTensor *tensor, const Window &window) |
Add the passed 1D tensor's parameters to the object's kernel's arguments starting from the index idx. More... | |
void | add_1D_tensor_argument_if (bool cond, unsigned int &idx, const ICLTensor *tensor, const Window &window) |
Add the passed 1D tensor's parameters to the object's kernel's arguments starting from the index idx if the condition is true. More... | |
void | add_2D_tensor_argument (unsigned int &idx, const ICLTensor *tensor, const Window &window) |
Add the passed 2D tensor's parameters to the object's kernel's arguments starting from the index idx. More... | |
void | add_2D_tensor_argument_if (bool cond, unsigned int &idx, const ICLTensor *tensor, const Window &window) |
Add the passed 2D tensor's parameters to the object's kernel's arguments starting from the index idx if the condition is true. More... | |
void | add_3D_tensor_argument (unsigned int &idx, const ICLTensor *tensor, const Window &window) |
Add the passed 3D tensor's parameters to the object's kernel's arguments starting from the index idx. More... | |
void | add_4D_tensor_argument (unsigned int &idx, const ICLTensor *tensor, const Window &window) |
Add the passed 4D tensor's parameters to the object's kernel's arguments starting from the index idx. More... | |
void | add_5D_tensor_argument (unsigned int &idx, const ICLTensor *tensor, const Window &window) |
Add the passed 5D tensor's parameters to the object's kernel's arguments starting from the index idx. More... | |
void | add_3d_tensor_nhw_argument (unsigned int &idx, const ICLTensor *tensor) |
Add the passed NHW 3D tensor's parameters to the object's kernel's arguments by passing strides, dimensions and the offset to the first valid element in bytes. More... | |
void | add_4d_tensor_nhwc_argument (unsigned int &idx, const ICLTensor *tensor) |
Add the passed NHWC 4D tensor's parameters to the object's kernel's arguments by passing strides, dimensions and the offset to the first valid element in bytes. More... | |
virtual void | run_op (ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) |
Enqueue the OpenCL kernel to process the given window on the passed OpenCL command queue. More... | |
template<typename T > | |
void | add_argument (unsigned int &idx, T value) |
Add the passed parameters to the object's kernel's arguments starting from the index idx. More... | |
void | set_lws_hint (const cl::NDRange &lws_hint) |
Set the Local-Workgroup-Size hint. More... | |
cl::NDRange | lws_hint () const |
Return the Local-Workgroup-Size hint. More... | |
void | set_wbsm_hint (const cl_int &wbsm_hint) |
Set the workgroup batch size modifier hint. More... | |
cl_int | wbsm_hint () const |
Return the workgroup batch size modifier hint. More... | |
const std::string & | config_id () const |
Get the configuration ID. More... | |
void | set_target (GPUTarget target) |
Set the targeted GPU architecture. More... | |
void | set_target (cl::Device &device) |
Set the targeted GPU architecture according to the CL device. More... | |
GPUTarget | get_target () const |
Get the targeted GPU architecture. More... | |
size_t | get_max_workgroup_size () |
Get the maximum workgroup size for the device the CLKernelLibrary uses. More... | |
cl::NDRange | get_cached_gws () const |
Get the cached gws used to enqueue this kernel. More... | |
void | cache_gws (const cl::NDRange &gws) |
Cache the latest gws used to enqueue this kernel. More... | |
template<unsigned int dimension_size> | |
void | add_tensor_argument (unsigned &idx, const ICLTensor *tensor, const Window &window) |
template<typename T , unsigned int dimension_size> | |
void | add_array_argument (unsigned &idx, const ICLArray< T > *array, const Strides &strides, unsigned int num_dimensions, const Window &window) |
Add the passed array's parameters to the object's kernel's arguments starting from the index idx. More... | |
Public Member Functions inherited from IKernel | |
IKernel () | |
Constructor. More... | |
virtual | ~IKernel ()=default |
Destructor. More... | |
virtual bool | is_parallelisable () const |
Indicates whether or not the kernel is parallelisable. More... | |
virtual BorderSize | border_size () const |
The size of the border for that kernel. More... | |
const Window & | window () const |
The maximum window the kernel can be executed on. More... | |
bool | is_window_configured () const |
Function to check if the embedded window of this kernel has been configured. More... | |
Static Public Member Functions | |
static Status | validate (const ITensorInfo *input, const ITensorInfo *rois, const ITensorInfo *output, const ROIPoolingLayerInfo &pool_info) |
Static Validate function to check inputs will lead to valid configuration of CLROIPoolingLayer. More... | |
Static Public Member Functions inherited from ICLKernel | |
constexpr static unsigned int | num_arguments_per_3d_tensor_nhw () |
Returns the number of arguments enqueued per NHW 3D Tensor object. More... | |
constexpr static unsigned int | num_arguments_per_4d_tensor_nhwc () |
Returns the number of arguments enqueued per NHWC 4D Tensor object. More... | |
constexpr static unsigned int | num_arguments_per_1D_array () |
Returns the number of arguments enqueued per 1D array object. More... | |
constexpr static unsigned int | num_arguments_per_1D_tensor () |
Returns the number of arguments enqueued per 1D tensor object. More... | |
constexpr static unsigned int | num_arguments_per_2D_tensor () |
Returns the number of arguments enqueued per 2D tensor object. More... | |
constexpr static unsigned int | num_arguments_per_3D_tensor () |
Returns the number of arguments enqueued per 3D tensor object. More... | |
constexpr static unsigned int | num_arguments_per_4D_tensor () |
Returns the number of arguments enqueued per 4D tensor object. More... | |
static cl::NDRange | gws_from_window (const Window &window, bool use_dummy_work_items) |
Get the global work size given an execution window. More... | |
Interface for the ROI pooling layer kernel.
Definition at line 33 of file CLROIPoolingLayerKernel.h.
Default constructor.
Definition at line 46 of file CLROIPoolingLayerKernel.cpp.
References arm_compute::ELEMENTWISE.
|
delete |
Prevent instances of this class from being copied (As this class contains pointers)
|
default |
Allow instances of this class to be moved.
|
default |
Default destructor.
void configure | ( | const CLCompileContext & | compile_context, |
const ICLTensor * | input, | ||
const ICLTensor * | rois, | ||
const ICLTensor * | output, | ||
const ROIPoolingLayerInfo & | pool_info | ||
) |
Set the input and output tensors.
[in] | compile_context | The compile context to be used. |
[in] | input | Source tensor. Data types supported: F16/F32/QASYMM8 |
[in] | rois | ROIs tensor, it is a 2D tensor of size [5, N] (where N is the number of ROIs) containing top left and bottom right corner as coordinate of an image and batch_id of ROI [ batch_id, x1, y1, x2, y2 ]. Data types supported: U16 |
[out] | output | Destination tensor. Data types supported: Same as input . |
[in] | pool_info | Contains pooling operation information described in ROIPoolingLayerInfo. |
output
tensor must be the same as pool_info
's pooled width and pooled height. output
tensor and input
tensor must be the same. output
tensor must be the same as the number of elements in rois
array. Definition at line 88 of file CLROIPoolingLayerKernel.cpp.
References CLBuildOptions::add_option(), ARM_COMPUTE_ERROR_ON, ARM_COMPUTE_ERROR_THROW_ON, arm_compute::auto_init_if_empty(), arm_compute::calculate_max_window(), arm_compute::compute_requantization_scale_offset(), arm_compute::create_kernel(), arm_compute::test::validation::data_type, ITensorInfo::dimension(), Window::DimX, Window::DimY, Window::DimZ, arm_compute::float_to_string_with_full_precision(), arm_compute::get_cl_type_from_data_type(), arm_compute::get_data_size_from_data_type(), arm_compute::get_padding_info(), arm_compute::has_padding_changed(), ITensor::info(), arm_compute::test::validation::input, arm_compute::is_data_type_quantized_asymmetric(), kernel_name, UniformQuantizationInfo::offset, CLBuildOptions::options(), arm_compute::test::validation::output_shape, ROIPoolingLayerInfo::pooled_height(), ROIPoolingLayerInfo::pooled_width(), ITensorInfo::quantization_info(), UniformQuantizationInfo::scale, ROIPoolingLayerInfo::spatial_scale(), arm_compute::support::cpp11::to_string(), QuantizationInfo::uniform(), and CLROIPoolingLayerKernel::validate().
void configure | ( | const ICLTensor * | input, |
const ICLTensor * | rois, | ||
ICLTensor * | output, | ||
const ROIPoolingLayerInfo & | pool_info | ||
) |
Set the input and output tensors.
[in] | input | Source tensor. Data types supported: F16/F32. |
[in] | rois | ROIs tensor, it is a 2D tensor of size [5, N] (where N is the number of ROIs) containing top left and bottom right corner as coordinate of an image and batch_id of ROI [ batch_id, x1, y1, x2, y2 ]. Data types supported: U16 |
[out] | output | Destination tensor. Data types supported: Same as input . |
[in] | pool_info | Contains pooling operation information described in ROIPoolingLayerInfo. |
output
tensor must be the same as pool_info
's pooled width and pooled height. output
tensor and input
tensor must be the same. output
tensor must be the same as the number of elements in rois
array. Definition at line 80 of file CLROIPoolingLayerKernel.cpp.
References CLKernelLibrary::get(), and arm_compute::test::validation::input.
|
default |
Allow instances of this class to be moved.
|
delete |
Prevent instances of this class from being copied (As this class contains pointers)
|
overridevirtual |
Enqueue the OpenCL kernel to process the given window on the passed OpenCL command queue.
[in] | window | Region on which to execute the kernel. (Must be a valid region of the window returned by window()). |
[in,out] | queue | Command queue on which to enqueue the kernel. |
Reimplemented from ICLKernel.
Definition at line 153 of file CLROIPoolingLayerKernel.cpp.
References ICLKernel::add_2D_tensor_argument(), ICLKernel::add_3D_tensor_argument(), ARM_COMPUTE_ERROR_ON_INVALID_SUBWINDOW, ARM_COMPUTE_ERROR_ON_UNCONFIGURED_KERNEL, ITensorInfo::dimension(), Window::DimX, Window::DimZ, arm_compute::enqueue(), Window::first_slice_window_3D(), ITensor::info(), ICLKernel::lws_hint(), Window::set_dimension_step(), arm_compute::test::validation::reference::slice(), ITensorInfo::strides_in_bytes(), and IKernel::window().
|
static |
Static Validate function to check inputs will lead to valid configuration of CLROIPoolingLayer.
[in] | input | Source tensor. Data types supported: F16/F32/QASYMM8 |
[in] | rois | ROIs tensor, it is a 2D tensor of size [5, N] (where N is the number of ROIs) containing top left and bottom right corner as coordinate of an image and batch_id of ROI [ batch_id, x1, y1, x2, y2 ]. Data types supported: U16 |
[out] | output | Destination tensor. Data types supported: Same as input . |
[in] | pool_info | Contains pooling operation information described in ROIPoolingLayerInfo. |
output
tensor must be the same as pool_info
's pooled width and pooled height. output
tensor and input
tensor must be the same. output
tensor must be the same as the number of elements in rois
array. Definition at line 52 of file CLROIPoolingLayerKernel.cpp.
References ARM_COMPUTE_RETURN_ERROR_ON, ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN, ARM_COMPUTE_RETURN_ERROR_ON_F16_UNSUPPORTED, ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_DATA_TYPES, ARM_COMPUTE_RETURN_ERROR_ON_NULLPTR, ITensorInfo::dimension(), arm_compute::F16, arm_compute::F32, arm_compute::test::validation::input, ITensorInfo::num_dimensions(), ROIPoolingLayerInfo::pooled_height(), ROIPoolingLayerInfo::pooled_width(), arm_compute::QASYMM8, ITensorInfo::total_size(), and arm_compute::U16.
Referenced by CLROIPoolingLayerKernel::configure(), and CLROIPoolingLayer::validate().