MCPcopy Create free account
hub / github.com/ARM-software/ComputeLibrary / configure

Method configure

src/core/NEON/kernels/NEPadLayerKernel.cpp:206–266  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

204}
205
206void NEPadLayerKernel::configure(ITensor *input,
207 ITensor *output,
208 const PaddingList &padding,
209 const PixelValue constant_value,
210 const PaddingMode mode)
211{
212 ARM_COMPUTE_ERROR_ON_NULLPTR(input, output);
213 // Auto-init
214 const TensorShape expected_output_shape =
215 arm_compute::misc::shape_calculator::compute_padded_shape(input->info()->tensor_shape(), padding);
216 const TensorInfo expected_output_info = input->info()->clone()->set_tensor_shape(expected_output_shape);
217 auto_init_if_empty(*output->info(), expected_output_info);
218
219 // Perform validation step
220 ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input->info(), output->info(), padding, mode));
221
222 _input = input;
223 _output = output;
224 _padding = padding;
225 _constant_value = constant_value;
226 _mode = mode;
227
228 if (_mode == PaddingMode::CONSTANT)
229 {
230 switch (_input->info()->element_size())
231 {
232 case 1:
233 if (_input->info()->num_dimensions() == 3 && // Is 3D
234 padding.size() <= 3 && // Has 3D padding
235 !_input->info()->has_padding() && !_output->info()->has_padding()) // Input & Output have no padding
236 {
237 _func = &NEPadLayerKernel::run_pad_constant_uint8_3Dinput_3Dpad;
238 }
239 else
240 {
241 _func = &NEPadLayerKernel::run_pad_constant<uint8_t>;
242 }
243 break;
244 case 2:
245 _func = &NEPadLayerKernel::run_pad_constant<uint16_t>;
246 break;
247 case 4:
248 _func = &NEPadLayerKernel::run_pad_constant<uint32_t>;
249 break;
250 default:
251 ARM_COMPUTE_ERROR("Element size not supported");
252 break;
253 }
254 }
255 else
256 {
257 ARM_COMPUTE_ERROR("Padding mode not supported");
258 }
259
260 // Configure kernel window
261 Window win = calculate_max_window(*output->info(), Steps());
262
263 // The NEPad doesn't need padding so update_window_and_padding() can be skipped

Callers

nothing calls this directly

Calls 11

compute_padded_shapeFunction · 0.85
auto_init_if_emptyFunction · 0.85
StepsClass · 0.85
validate_argumentsFunction · 0.70
calculate_max_windowFunction · 0.50
infoMethod · 0.45
cloneMethod · 0.45
element_sizeMethod · 0.45
num_dimensionsMethod · 0.45
sizeMethod · 0.45
has_paddingMethod · 0.45

Tested by

no test coverage detected