Springe direkt zu Inhalt

MATLAB

MATLAB ist eine Umgebung für numerisches Rechnen.

Support

Falls Sie ein Problem mit MATLAB auf Ihrem eigenen Rechner oder auf einem anderen, Nicht-HPC-System haben, wenden Sie sich bitte an hilfe@zedat.fu-berlin.de.

Nur wenn Sie Schwierigkeiten mit MATLAB auf dem HPC-System haben, schreiben Sie bitte an hpc@zedat.fu-berlin.de.

Einleitung

Um MATLAB zu benutzen, muss man das entsprechende Modul laden, z.B.:

module add MATLAB/R2018b

Das MATLAB-Programm selbst wird im dem Skript auf folgende Art aufgerufen:

matlab -nodisplay -nosplash < my_program.m

Wenn man Argumente an eine Funktion, die in einer MATLAB-Datei, etwa my_fuction.m übergeben will, dann is Folgendes möglich:

matlab -nodisplay -nosplash -r "my_function(${foo}, ${bar})"

Man kann MATLAB auch interaktiv benutzen, aber nur innerhalb eines interaktiven Jobs.  Interaktives Arbeiten direkt auf dem Login-Knoten ist nicht zugelassen und solche Prozesse werden ohne Vorwarnung beendet.

MATLAB-Compiler

Wenn MATLAB gestartet wird, entweder interaktiv oder innerhalb eines Batch-Jobs, ist eine Lizenz erforderlich. Da wir nur eine begrenzte Anzahl von Lizenzen haben, wird da durch die Anzahl der Instanzen, die parallel laufen können, eingeschränkt. Allerdings kann in vielen Fällen ein MATLAB-Skript mittels des MATLAB-Compilers kompiliert werden. Da durch entsteht ein eigenständiges Programm, das ohne eine MATLAB-Lizenz lauffähig ist. Damit können im Batch-System beliebig viele solche kompilierten Programme parallel laufen.

Ein MATLAB-Programm hello_world.m wird auf folgende Weise kompiliert:

module add MATLAB/R2018b
mcc -mv -R -singleCompThread -R -nodisplay hello_world.m

Dies wird ein Shell-Skript mit dem Suffix .sh generieren. Die Batch-Datei, die dieses Shell-Skript startet, muss dann folgende Zeilen enthalten:

module add MATLAB/R2018b
./run_hello_world.sh $MCR_HOME

Bitte beachten Sie, dass weitere Argumente, die Sie angeben, als Zeichenketten interpretiert werden. Daher kann es sein, dass diese beispielsweise in ganze Zahlen mit str2num konvertiert werden müssen.