【发布时间】:2010-08-16 22:13:08
【问题描述】:
我们正在为我们的一个项目使用 MATLAB Parallel Computing Toolbox,但我们间歇性地收到以下错误:
客户端失去了与实验室 2 的连接。 这可能是由于网络问题,或者 pmode 并行作业可能出错。这导致:java.io.IOException:无法对套接字执行操作,因为系统缺少足够的缓冲区空间或队列已满
所有涉及的机器都使用 MATLAB 2009a 运行 Windows XP SP3 32 位。该错误在不同的实验室间歇性发生。
任何想法都将不胜感激。
这是关于它在做什么的粗略/通用的 sn-p 代码:
R = findResource();
matlabpool('open', 'local', R.ClusterSize);
spmd
... some loadlibrary() calls ...
end
parfor i = 1:num
... big calculations ...
end
%clear
matlabpool close
【问题讨论】:
-
你试过增加Java内存吗?
-
每台机器运行多少个工人?您是否正在向/从工人传输大量数据?你有机会发布一些代码吗?
-
@Jonas - 不幸的是,我不知道该怎么做,因为 Java 组件似乎是 Matlab 的内部组件。 @Edric - 我们正在使用 8 名工人。我不确定数据的确切数量,但是无论数据集如何,我们都会间歇性地遇到这个问题(我们的一些大型数据集遇到了这个问题,我们的一些相对较小的数据集也是如此)。不幸的是,它是专有代码,但我会在我的问题中提出一些更通用的 sn-ps。谢谢!
-
在最近的Matlab版本中,
preferences/general/java heap memory中有一个滑块可以调整。否则,或者如果您想分配更多内存,请看这里:mathworks.com/support/solutions/en/data/1-18I2C
标签: sockets windows-xp parallel-processing matlab