Ich mache parallele Berechnungen mit MATALB parfor
. Die Code-Struktur sieht fast wie
Ich habe den folgenden seltsamen Fehler festgestellt.
%Vor%Wie soll ich es beheben? Eine schnelle Google-Suche gibt keine Lösung zurück.
Das Seltsame ist, dass das folgende Snippet unter genau den gleichen Einstellungen und dem gleichen HPC perfekt funktioniert. Ich denke, es könnte einige feine Unterschiede zwischen den beiden geben, die dazu führen, dass einer arbeitet und der andere versagt. Das Arbeits-Snippet:
%Vor% Verdächtige [mid_dsp, right_dsp] = compute_displacement(bitmap, ['1/' num2str(PIX_NO_PER_SIDE)]);
verursachen mir Probleme, ich ersetze sie durch
Dann funktioniert es! Dies beweist, dass dies tatsächlich durch diese spezielle Linie verursacht wird. Allerdings habe ich die Funktion getestet, und es gibt zwei Zahlen korrekt zurück! Da die Funktion einen Wert wie rand()
liefert, kann ich keinen Unterschied sehen. Das verwirrt mich mehr.
Ich hatte das gleiche Problem und es stellte sich heraus, dass Matlab 2015 alle notwendigen Speicherressourcen für jede der Schleifen im Parfor reserviert, was zu einem Speichermangel führt. Die Fehlermeldung ist knifflig. Nach der Feinabstimmung des Codes in der Schleife und der Bereitstellung von 120 GB RAM von der SSD über die Systemeinstellung in Pagefile in Windows 10 wurde das Parfor wunderbar ausgeführt.
Nachdem ich eine Weile an meinem eigenen ähnlichen Codeblock gearbeitet habe, habe ich entschieden, dass dies tatsächlich ein Speicherproblem ist.
Ich verwende eine 6-Core-4GHz-CPU und 8 Gigabyte RAM und habe dieses Problem (auf MATLAB 2014b) gesehen, als ich die Worker-Anzahl hoch gesetzt habe und keine Probleme mit niedrigen Worker-Counts hatte.
Wenn ich 6 oder mehr Arbeiter verwende (was nicht ideal ist, weiß ich), ist der Speicherverbrauch hoch und diese Fehlermeldung erscheint sporadisch. Außerdem habe ich in meinen Tests verschiedene Speicherfehler festgestellt.
Ich habe den Fehler nicht gesehen, wenn ich bisher 5 oder weniger Arbeiter verwende, und ich bin mir ziemlich sicher, dass ein Speicherlimit (möglicherweise in einem Java-Code-Block) dieses Problem verursacht, indem einige der Integrität der Ergebnisse verhindert werden )
Ich hoffe, Sie können dieses Problem beheben, indem Sie die Anzahl der Worker reduzieren.
Tags und Links distributed-computing matlab parallel-processing parfor