Skip to content

Commit 676075a

Browse files
committed
Fix memory leaks in synchronizing kernel calls
In synchronizing calls, smart pointers were being released (rather than reset) with no call to free underlying memory, causing USM to leak
1 parent 75c21ef commit 676075a

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

dpctl/tensor/libtensor/source/accumulators.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ std::size_t py_mask_positions(const dpctl::tensor::usm_ndarray &mask,
210210
sycl::event::wait(host_task_events);
211211

212212
// ensure deleter of smart pointer is invoked with GIL released
213-
shape_strides_owner.release();
213+
shape_strides_owner.reset(nullptr);
214214
}
215215
throw std::runtime_error("Unexpected error");
216216
}
@@ -231,7 +231,7 @@ std::size_t py_mask_positions(const dpctl::tensor::usm_ndarray &mask,
231231

232232
sycl::event::wait(host_task_events);
233233
// ensure deleter of smart pointer is invoked with GIL released
234-
shape_strides_owner.release();
234+
shape_strides_owner.reset(nullptr);
235235
}
236236

237237
return total_set;
@@ -367,7 +367,7 @@ std::size_t py_cumsum_1d(const dpctl::tensor::usm_ndarray &src,
367367
sycl::event::wait(host_task_events);
368368

369369
// ensure USM deleter is called with GIL released
370-
shape_strides_owner.release();
370+
shape_strides_owner.reset(nullptr);
371371
}
372372
throw std::runtime_error("Unexpected error");
373373
}
@@ -387,7 +387,7 @@ std::size_t py_cumsum_1d(const dpctl::tensor::usm_ndarray &src,
387387
sycl::event::wait(host_task_events);
388388

389389
// ensure USM deleter is called with GIL released
390-
shape_strides_owner.release();
390+
shape_strides_owner.reset(nullptr);
391391
}
392392

393393
return total;

dpctl/tensor/libtensor/source/copy_numpy_ndarray_into_usm_ndarray.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ void copy_numpy_ndarray_into_usm_ndarray(
325325
dst_offset, depends, {copy_shape_ev});
326326

327327
// invoke USM deleter in smart pointer while GIL is held
328-
shape_strides_owner.release();
328+
shape_strides_owner.reset(nullptr);
329329
}
330330

331331
return;

0 commit comments

Comments
 (0)