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.
static CLScheduler & get()
Access the scheduler singleton.
1 channel, 1 U8 per channel
CLSobel7x7(std::shared_ptr< IMemoryManager > memory_manager=nullptr)
Default Constructor.
static CLKernelLibrary & get()
Access the KernelLibrary singleton.
CLTensorAllocator * allocator()
Return a pointer to the tensor's allocator.
~CLSobel7x7()
Default destructor.
Interface for the kernel to run the vertical pass of 7x7 Sobel filter on a tensor.
void init(const TensorInfo &input, size_t alignment=0)
Initialize a tensor based on the passed TensorInfo.
Copyright (c) 2017-2021 Arm Limited.
1 channel, 1 S32 per channel
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 run() override
Run the kernels contained in the function.
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.
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.
Interface for the kernel to run the horizontal pass of 7x7 Sobel filter on a tensor.
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.