Skip to main content
Added fixed heading in the question
Source Link
ilian
  • 25.6k
  • 4
  • 118
  • 187

Bug fixed in version 10.2.0


I'm running a large computation in parallel and the memory usage of the parallel kernels is increasing with every iteration of the calculation. Neither $HistoryLength=0, ClearSystemCache[], nor CleanSlate[] can solve the issue. I narrowed the problem down to using NIntegrate on the parallel kernel. Here is a simplified version of my code:

$HistoryLength = 0; ClearMemory := Block[{}, Unprotect[In, Out]; Clear[In, Out]; Protect[In, Out]; ClearSystemCache[]; ]; HGt[a_] := NIntegrate[t^a, {t, 0, 1}]; calct[aa_] := Block[{$HistoryLength = 0, res}, res = HGt[aa]; ClearMemory; res ]; CloseKernels[]; LaunchKernels[1]; ParallelEvaluate[$HistoryLength = 0]; DistributeDefinitions[calct]; ClearMemory; jobs = Map[ParallelSubmit[Print[MemoryInUse[]]; calct[#]] &, Range[8]]; WaitAll[jobs] 

As output I get:

(kernel 1) 17279624 (kernel 1) 19220336 (kernel 1) 19239064 (kernel 1) 19240160 (kernel 1) 19240896 (kernel 1) 19241632 (kernel 1) 19242368 (kernel 1) 21322872 {0.5, 0.333333, 0.25, 0.2, 0.166667, 0.142857, 0.125, 0.111111} 

If I use the same code with NIntegrate replaced by NSum the kernel doesn't leak memory:

(kernel 1) 17279624 (kernel 1) 17277056 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 

Why is the parallel kernel leaking memory and how can I fix it?

Just closing and relaunching the kernels from time to time seems to be no solution, because I'm also experiencing this problem.

I'm using Mathematica Version 10.0 for Linux x86 (64-bit) (September 9, 2014).

Thanks a lot for your help!

I'm running a large computation in parallel and the memory usage of the parallel kernels is increasing with every iteration of the calculation. Neither $HistoryLength=0, ClearSystemCache[], nor CleanSlate[] can solve the issue. I narrowed the problem down to using NIntegrate on the parallel kernel. Here is a simplified version of my code:

$HistoryLength = 0; ClearMemory := Block[{}, Unprotect[In, Out]; Clear[In, Out]; Protect[In, Out]; ClearSystemCache[]; ]; HGt[a_] := NIntegrate[t^a, {t, 0, 1}]; calct[aa_] := Block[{$HistoryLength = 0, res}, res = HGt[aa]; ClearMemory; res ]; CloseKernels[]; LaunchKernels[1]; ParallelEvaluate[$HistoryLength = 0]; DistributeDefinitions[calct]; ClearMemory; jobs = Map[ParallelSubmit[Print[MemoryInUse[]]; calct[#]] &, Range[8]]; WaitAll[jobs] 

As output I get:

(kernel 1) 17279624 (kernel 1) 19220336 (kernel 1) 19239064 (kernel 1) 19240160 (kernel 1) 19240896 (kernel 1) 19241632 (kernel 1) 19242368 (kernel 1) 21322872 {0.5, 0.333333, 0.25, 0.2, 0.166667, 0.142857, 0.125, 0.111111} 

If I use the same code with NIntegrate replaced by NSum the kernel doesn't leak memory:

(kernel 1) 17279624 (kernel 1) 17277056 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 

Why is the parallel kernel leaking memory and how can I fix it?

Just closing and relaunching the kernels from time to time seems to be no solution, because I'm also experiencing this problem.

I'm using Mathematica Version 10.0 for Linux x86 (64-bit) (September 9, 2014).

Thanks a lot for your help!

Bug fixed in version 10.2.0


I'm running a large computation in parallel and the memory usage of the parallel kernels is increasing with every iteration of the calculation. Neither $HistoryLength=0, ClearSystemCache[], nor CleanSlate[] can solve the issue. I narrowed the problem down to using NIntegrate on the parallel kernel. Here is a simplified version of my code:

$HistoryLength = 0; ClearMemory := Block[{}, Unprotect[In, Out]; Clear[In, Out]; Protect[In, Out]; ClearSystemCache[]; ]; HGt[a_] := NIntegrate[t^a, {t, 0, 1}]; calct[aa_] := Block[{$HistoryLength = 0, res}, res = HGt[aa]; ClearMemory; res ]; CloseKernels[]; LaunchKernels[1]; ParallelEvaluate[$HistoryLength = 0]; DistributeDefinitions[calct]; ClearMemory; jobs = Map[ParallelSubmit[Print[MemoryInUse[]]; calct[#]] &, Range[8]]; WaitAll[jobs] 

As output I get:

(kernel 1) 17279624 (kernel 1) 19220336 (kernel 1) 19239064 (kernel 1) 19240160 (kernel 1) 19240896 (kernel 1) 19241632 (kernel 1) 19242368 (kernel 1) 21322872 {0.5, 0.333333, 0.25, 0.2, 0.166667, 0.142857, 0.125, 0.111111} 

If I use the same code with NIntegrate replaced by NSum the kernel doesn't leak memory:

(kernel 1) 17279624 (kernel 1) 17277056 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 

Why is the parallel kernel leaking memory and how can I fix it?

Just closing and relaunching the kernels from time to time seems to be no solution, because I'm also experiencing this problem.

I'm using Mathematica Version 10.0 for Linux x86 (64-bit) (September 9, 2014).

Thanks a lot for your help!

edited tags
Link
Oleksandr R.
  • 23.2k
  • 4
  • 88
  • 129
Source Link

memory leaks using NIntegrate on parallel kernel

I'm running a large computation in parallel and the memory usage of the parallel kernels is increasing with every iteration of the calculation. Neither $HistoryLength=0, ClearSystemCache[], nor CleanSlate[] can solve the issue. I narrowed the problem down to using NIntegrate on the parallel kernel. Here is a simplified version of my code:

$HistoryLength = 0; ClearMemory := Block[{}, Unprotect[In, Out]; Clear[In, Out]; Protect[In, Out]; ClearSystemCache[]; ]; HGt[a_] := NIntegrate[t^a, {t, 0, 1}]; calct[aa_] := Block[{$HistoryLength = 0, res}, res = HGt[aa]; ClearMemory; res ]; CloseKernels[]; LaunchKernels[1]; ParallelEvaluate[$HistoryLength = 0]; DistributeDefinitions[calct]; ClearMemory; jobs = Map[ParallelSubmit[Print[MemoryInUse[]]; calct[#]] &, Range[8]]; WaitAll[jobs] 

As output I get:

(kernel 1) 17279624 (kernel 1) 19220336 (kernel 1) 19239064 (kernel 1) 19240160 (kernel 1) 19240896 (kernel 1) 19241632 (kernel 1) 19242368 (kernel 1) 21322872 {0.5, 0.333333, 0.25, 0.2, 0.166667, 0.142857, 0.125, 0.111111} 

If I use the same code with NIntegrate replaced by NSum the kernel doesn't leak memory:

(kernel 1) 17279624 (kernel 1) 17277056 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 (kernel 1) 17277392 

Why is the parallel kernel leaking memory and how can I fix it?

Just closing and relaunching the kernels from time to time seems to be no solution, because I'm also experiencing this problem.

I'm using Mathematica Version 10.0 for Linux x86 (64-bit) (September 9, 2014).

Thanks a lot for your help!