|
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 |