Seite druckenPDF Version herunterladenSeitenstruktur anzeigenSeite durchsuchen
nach oben

MATLAB/SIMULINK (MathWorks)

 

MATLAB R2008b/R2009a

Auf der Erweiterung des Clusters (Delta) sind Matlab Version 2008b und 2009a unter /G/home/software/ installiert. Beide Versionen bieten Support für die Parallel Computing Toolbox, das heißt für Berechnungen auf MultiCore-Systemen (max. 4 Cores bei Version 2008b und max. 8 Cores bei Version 2009a).

Wie gehen sie vor wenn sie MATLAB benutzen möchten?

1. Login auf hpclogin.rrz.uni-hamburg.de

Prinzipiell bietet MATLAB zwei Arten der Bearbeitungsmöglichkeit.

a) interaktiv via X-Server oder in der Konsole

b) Batchmode durch Ausführen der Skripte

zu a)

Am einfachsten ist es sich durch das Batchsystem einen Knoten zu reservieren mit:

qsub -I -qc8

Nach dem das Ressource-System die Ressource freigibt können sie mit einem separaten Login mit X-Forward (Achtung: Windows benötigt X-Server) auf hpclogin.rrz.uni-hamburg.de mit "ssh -X [betr. Knoten] einen durchgehenden X-forward erzeugen.

Durch den Befehl :
/G/home/software/matlab2009a/bin/matlab

starten sie MATLAB.

Ohne X-Forward startet das Programm automatisch in der Konsole.

zu b)

starten sie ihre MATLAB-Skripte mit: /G/home/software/matlab2009a/bin/matlab -r [Filename/ohne Extension]

bzw. auch als Batch:

-----------------------------------------------

#/bin/bash

#PBS -l nodes=1:ppn=8

cd Pfad_in_dem_die Executables_liegen

/G/home/software/matlab2009a/bin/matlab -r [filename]

-----------------------------------------------

ausführen mit:

qsub -qc8 BATCHFILE

Dies ist nur möglich, falls das MATLAB-Skript keine Rückfragen stellt oder auf Benutzereingabe wartet.

Das MATLAB-Script muss zusätzlich mit "exit" abschließen, da das Programm sonst in der Konsole verleibt und nicht abschließt.

Parallel Computing Toolbox Version 4.1 (R2009a)

Für serielle Berechnungen mit MATLAB reicht strenggenommen nur 1 CPU. Mit der Parallel Computing Toolbox erzielen sie einen maximalen möglichen Performanzuwachs von Faktor 8, da auf 8 Cores gleichzeitig gerechnet werden kann. Hierzu muss überhaupt das zu berechnende Problem parallelisierbar sein.

Die Parallel Computing Toolbox wird über den Befehl matlabpool open/close verfügbar gemacht:

---Matlab----

>> matlabpool open 8
Starting matlabpool using the parallel configuration 'local'.
Waiting for parallel job to start...
Connected to a matlabpool session with 8 labs.
>>

---------------

Es ist dringend darauf zu achten, dass der matlabpool bei Beendigung der Rechenaufgaben wieder auf close gesetzt wird. Innerhalb dieses Pools können beispielsweise Schleifen parallelisiert werden, indem man den Befehl "for" durch "parfor" ersetzt. Hierzu ein einfaches Beispiel:

-------MATLAB-Skript--------

matlabpool open 8
tic
parfor i = 1 : 10000

(eigener Code)

end
toc
matlabpool close
exit
------------------------------- 

Siehe hierzu: Support Parallel Computing Toolbox (MathWorks)

Bug-Report (Failure with Matlabpool-Sessions):

Wie Mathworks in einem Support-Thread (1-8PH1V2) berichtet, gibt es Probleme bei der Ausführung mehrerer parallelen Matlab-Pool-Sessions auf einem Shared-Filesystem (Linux-Cluster). Die Meldung:

>> matlabpool
Destroying 1 pre-existing parallel job(s) created by matlabpool that were in the
finished or failed state.

oder bei Beendigung:

>>matlabpool close
Sending a stop signal to all the labs ... Warning: Unable to cancel job because the scheduler threw an error. Nested
error:
Output argument "val" (and maybe others) not assigned during call to
"/G/home/software/matlab2009a/toolbox/distcomp/@distcomp/@abstractjob/pGetJobSchedulerData.m>pGetJobSchedulerData".
> In distcomp.abstractjob.destroy at 68
  In distcomp.interactiveclient.pStopLabsAndDisconnect at 51
  In distcomp.interactiveclient.stopLabsAndDisconnect at 32
  In matlabpool at 121
stopped.
>>

... kann dann getrost ignoriert werden, denn es handelt sich bei dieser Fehlermeldung um den von den Entwicklern beschriebenen Bug.

Distributed Arrays/Matrizen:

Bitte beachten sie, dass es sich bei der Konfiguratin des RRZ um jeweils lokale Shared-Memory-Knoten handelt, und dass "Workers" einer Session, die "distributed" Arrays/Matrizen halten, sich den lokalen Speicher des Knoten aufteilen und auf diesen begrenzt sind.

SIMULINK

Sie starten SIMULINK bei aktiviertem X-Server mit dem Befehl "simulink" aus einer MATLAB-Konsole.

Autor: Alexander Fitterling, Stand: 14.06.2011 15:22 Uhr

 Impressum