Hinweis |
---|
Derzeit ist die Nutzung der Matlab-Lizenzen auf Hilbert eingeschränkt, da es nicht genügend Lizenzen für den Campus gibt. |
Auf dem HPC-System stehen mehrere MatLab-Versionen zu Verfügung. Die Lizensierung findet über den zentralen Lizenzserver im ZIM statt.
Die Software kann z.B. über module load MATLAB/R2020b geladen werden.
Da es nur eine knappe Anzahl an Lizenzen gibt empfiehlt es sich beim Abschicken des Jobs direkt eine MatLab-Lizenz mit anzufordern. Dadurch wird der Job nur gestartet, wenn eine zentrale Lizenz verfügbar ist. Dies ist möglich über die Resource matlablicence im Jobfile
Codeblock |
---|
|
#PBS -l matlablicence=1 |
oder über eine explizite Angabe beim qsub:
Codeblock |
---|
|
qsub -l matlablicence=1 matlab.job |
Zusätzliche Resourcen für besondere Erweiterungen
Für die folgenden Toolboxen gibt es nur eine geringe Anzahl an Lizenzen, daher kann es sein, dass Jobs lange Warten müssen. Dies hat jedoch immer noch den Vorteil, dass Jobs nicht einfach abstürzen.
Toolbox | Lizenzen | Resource |
---|
Parallel Computing Toolbox | 20 | matlab_dct_licence |
Image Toolbox | 20 | matlab_image_licence |
Statistics Toolbox | 50 | matlab_stats_licence |
Optimization Toolbox | 50 | matlab_opt_licence |
Diese Resourcen können wie folgt angefordert werden:
Codeblock |
---|
|
#PBS -l matlab_image_licence=1 |
Beispiel Job-File für Matlab
Es ist gute Praxis, Paremeter wie z.B. Input-Files und deren Verzeichnisse von außen zu setze und nicht direkt in die Scripte einzutragen. Das gibt auch die Möglichkeit, MATLAB-Programme zu kompilieren und dann immer wieder mit anderen Parametern aufzurufen, ohne den Source ändern zu müssen.
Codeblock |
---|
language | php |
---|
theme | Eclipse |
---|
title | myscript.m |
---|
linenumbers | true |
---|
|
% input_filename should be set in the call
if exist('input_filename') == 0
fprintf("No input_filename given!\n");
exit();
end
display(input_filename);
fprintf("DONE.\n"); |
Die Variable "input_filename" kann dann im JobScript beliebig gesetzt werden, was eine enorme Flexibilität und intrinsische Dokumentation ermöglicht.
Codeblock |
---|
language | bash |
---|
title | matlab.job |
---|
linenumbers | true |
---|
|
#!/bin/bash
#PBS -l select=1:ncpus=4###CORES###:mem=32gb###MEMORY###
#PBS -l walltime=24:00:00
#PBS -r n
#PBS -N MATLAB
#PBS -A ###MYJAM BenchMarkingPROJECT###
#PBS -l matlablicence=1
export LOGFILE=$PBS_O_WORKDIR/$PBS_JOBNAME"."$PBS_JOBID".log"
cd $PBS_O_WORKDIR
echo "$PBS_JOBID ($PBS_JOBNAME) @ `hostname` at `date` in "$RUNDIR" START" > $LOGFILE
echo "`date +"%d.%m.%Y-%T"`" >> $LOGFILE
#load MATLAB Environment and set scratch directory
module load MATLAB/R2020b
echo >> $LOGFILE
echo "GLOBAL PARAMETERS" >> $LOGFILE
echo "---------------------------" >> $LOGFILE
echo "Node : "`hostname` >> $LOGFILE
echo "RunDir : "$PBS_O_WORKDIR >> $LOGFILE
echo "MATLAB : "$MATLAB_ROOT >> $LOGFILE
echo "# CPUs : "$NCPUS >> $LOGFILE
echo >> $LOGFILE
input=/home/raub/run/MATLAB/test.input
#calling MATLAB
matlab -nosplash -nodesktop -nodisplay -r "input_filename='$input'; myscript"
#print the last known statistics of the job (memory usage, cpu time, etc...)
echo >> $LOGFILE
qstat -f $PBS_JOBID >> $LOGFILE
echo "$PBS_JOBID ($PBS_JOBNAME) @ `hostname` at `date` in "$RUNDIR" END" >> $LOGFILE
echo "`date +"%d.%m.%Y-%T"`" >> $LOGFILE |
Die Platzhalten ###CORES###, ###MEMORY### und ###MYJAM PROJECT### müssen natürlich noch angepasst werden.
Der Output sollte dann wie folgt aussehen:
Codeblock |
---|
|
< M A T L A B (R) >
Copyright 1984-2020 The MathWorks, Inc.
R2020b (9.9.0.1467703) 64-bit (glnxa64)
August 26, 2020
To get started, type doc.
For product information, visit www.mathworks.com.
input_filename =
'/home/raub/run/MATLAB/test.input'
DONE. |