当 parfor 中的 MATLAB 函数产生警告时,如何避免内存泄漏?
How to avoid memory leaks when MATLAB function inside parfor generates warning?
我将 matlab R2015b 用于带有本地 parpool 的 Win Server 2012 OS。当 parfor-loop 中的函数生成警告时,我在本地工作人员上有内存泄漏。 parfor 循环结束后也不会释放内存。示例:
x = rand(78, 1);
for j = 1:100
parfor i = 1:1000
[~, z] = kpsstest(x);
end
end
函数 kpsstest 生成警告:
警告:下面列出的临界值测试统计#1:
报告的最大 p 值 = 0.100。
在 kpsstest>getStat(第 632 行)
在 kpsstest 中(第 291 行)
即使我使用构造函数,worker 也会发生内存泄漏:
warning('off', 'econ:kpsstest:StatTooSmall');
pctRunOnAll warning('off', 'econ:kpsstest:StatTooSmall')
启动工人的内存:
执行代码后内存:
parfor内部函数报错时如何避免内存泄漏?
谢谢。
好吧,这可能不是最干净的方法,但您可以关闭并行池,请参阅 here
这个问题是这个 bug report 的主题。如果您能够升级到 R2017a,那是最简单的解决方法。
我将 matlab R2015b 用于带有本地 parpool 的 Win Server 2012 OS。当 parfor-loop 中的函数生成警告时,我在本地工作人员上有内存泄漏。 parfor 循环结束后也不会释放内存。示例:
x = rand(78, 1);
for j = 1:100
parfor i = 1:1000
[~, z] = kpsstest(x);
end
end
函数 kpsstest 生成警告:
警告:下面列出的临界值测试统计#1: 报告的最大 p 值 = 0.100。 在 kpsstest>getStat(第 632 行) 在 kpsstest 中(第 291 行)
即使我使用构造函数,worker 也会发生内存泄漏:
warning('off', 'econ:kpsstest:StatTooSmall');
pctRunOnAll warning('off', 'econ:kpsstest:StatTooSmall')
启动工人的内存:
执行代码后内存:
parfor内部函数报错时如何避免内存泄漏?
谢谢。
好吧,这可能不是最干净的方法,但您可以关闭并行池,请参阅 here
这个问题是这个 bug report 的主题。如果您能够升级到 R2017a,那是最简单的解决方法。