Skip to content

Commit 2db5cd3

Browse files
authored
ITERATOR free memory when reset axes (#658)
* ITERATOR free memory when reset axes
1 parent e91271b commit 2db5cd3

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed

dpnp/backend/src/dpnp_iterator.hpp

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,10 @@ class DPNPC_id final
287287
{
288288
if (!__axes.empty() && input_shape_size)
289289
{
290+
free_axes_memory();
291+
free_iteration_memory();
292+
free_output_memory();
293+
290294
axes = get_validated_axes(__axes, input_shape_size);
291295
axis_use = true;
292296

@@ -436,15 +440,49 @@ class DPNPC_id final
436440
return iteration_size;
437441
}
438442

439-
void free_memory()
443+
void free_axes_memory()
444+
{
445+
axes.clear();
446+
dpnp_memory_free_c(axes_shape_strides);
447+
axes_shape_strides = nullptr;
448+
}
449+
450+
void free_input_memory()
440451
{
452+
input_size = size_type{};
453+
input_shape_size = size_type{};
441454
dpnp_memory_free_c(input_shape);
442455
dpnp_memory_free_c(input_shape_strides);
456+
input_shape = nullptr;
457+
input_shape_strides = nullptr;
458+
}
459+
460+
void free_iteration_memory()
461+
{
462+
iteration_size = size_type{};
463+
iteration_shape_size = size_type{};
464+
dpnp_memory_free_c(iteration_shape_strides);
465+
iteration_shape_strides = nullptr;
466+
}
467+
468+
void free_output_memory()
469+
{
470+
output_size = size_type{};
471+
output_shape_size = size_type{};
443472
dpnp_memory_free_c(output_shape);
444473
dpnp_memory_free_c(output_shape_strides);
445-
dpnp_memory_free_c(iteration_shape_strides);
446-
dpnp_memory_free_c(axes_shape_strides);
447474
dpnp_memory_free_c(sycl_output_xyz);
475+
output_shape = nullptr;
476+
output_shape_strides = nullptr;
477+
sycl_output_xyz = nullptr;
478+
}
479+
480+
void free_memory()
481+
{
482+
free_axes_memory();
483+
free_input_memory();
484+
free_iteration_memory();
485+
free_output_memory();
448486
}
449487

450488
pointer data = nullptr; /**< input array begin pointer */

0 commit comments

Comments
 (0)