繁体   English   中英

Matlab中的并行池由于错误而关闭?

[英]Parallel pool in Matlab shut down due to error?

我正在尝试在Matlab-r2014b中使用带有parfor的12个并行工作程序执行代码。 因为我使用的机器有12个核心,所以我可以这样做。

但是,当我开始运行代码时,在10到15分钟后,Matlab屏幕左下角的符号[在单词“ Busy”旁边(当parfor正常工作时通常为蓝色或绿色矩形))变为灰色与一个黄色的三角形。 如果将鼠标移到它上面,我会收到一条消息,指出“由于错误,并行池已关闭”。 Matlab命令窗口不报告任何错误,我猜代码仅使用一个工作程序就可以正常工作。

是否知道该消息的可能原因?

在Matlab中使用并行工具箱时,可能有多个错误原因。

我会一一尝试查找错误:

  1. 此问题可能是由内存限制引起的。 由于您有12个核心,因此Matlab将尝试分配12个工作线程,并且需要将某些变量复制到内存中12次。 尝试从2个或3个工作人员开始,看问题是否消失。 PARFOR之前调用此代码分配poolsize工人:

     parpool('local', poolsize); 

    有关更多详细信息,您可以从mathWorks中看到此链接。

  2. 尝试用定期运行你的代码 ,看看它仍然给你一个错误或没有。 以我的经验,该错误通常出现在最后一个循环变量中。 使用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。

  3. 确保预定义parfor中使用的所有变量。 它减少了内存开销。

  4. 避免在parfor中使用任何显式全局定义的变量 parfor中以及运行parfor时调用的任何函数内部均不允许使用全局变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM