@@ -287,6 +287,10 @@ class DPNPC_id final
287
287
{
288
288
if (!__axes.empty () && input_shape_size)
289
289
{
290
+ free_axes_memory ();
291
+ free_iteration_memory ();
292
+ free_output_memory ();
293
+
290
294
axes = get_validated_axes (__axes, input_shape_size);
291
295
axis_use = true ;
292
296
@@ -436,15 +440,49 @@ class DPNPC_id final
436
440
return iteration_size;
437
441
}
438
442
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 ()
440
451
{
452
+ input_size = size_type{};
453
+ input_shape_size = size_type{};
441
454
dpnp_memory_free_c (input_shape);
442
455
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{};
443
472
dpnp_memory_free_c (output_shape);
444
473
dpnp_memory_free_c (output_shape_strides);
445
- dpnp_memory_free_c (iteration_shape_strides);
446
- dpnp_memory_free_c (axes_shape_strides);
447
474
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 ();
448
486
}
449
487
450
488
pointer data = nullptr ; /* *< input array begin pointer */
0 commit comments