38 : _memory_group(
std::move(memory_manager)),
58 const bool run_sobel_x = output_x !=
nullptr;
59 const bool run_sobel_y = output_y !=
nullptr;
63 if(run_sobel_x && run_sobel_y)
67 _memory_group.
manage(&_tmp_x);
68 _memory_group.
manage(&_tmp_y);
69 _sobel_hor->configure(compile_context, input, &_tmp_x, &_tmp_y, border_mode ==
BorderMode::UNDEFINED);
70 _sobel_vert->configure(compile_context, &_tmp_x, &_tmp_y, output_x, output_y, border_mode ==
BorderMode::UNDEFINED);
77 _memory_group.
manage(&_tmp_x);
78 _sobel_hor->configure(compile_context, input, &_tmp_x,
nullptr, border_mode ==
BorderMode::UNDEFINED);
79 _sobel_vert->configure(compile_context, &_tmp_x,
nullptr, output_x,
nullptr, border_mode ==
BorderMode::UNDEFINED);
85 _memory_group.
manage(&_tmp_y);
86 _sobel_hor->configure(compile_context, input,
nullptr, &_tmp_y, border_mode ==
BorderMode::UNDEFINED);
87 _sobel_vert->configure(compile_context,
nullptr, &_tmp_y,
nullptr, output_y, border_mode ==
BorderMode::UNDEFINED);
90 _border_handler->configure(compile_context, input, _sobel_hor->border_size(), border_mode,
PixelValue(constant_border_value));
BorderMode
Methods available to handle borders.
Class describing the value of a pixel for any image format.
Interface for the kernel to run the horizontal pass of 5x5 Sobel filter on a tensor.
static CLScheduler & get()
Access the scheduler singleton.
~CLSobel5x5()
Default destructor.
1 channel, 1 U8 per channel
static CLKernelLibrary & get()
Access the KernelLibrary singleton.
CLTensorAllocator * allocator()
Return a pointer to the tensor's allocator.
void init(const TensorInfo &input, size_t alignment=0)
Initialize a tensor based on the passed TensorInfo.
Copyright (c) 2017-2021 Arm Limited.
void manage(IMemoryManageable *obj) override
Sets a object to be managed by the given memory group.
Interface to enqueue OpenCL kernels and get/set the OpenCL CommandQueue and ICLTuner.
virtual const TensorShape & tensor_shape() const =0
Size for each dimension of the tensor.
virtual ITensorInfo * info() const =0
Interface to be implemented by the child class to return the tensor's metadata.
void configure(ICLTensor *input, ICLTensor *output_x, ICLTensor *output_y, BorderMode border_mode, uint8_t constant_border_value=0)
Initialise the function's source, destinations and border mode.
void run() override
Run the kernels contained in the function.
1 channel, 1 S16 per channel
Interface for the kernel to run the vertical pass of 5x5 Sobel filter on a tensor.
void enqueue(ICLKernel &kernel, bool flush=true)
Schedule the execution of the passed kernel if possible.
#define ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(t, c,...)
void allocate() override
Allocate size specified by TensorInfo of OpenCL memory.
CLSobel5x5(std::shared_ptr< IMemoryManager > memory_manager=nullptr)
Default Constructor.
Interface for filling the border of a kernel.
Memory group resources scope handling class.
Interface for OpenCL tensor.
Borders are left undefined.
Store the tensor's metadata.