【问题标题】:Socket operation errors with MATLAB and the Parallel Computing ToolboxMATLAB 和 Parallel Computing Toolbox 的套接字操作错误
【发布时间】: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


【解决方案1】:

结果证明这个问题与 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多