我正在尝试使用Matlab-r2014b中的12个具有parfor的并行工作程序来执行代码。我被允许这样做,因为我使用的机器有12个核心。
然而,当我开始运行代码时,10-15分钟后,Matlab屏幕左下角的符号[单词“Busy”旁边](当parfor正常工作时,通常是蓝色或绿色矩形)变成灰色,带有黄色三角形。如果我将鼠标移到它上面,我会收到一条消息“并行池由于错误而关闭”。 Matlab命令窗口不报告任何错误,代码继续工作我想只使用一个工作程序。
有关消息可能原因的任何想法吗?
答案 0 :(得分:0)
在Matlab中使用并行工具箱时,可能有多种原因导致错误。
我会逐个尝试找到错误:
此问题可能是由内存限制引起的。由于你有12个核心,Matlab会尝试分配12个工作者,它需要在内存中复制一些变量12次。尝试从2或3名工人开始,看看问题是否消失。在 parfor 之前调用此代码以分配 poolsize 工作人员:
parpool('local', poolsize);
有关详细信息,您可以在mathWorks。
尝试使用常规 for 运行代码,看看它是否仍然给您一个错误。根据我的经验,错误通常出现在最后的循环变量中。使用 fliplr 尝试循环。
% Replace:
parfor iLoop = 1 : 100
% "What you do in the loop"
end
% With:
for iLoop = fliplr(1 : 100)
% "What you do in the loop"
end
请注意,此更换仅用于调试目的,您可以在发现问题中可能出现的问题后使用parfor。
确保预先定义 parfor 中使用的所有变量。它减少了内存开销。
避免在 parfor 中使用任何明确的global defined variables。 parfor 中以及运行 parfor 时调用的任何函数内不允许使用全局变量。