MATLAB/SIMULINK (MathWorks)
Inzwischen sind auch die Versionen 2009b und 2012a installiert. und durch
/G/home/software/matlab2009b/bin/matlab
bzw.
/G/home/software/matlab2012a/bin/matlab
aufrufbar. Allerdings is bei 2012a Vorsicht geboten, da es nicht für die alte Basissoftware auf dem Cluter gedacht ist. Es scheint funktionstüchtig, aber das sollte man selbst prüfen. Die weitere Beschreibung kann auf diese Installationen übertragen werden.
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.