2010-08-16 2 views
1

Nous utilisons la Parallel Computing Toolbox Matlab pour un de nos projets et nous obtenons par intermittence l'erreur suivante:erreurs de fonctionnement Socket avec Matlab et la Parallel Computing Toolbox

Le client perdu la connexion au laboratoire 2. Cela pourrait Cela peut être dû à des problèmes de réseau, ou le travail parallèle pmode peut avoir été erroné. Cela provoque: java.io.IOException: une opération sur un socket n'a pas pu être effectuée car le système manquait d'espace tampon suffisant ou parce qu'une file d'attente était pleine

Toutes les machines impliquées exécutent Windows XP SP3 32 bits, en utilisant MATLAB 2009a. L'erreur se produit par intermittence à partir de différents laboratoires.

Toutes les idées seraient grandement appréciées.

Voici un extrait rugueux/générique code à ce qu'il fait:

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

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

Avez-vous essayé d'augmenter la mémoire Java? – Jonas

+0

Combien de travailleurs exécutez-vous par machine? Transférez-vous beaucoup de données vers/depuis les travailleurs? Une chance que vous pourriez écrire du code? – Edric

+0

@Jonas - malheureusement, je ne suis pas sûr de savoir comment faire cela puisque les composants Java semblent être internes à Matlab. @Edric - nous utilisons 8 travailleurs. Je ne suis pas sûr du volume exact des données, mais nous rencontrons ce problème par intermittence, quel que soit l'ensemble de données (certains de nos grands ensembles de données l'ont atteint, tout comme certains de nos ensembles de données relativement plus petits). Malheureusement, c'est un code propriétaire, mais je vais mettre quelques-uns des extraits les plus génériques dans ma question. Merci! – russcollier

Répondre

0

Le problème est avéré avoir rien à voir avec Matlab du tout. Une bibliothèque de messagerie externe sous-jacente que nous utilisions/chargions (via ces appels loadlibrary()) et qui utilisait ensuite la section "big calculations" épuisait la taille de la mémoire de pool non paginée sur les versions 32 bits de Windows XP et Windows Server 2003 en créant/en utilisant un grand nombre de tampons socket dans les entrailles de la bibliothèque de messagerie. Le problème est parti en passant à un système d'exploitation 64 bits (Windows Server 2008 R2).

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

Questions connexes