2010-08-16 114 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