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

Method calculate_padding_requirements

src/core/TensorInfo.cpp:247–290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

245}
246
247std::tuple<Strides, size_t, size_t> TensorInfo::calculate_padding_requirements(const PaddingSize &padding)
248{
249 // Calculate resulting stride for the X, Y and Z dimension
250 const size_t stride_x = element_size();
251 const size_t stride_y = (padding.left + _tensor_shape[0] + padding.right) * stride_x;
252 const size_t stride_z = (padding.top + _tensor_shape[1] + padding.bottom) * stride_y;
253
254 Strides required_strides;
255 size_t required_total_size = 0;
256 const size_t required_offset_first_element = padding.left * stride_x + padding.top * stride_y;
257
258 switch (_tensor_shape.num_dimensions())
259 {
260 case 0:
261 {
262 if (_tensor_shape.total_size() > 0)
263 {
264 required_strides = Strides(stride_x, stride_x);
265 required_total_size = stride_z;
266 }
267 break;
268 }
269 case 1:
270 required_strides = compute_strides(*this, stride_x, stride_y);
271 required_total_size = stride_z;
272 break;
273 case 2:
274 required_strides = compute_strides(*this, stride_x, stride_y);
275 required_total_size = stride_z;
276 break;
277 default:
278 {
279 required_strides = compute_strides(*this, stride_x, stride_y, stride_z);
280
281 const unsigned int idx_last_dimension = _tensor_shape.num_dimensions() - 1;
282
283 required_total_size =
284 static_cast<size_t>(_tensor_shape[idx_last_dimension]) * required_strides[idx_last_dimension];
285 break;
286 }
287 }
288
289 return std::make_tuple(required_strides, required_offset_first_element, required_total_size);
290}
291
292ITensorInfo &TensorInfo::set_lock_paddings(bool flag)
293{

Callers

nothing calls this directly

Calls 4

StridesClass · 0.85
compute_stridesFunction · 0.85
num_dimensionsMethod · 0.45
total_sizeMethod · 0.45

Tested by

no test coverage detected