2015-03-13 18 views

Antwort

10

Labors und Arbeiter sind MathWorks Terminologien, nützlich sein und sie bedeuten ungefähr dasselbe.

A lab oder ein Arbeiter ist im Wesentlichen eine Instanz von MATLAB (ohne Front-End). Sie können mehrere davon ausführen, und Sie können sie entweder auf Ihrem eigenen Computer (erfordert nur Parallel Computing Toolbox) oder remote auf einem Cluster ausführen (erfordert Distributed Computing Server). Wenn Sie parallelen Code ausführen (z. B. eine parfor-Schleife, einen spmd-Block oder einen parfeval-Befehl), wird der Code parallel von den Workern und nicht von Ihrem Haupt-MATLAB ausgeführt.

Die Parallel Computing Toolbox hat ihre Funktionalität in den letzten Releases ziemlich verändert und weiterentwickelt und auch die Terminologien geändert und entwickelt, um die Funktionsweise zu beschreiben. An einem gewissen Punkt war es bequem, sie als Labs zu bezeichnen, wenn sie einen spmd Block ausführen, aber Arbeiter, wenn sie eine parfor Schleife ausführen oder an Jobs und Aufgaben arbeiten. Ich glaube, dass sie sich jetzt bewegen, sie immer workers zu nennen (obwohl es ein Vermächtnis in den Befehlen labSend, labReceive, labBroadcast, labindex und numlabs gibt).

Kerne und Prozesse unterschiedlich sind, und sind nicht selbst etwas mit MATLAB zu tun.

Ein Kern ist ein physikalischer Teil Ihres Prozessors - Sie könnten einen Dual-Core- oder Quad-Core-Prozessor in Ihrem Desktop-Computer haben, oder Sie haben Zugang zu einem wirklich großen Computer mit viel mehr als das. Mit mehreren Kernen kann Ihr Prozessor mehrere Dinge gleichzeitig erledigen.

Ein Prozess ist (ungefähr) ein Programm, das Ihr Betriebssystem ausgeführt wird. Obwohl das Betriebssystem mehrere Programme gleichzeitig ausführt, geschieht dies normalerweise durch Verschachteln von Operationen von jedem Prozess. Wenn Sie jedoch Zugriff auf eine Maschine mit mehreren Kernen haben, können diese Operationen parallel ausgeführt werden.

Sie möchten also normalerweise MATLAB sagen, dass es einen Arbeiter für jeden der Kerne auf Ihrem Rechner starten soll. Jeder dieser Worker wird vom Betriebssystem als Prozess ausgeführt, und am Ende wird ein Worker pro Core parallel ausgeführt.

Das obige ist ziemlich vereinfacht, aber ich hoffe, gibt ein ungefähr genaues Bild.


bearbeiten: bewegte Beschreibung von Fäden aus einem Kommentar auf die Antwort.

Threads sind wieder etwas anders. Threads haben auch nichts mit MATLAB zu tun.

Lassen Sie uns für einen Moment zurück zu den Prozessen gehen. Eine Sache, die ich oben nicht erwähnte, ist, dass das Betriebssystem jedem Prozess einen bestimmten Speicherblock zuweist, den andere Prozesse nicht berühren können, so dass es für sie schwierig ist, miteinander zu interagieren und Dinge durcheinander zu bringen.

Ein Thread ist wie ein Prozess innerhalb eines Prozesses - es ist ein Strom von Operationen, die der Prozess abläuft. In der Regel werden Vorgänge von jedem Thread verschachtelt, aber wenn Sie mehrere Kerne haben, können sie auch über die Kerne parallelisiert werden.

Im Gegensatz zu Prozessen teilen sie jedoch alle einen Speicherblock, was in Ordnung ist, da sie alle vom selben Programm verwaltet werden, so dass es weniger wichtig ist, ob sie interagieren dürfen.

Regular MATLAB verwendet automatisch mehrere Threads viele eingebaute Operationen (wie Matrixmultiplikation, svd, eig, Lineare Algebra usw.) parallelisieren - das ist, ohne dass Sie etwas zu tun, und ob Sie Parallel Computing Toolbox haben.

MATLAB-Worker werden jedoch jeweils als einzelner Prozess mit einem einzigen Thread ausgeführt, sodass Sie die vollständige Kontrolle über die Parallelisierung haben.

+0

Ich vermute, Sie haben gerade diese Stelle auf - ich bezeichne Arbeiter als "Labs" nur im Zusammenhang mit einem 'spmd'-Block. Obwohl natürlich die Terminologie in R2006a für sogenannte "Parallel-Jobs" eingeführt wurde, und wenn es noch keinen "spmd" -Block gab, kam das nicht vor R2008b. – Edric

+0

Sind auch Labs und Threads? – user2574723

+0

Eine Beschreibung der Threads finden Sie unter Bearbeiten meiner Antwort. –

1

Ich denke, Arbeiter sind Synonyme für Prozesse. Der Begriff "Kerne" bezieht sich auf die Hardware. Labs ist ein Mechanismus, der es Mitarbeitern ermöglicht, miteinander zu kommunizieren. Jeder Arbeiter hat mindestens ein Labor, kann aber mehr besitzen.

Dieses Stück einer Diskussion kann

http://www.mathworks.com/matlabcentral/answers/5529-mysterious-behavior-in-parfor-i-know-sounds-basic-but

Ich hoffe, jemand hier liefern weitere Informationen in einer strengeren Weise