MATLAB auf mehreren Kernen, mehreren Prozessoren und MPI verstehen

8

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:

Amelio Vazquez-Reina 04.11.2011, 21:49
quelle

5 Antworten

7
  

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

    
Jonas 06.11.2011, 20:32
quelle
5

Um einige Punkte aus der detaillierten Antwort von @Jonas zu klären und zu erweitern:

  • PCT verwendet einen Build von MPICH2 (dieser wird nicht mit der Basis MATLAB ausgeliefert).
  • MPI-Funktionen sind unter dem lokalen Scheduler verfügbar - in diesem Fall kann der Build von MPICH2 den gemeinsamen Speicher für die Kommunikation nutzen.
  • Die Funktionsfamilie labSend / labReceive bietet einen Wrapper um MPI_Send / MPI_Recv usw.
Edric 07.11.2011 07:53
quelle
4

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.

    
Ben Voigt 04.11.2011 22:59
quelle
1

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.

    
Iterator 06.11.2011 01:34
quelle
-1

Wenn kein PCT verwendet wird, verwendet MATLAB nur einen Kern / einen Prozessor.

Ich kenne die Antworten auf die 3. und 4. Frage nicht.

    
smwilsonau 04.11.2011 22:20
quelle

Tags und Links