Ich habe mehrere eng verwandte Fragen darüber, wie MATLAB die parallele Hardware ausnutzt. Sie sind kurz, also dachte ich, es wäre das Beste, sie in den gleichen Post zu setzen:
Hilft / profitieren MATLAB von mehreren Kernen, wenn Sie den Parallel Computing Toolbox?
Ja. Seit R2007a , mehr und mehr eingebaute Funktionen wurden neu geschrieben, um Multi-Threading zu sein (obwohl Multi-Threading nur dann einsetzt, wenn es nützlich ist).
%Vor%Für Code, der als .m-Datei implementiert wird, werden mehrere Kerne jedoch nicht helfen.
Natürlich profitieren auch multi-threaded Mex-Dateien.
Verwendet MATLAB MPI, wenn das PCT nicht verwendet wird?
Nicht zu meinem Wissen.
Verwendet MATLAB MPI bei Verwendung des PCT?
Ja, wenn Sie es auf einem Cluster ausführen (obwohl Sie auch andere Scheduler verwenden können). Dazu benötigen Sie eine Lizenz für die Matlab Distributed Computing Server Lizenz. Ich weiß nicht, welche Architektur der lokale Scheduler verwendet (die, die Sie verwenden, wenn Sie parallele Jobs auf einem lokalen Computer ausführen). vorausgesetzt, dass MPI-Funktionen sind Teil des PCT schlägt vor, dass sie es für mindestens einen Teil der Funktionalität verwenden können. BEARBEITEN : Siehe @ Edrics Antwort für weitere Details
Um einige Punkte aus der detaillierten Antwort von @Jonas zu klären und zu erweitern:
Wenn Sie den PCT nicht verwenden, gibt MatLab nur einen Befehl gleichzeitig aus (single-threaded).
Wenn Sie jedoch über ein Multi-Thread-BLAS verfügen, können Sie dennoch von zusätzlichen Kernen profitieren (und es spielt keine Rolle, ob sie alle in einem einzigen Prozessor vorhanden sind oder nicht).
MEX-Dateien können auch mit mehreren Threads geschrieben werden. In diesem Fall werden Sie auch ohne PCT mehrere Kerne verwenden. Wenn Sie Leistungsprobleme haben, ist das Umschreiben einiger Hotspots als MEX oft ein großer Gewinn.
Erstens lauten die Antworten meistens "Nein, aber ...", wie @BenVoigt angesprochen hat. Der "aber ..." Teil kommt von Bibliotheken, die von Matlab verwendet werden. Eines der bemerkenswertesten Beispiele wurde von Ben für BLAS gegeben, und Sie können dieses durch eines ersetzen, das mehrere Kerne oder Prozessoren unterstützt, wie ATLAS, die Intel- oder AMD-Versionen, Goto BLAS oder einige andere Optionen.
Sie können Matlab auch anrufen, um in anderen Sprachen zu programmieren, die mehrere Kerne, Prozessoren, Computer usw. nutzen können. In der Vergangenheit habe ich R von Matlab angerufen und auf diese Weise mehrere Kerne verwendet. durch Ausnutzen von R-Paketen, die Multicore-Verarbeitung unterstützen. Das Gleiche könnte mit MPI gemacht werden. Während Sie skalieren, werden Sie feststellen, dass mehr und mehr Code in der Sprache ist, in der mehr parallele oder verteilte Arbeit ausführen kann (dh eine freie Sprache wie R, Python, C, C ++ oder Java) statt in Matlab.
Profitiert Matlab also von einer solchen Infrastruktur ohne PCT? Nicht direkt. Kann Ihr Code in Matlab von einer solchen Infrastruktur über verschiedene unterstützende Bibliotheken profitieren? Ja.
Wenn kein PCT verwendet wird, verwendet MATLAB nur einen Kern / einen Prozessor.
Ich kenne die Antworten auf die 3. und 4. Frage nicht.
Tags und Links matlab parallel-processing mpi