2010-08-16 79 views
1

我们使用MATLAB并行计算工具箱为我们的项目之一,我们间歇性地出现以下错误的Socket操作错误是由于网络问题,或pmode并行作业可能发生错误。这导致:java.io.IOException:由于系统缺少足够的缓冲空间或队列已满而无法执行套接字上的操作与MATLAB和并行计算工具箱

所涉及的所有计算机均运行Windows XP SP3 32位,使用MATLAB 2009a。错误从不同的实验室间歇发生。

任何想法将不胜感激。

这里的代码粗略/通用片断为它做什么:

R = findResource(); 
matlabpool('open', 'local', R.ClusterSize); 
spmd 
... some loadlibrary() calls ... 
end 

parfor i = 1:num 
    ... big calculations ... 
end 
%clear 
matlabpool close 
+0

你试过增加Java内存吗? – Jonas 2010-08-17 00:20:53

+0

您每台机器上运行多少名员工? 你正在向工作人员传送大量数据吗? 任何机会,你可以发布一些代码? – Edric 2010-08-17 07:49:30

+0

@Jonas - 不幸的是我不知道该怎么做,因为Java组件似乎是Matlab内部的。 @Edric - 我们正在使用8名工人。我不确定数据的确切数量,但是我们会间歇性地遇到这个问题,而不管数据集(我们的一些大数据集是如何实现的,就像我们的一些相对较小的数据集一样)。不幸的是它是专有代码,但我会在我的问题中提供一些更通用的代码片段。 谢谢! – russcollier 2010-08-17 14:13:06

回答

0

原来,这个问题有什么做用Matlab的。

我们使用/加载的基础外部消息库(通过这些loadlibrary()调用),然后使用“大计算”部分耗尽了32位版本的Windows XP和Windows Server 2003上的非分页池内存大小通过在消息传递库的内部创建/使用大量的套接字缓冲区。问题基本上通过切换到64位操作系统(Windows Server 2008 R2)而消失。

http://blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspx

相关问题