Matlabpool Anzahl der threads vs core
Ich habe einen laptop mit Ubuntu
auf Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz
. Nach Intel
website für den oben genannten Prozessor (befindet sich hier), dieser Prozessor hat zwei Kerne und kann 4 threads gleichzeitig parallel (weil, obwohl, es hat 2 physikalische Kerne hat 4 logische Kerne).
Wenn ich starten matlabpool
es beginnt mit local
Konfiguration und sagt, es ist verbunden mit 2 labs. Ich nehme an, dies bedeutet, dass es ausgeführt werden kann 2 threads parallel. Tut Sie es nicht wissen, dass die CPU überhaupt ausführen kann 4 threads parallel?
- Wenn glaube, dass meine Antwort die Frage beantwortet, dann klicken Sie bitte auf das Häkchen neben es. Andernfalls, wenn Sie lassen Sie mich in einem Kommentar wissen, was Sie vermissen, dann kann ich versuchen es zu verbessern. Cheers.
- Fertig! Danke für die Antwort und die Aktualisierung mit dem, was du gelernt aus den Kommentaren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In meiner Erfahrung, die
local
Konfigurationmatlabpool
nutzt standardmäßig die Anzahl der physischen Kerne eine Maschine besitzt, sondern die Anzahl der logischen Kerne. Damit auf Ihrer Maschinematlabpool
nur verbindet zwei labs.Dies ist jedoch nur eine Einstellung und kann überschrieben werden mit dem folgenden Befehl:
wo
n
ist eine Ganzzahl zwischen 1 und 12 für die Anzahl der Labore, die Sie wollen Matlab verwenden.Nun kommen wir auf das interessante bit, die ich bin ein bisschen besser ausgestattet, um Antwort vielen Dank für eine schnelle Lektion von @RodyOldenhuis in die Kommentare.
Hyper-threading impliziert eine bestimmte körperliche Kern können zwei threads ausgeführt werden, durch die es zur gleichen Zeit. Natürlich, Sie können nicht buchstäblich gleichzeitig bearbeitet werden. Die Idee geht eher so: Wenn einer der threads ist ineffizient bei der Zuweisung von Aufgaben auf den Kern, dann der core kann zeigen einige "down-time". Einen zweiten thread nutzen können, dieses "down-Zeit", um arbeiten zu können.
Meiner Erfahrung, Matlab ist Häufig eine möglichst effiziente Zuteilung der threads auf die Kerne, daher mit einem Matlab-Faden (dh ein Labor) durchzieht, ein Kern kann nur sehr wenig "down-Zeit" und daher gibt es sehr wenig Vorteil von hyper-threading. Mein desktop ist ein core-i7 mit 4 physische Kerne aber 8 logische Kerne. Allerdings merke ich kaum einen Unterschied zwischen dem ausführen eines
parfor
Schleife mit 4 labs versus 8 labs. In der Tat, 8-labs ist oft langsamer aufgrund der start-up-Kosten im Zusammenhang mit der Initialisierung der extra-labs.Natürlich, dies ist wahrscheinlich kompliziert durch andere externe Faktoren, wie das, was andere Programme, die Sie möglicherweise gleichzeitig ausgeführt werden, um Matlab zu.
In Zusammenfassung, mein Verdacht ist, dass, obwohl Sie dazu zwingen könnte Matlab zu initialisieren 4 labs (oder sogar 12 labs), wirst du nicht viel sehen, ein speed-up von über 2 labs, da Matlab ist in der Regel ziemlich effizient bei der Zuweisung von Aufgaben an den Prozessor.