Skip to content

MATLAB

MATLAB is a multi-paradigm numerical computing environment and programming language. A proprietary programming language developed by MathWorks, MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages.

MATLAB is available as a module on Apocrita. QMUL has a site licence for MATLAB.

Please see here if you want to install MATLAB on your desktop.

Usage

GUI support via OnDemand

To use the MATLAB GUI, launch the software via the OnDemand MATLAB interactive app.

To run the default installed version of MATLAB, simply load the matlab module:

$ module load matlab
$ matlab -nodisplay -help

    Usage:  matlab [-h|-help] | [-n | -e]
                   [v=variant]
                   [-c licensefile] [-display Xdisplay | -nodisplay]
                   [--noFigureWindows]
                   [-nosplash] [-debug]
                   [-softwareopengl | -nosoftwareopengl]
                   [-desktop | -nodesktop | -nojvm]
                   [-batch MATLAB_command | -r MATLAB_command]
                   [-sd folder | -useStartupFolderPref]
                   [-logfile log]
                   [-singleCompThread]
                   [-jdb [port]]
                   [-Ddebugger [options]]
                   [-nouserjavapath]
...

For further usage documentation, see the output of matlab -nodisplay -help.

MATLAB resource usage

Much of the core MATLAB functionality is multi-threaded and can make use of multiple processor cores.

This includes simple element-wise functions (=+=, .* etc.) which operate on individual elements in a matrix - and more complex algorithms such as FFT.

Running without the display and JVM

When running MATLAB in command-line mode, we recommend launching the matlab application with the -nodisplay and -nojvm options. This will make MATLAB start faster, and use less memory.

Example jobs

Array jobs

The SGE_TASK_ID can be accessed via str2num(getenv('SGE_TASK_ID'));

Serial job (single-core)

Here is an example job running on 1 core and 4GB of memory:

#!/bin/bash
#$ -cwd
#$ -j y
#$ -pe smp 1
#$ -l h_rt=1:0:0
#$ -l h_vmem=4G

module load matlab

matlab -nodisplay -nojvm < ./example.m

Serial job (multi-core)

Jobs making use of the MATLAB parallel toolbox can be run in the smp parallel environment. Running with the parallel toolbox allows the utilisation of the MATLAB parfor functionality on a single host.

Here is an example job running on 4 cores and 8GB of memory:

#!/bin/bash
#$ -cwd
#$ -j y
#$ -pe smp 4
#$ -l h_rt=1:0:0
#$ -l h_vmem=2G

module load matlab

matlab -nodisplay < ./matlabparallel.m

Below shows an example MATLAB script using the parallel toolbox:

i=str2num(getenv('NSLOTS'));
pool = parpool('local', i);

parfor j = 1:i
    fprintf('Im iteration %d\\n', j);
end

delete(pool);

GPU job

Here is an example job running on 1 GPU:

#!/bin/bash
#$ -cwd
#$ -j y
#$ -pe smp 8
#$ -l h_rt=240:0:0
#$ -l h_vmem=11G
#$ -l gpu=1

module load matlab

matlab -nodisplay < ./gpu_example.m

References