Matlab im Hintergrund
Matlab kann auf UNIX-Systemen auch als Hintergrund bzw. Batchjob gestartet werden. Grundsätzlich müssen hierzu die Befehle, die Matlab ausführen soll in einem m-file enthalten sein. Nennen wir dieses File z.B. test.m . Als letzter Befehl muß im Skript quit angegeben sein. Wir geben hier ein kleines Dummy-Skript an, das einige Möglichkeiten aufzeigt.% Programm test.m % diary speichert alle Ein- und Ausgaben Matlabs % in der Datei test.session ab % diary test.session % disp 'Dieses Programm berechnet die Wurzel aus den Zahlen 1 bis 10' A=[1:10;sqrt(1:10)] % % save speichert die Variable A im lokalen Verzeichnis % mit dem Namen test.data im ASCII-Format ab. % save test.data A -ascii % quitWir gehen im weiteren davon aus, daß dieses File im aktuellen Verzeichnis vorliegt.
Matlab im Batch-Betrieb
Auf dem Linuxcluster Hali istdas Batch-System PBSpro installiert. Beachten Sie bitte die Kurzbeschreibung PBSPro-Batchsystem.
PBSpro Beispielskript
Das folgende Beispielskript fordert 2 Prozessoren (=Cores, also 2 Single Core AMD Opteron oder 1/2 Quad Core Opteron) auf einem Knoten für maxmimal 12 Stunden an.#!/bin/sh #PBS -l walltime=12:00:00 #PBS -l select=1:ncpus=2 #PBS -M mailadresse@tu-harburg.de # Das Module-Kommando setzt Matlab-Pfade und -Umgebungsvariablen . /etc/profile.d/module.sh module load matlab # Ins Arbeitsverzeichnis wechseln. Ein absoluter Pfad tut's hier auch. cd $PBS_O_WORKDIR matlab -nodisplay -r test # Ressourcenverbrauch des Jobs anzeigen. Wichtig ist u.a. die Zeile # resources_used.mem=... # Wird mehr als 1GB/Core benötigt, sollte das beim nächsten # Job mit angegeben werden, z.B.: -l select=1:ncpus=2:mem=3500mb. qstat -f $PBS_JOBID exit
Das Skript wird z.B. unter dem Namen matlab.pbs abgespeichert und mit qsub matlab.pbs abgeschickt. Mit qstat -a werden alle laufenden und wartenden Jobs auf Hali angezeigt. Fragen zum Batchsystem oder zum Cluster Hali beantwortet Markus Stammberger.
Matlab in den Hintergrund schieben
Diese Anleitung ist z.B. für Ihren Arbeitsplatz-PC gedacht. Auf Hali nutzen Sie bitte das Batchsystem!Dies geschieht mit einem nachgestellten & (Ampersand)- Zeichen und hat NUR den Effekt, daß das Eingabefenster für weiter Eingaben frei ist. Also für unser Beispiel (mit einer c- oder tc-shell):
matlab -nodisplay -r test >& test.out &Mit diesem Befehl wird Matlab im Hintergrund gestartet und das X-Display auf "nicht vorhanden" gesetzt (nodisplay als Option für matlab, die keine X-Ausgabe definiert). Dann wird Matlab das Skript "test.m" übergeben (die Endung .m ergänzt Matlab automatisch) und der gesamte Output des Programmlaufs in die Datei test.out geschrieben. Diese Datei ist im wesentlichen mit dem durch den diary-Befehl erzeugten Output identisch. Möchte man den Output nicht, so muß dieser auf das Null-Device umgeleitet werden:
matlab -nodisplay -r test >& /dev/null &Soll das Programm auch nach dem Ausloggen weiter abgearbeitet werden, ist der Befehl "nohup" (no hangup) dem Kommando voranzustellen:
nohup matlab -nodisplay -r test >& /dev/null &
Zurück zur Matlabseite
