Matlab verwendet den statischen Codeanalysator, um zu verstehen, wie der Körper des Parfor-Loops mit dem Hauptarbeitsbereich interagiert, d. H. Welche Variablen an die Arbeiter und zurück übertragen werden müssen. Eine Anzahl von Funktionen, wie eval
, evalc
, evalin
, assignin
(mit dem Arbeitsbereich Argumente als 'caller'
angegeben), load
(es sei denn, der Ausgang eine Variablen zugewiesen wird), save
und clear
können Arbeitsbereich in einer Weise ändern, die durch die nicht vorhergesagt werden, statischer Analysator. Es gibt keine Möglichkeit, die Integrität des Arbeitsbereichs zu gewährleisten, wenn mehrere Worker auf ihm arbeiten und solche Funktionen verwendet werden.
Wichtig ist zu wissen, dass wenn Sie eine Befehlssyntax eine Funktion, wie clear v
, the argument is passed as a string literal, was bedeutet, es gibt keine Möglichkeit für die statische Analysator zu verstehen, welche Variable Sie versuchen, zu löschen, damit keine Möglichkeit berufen Finde heraus, welchen Effekt der Befehl auf den Arbeitsbereich haben wird.
Als in documentation vorgeschlagen, die Abhilfe der größte Teil des Speichers durch eine Variable in parfor verwendet oben freizugeben ist: v = [];