diff --git a/src/calng/base_correction.py b/src/calng/base_correction.py index a631076b3f680cfd0d60782ba31e188ab4004a3f..1bfa18953f6e4987247d749635d09ff74aee3a48 100644 --- a/src/calng/base_correction.py +++ b/src/calng/base_correction.py @@ -1,5 +1,6 @@ import collections import enum +import gc import pathlib import threading from timeit import default_timer @@ -880,6 +881,12 @@ class BaseCorrection(PythonDevice): else: self._shmem_buffer.change_shape(self.output_data_shape) + # give CuPy a chance to at least start memory cleanup before this + if self.kernel_runner is not None: + del self.kernel_runner + self.kernel_runner = None + gc.collect() + self.kernel_runner = self._kernel_runner_class( self.get("dataFormat.pixelsX"), self.get("dataFormat.pixelsY"),