Skip to content

MATLAB

UBELIX is featuring a recent release of MATLAB.

Facts about MATLAB on UBELIX

  • It can run in parallel on one node, thanks to the Parallel Computing ToolBox
  • It can take advantage of GPUs
  • It cannot run on more than one node as we do not have the Distributed Computing Toolbox.

Running MATLAB on the Compute Nodes

Submitting a MATLAB job to the cluster is very similar to submitting any other serial job. Lets try to run a simple MATLAB script which we will put in a file boxfilter.m

boxfilter.m

% Compute a local mean filter over a neighborhood of 11x11 pixels

% Read image into workspace:
original = imread('girlface.png');
% Perform the mean filtering:
filtered = imboxfilt(original, 11);
% Save the original and the filtered image side-by-side:
imwrite([original, filtered],'comparison.png');

Now we need a submission script

boxfilter.sh

#!/bin/bash
#SBATCH --mail-user=foo@bar.unibe.ch
#SBATCH --mail-type=end,fail
#SBATCH --job-name=boxfilter
#SBATCH --time=00:10:00
#SBATCH --mem-per-cpu=2G

# Load MATLAB form the environment modules
module load MATLAB
# Tell MATLAB to run our box filter.m file and exit
matlab -nodisplay -r "boxfilter, exit"

Passing Arguments to a m-File

There are several ways to provide input arguments in MATLAB.

Define the Variables Before Running the Script

Lets take the box filter.m example from above. The script is not universal because the name of the input image and the box size is hardcoded in the script. We make the script more generally usable by:

boxfilter.m

% Compute a local mean filter over a neighborhood of 11x11 pixels

% Read image into workspace:
original = imread(inputImg);
% Perform the mean filtering:
filtered = imboxfilt(original, x);
% Save the original and the filtered image side-by-side:
imwrite([original, filtered],'comparison.png');

and then:

boxfilter.qsub

#!/bin/bash
(...)
# Load MATLAB form the environment modules
module load MATLAB
# Tell MATLAB to run our box filter.m file and exit
matlab -nodisplay -r "inputImg='girlface.png'; x=11; boxfilter, exit"

Advanced Topics

Multithreading

By default, MATLAB makes use of the multithreading capabilities of the node on which it is running. It is crucial that you allocate the same number of slots for your job as your job utilizes cores.

Disable Computational Multithreading

If you do not need multithreading for your application consider to disable computational multithreading by setting the -singleCompThread option when starting MATLAB:

matlab -nodisplay -singleCompThread -r "boxfilter('girlface.png', 'comparison.png', 11); exit"

Disable Computational Multithreading If you do not need multithreading for your application consider to disable computational multithreading by setting the -singleCompThread option when starting MATLAB:

matlab -nodisplay -singleCompThread -r "boxfilter('girlface.png', 'comparison.png', 11); exit"

Running MATLAB in Multithreaded Mode

Most of the time, running MATLAB in single-threaded mode will meet your needs. If you have mathematically intense computations that might benefit from multi-threading capabilities provided by MATLAB’s BLAS implementation, then you should limit MATLAB to a well defined number of threads, so that you can allocate the correct number of slots for your job. Use the maxNumCompThreads(N) function to control the number of computational threads:

-----------------------------------------------------------------------------------------------------
MATLAB Version: 9.11.0.1769968 (R2021b)
MATLAB License Number: 40639324
Operating System: Linux 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
-----------------------------------------------------------------------------------------------------
MATLAB                                                Version 9.11        (R2021b)
Simulink                                              Version 10.4        (R2021b)
5G Toolbox                                            Version 2.3         (R2021b)
AUTOSAR Blockset                                      Version 2.5         (R2021b)
Aerospace Blockset                                    Version 5.1         (R2021b)
Aerospace Toolbox                                     Version 4.1         (R2021b)
Antenna Toolbox                                       Version 5.1         (R2021b)
Audio Toolbox                                         Version 3.1         (R2021b)
Automated Driving Toolbox                             Version 3.4         (R2021b)
Bioinformatics Toolbox                                Version 4.15.2      (R2021b)
Communications Toolbox                                Version 7.6         (R2021b)
Computer Vision Toolbox                               Version 10.1        (R2021b)
Control System Toolbox                                Version 10.11       (R2021b)
Curve Fitting Toolbox                                 Version 3.6         (R2021b)
DDS Blockset                                          Version 1.1         (R2021b)
DSP System Toolbox                                    Version 9.13        (R2021b)
Database Toolbox                                      Version 10.2        (R2021b)
Datafeed Toolbox                                      Version 6.1         (R2021b)
Deep Learning HDL Toolbox                             Version 1.2         (R2021b)
Deep Learning Toolbox                                 Version 14.3        (R2021b)
Econometrics Toolbox                                  Version 5.7         (R2021b)
Embedded Coder                                        Version 7.7         (R2021b)
Filter Design HDL Coder                               Version 3.1.10      (R2021b)
Financial Instruments Toolbox                         Version 3.3         (R2021b)
Financial Toolbox                                     Version 6.2         (R2021b)
Fixed-Point Designer                                  Version 7.3         (R2021b)
Fuzzy Logic Toolbox                                   Version 2.8.2       (R2021b)
GPU Coder                                             Version 2.2         (R2021b)
Global Optimization Toolbox                           Version 4.6         (R2021b)
HDL Coder                                             Version 3.19        (R2021b)
HDL Verifier                                          Version 6.4         (R2021b)
Image Acquisition Toolbox                             Version 6.5         (R2021b)
Image Processing Toolbox                              Version 11.4        (R2021b)
Instrument Control Toolbox                            Version 4.5         (R2021b)
LTE Toolbox                                           Version 3.6         (R2021b)
Lidar Toolbox                                         Version 2.0         (R2021b)
MATLAB Coder                                          Version 5.3         (R2021b)
MATLAB Compiler                                       Version 8.3         (R2021b)
MATLAB Compiler SDK                                   Version 6.11        (R2021b)
MATLAB Report Generator                               Version 5.11        (R2021b)
Mapping Toolbox                                       Version 5.2         (R2021b)
Mixed-Signal Blockset                                 Version 2.1         (R2021b)
Model Predictive Control Toolbox                      Version 7.2         (R2021b)
Motor Control Blockset                                Version 1.3         (R2021b)
Navigation Toolbox                                    Version 2.1         (R2021b)
Optimization Toolbox                                  Version 9.2         (R2021b)
Parallel Computing Toolbox                            Version 7.5         (R2021b)
Partial Differential Equation Toolbox                 Version 3.7         (R2021b)
Phased Array System Toolbox                           Version 4.6         (R2021b)
Powertrain Blockset                                   Version 1.10        (R2021b)
Predictive Maintenance Toolbox                        Version 2.4         (R2021b)
RF Blockset                                           Version 8.2         (R2021b)
RF PCB Toolbox                                        Version 1.0         (R2021b)
RF Toolbox                                            Version 4.2         (R2021b)
ROS Toolbox                                           Version 1.4         (R2021b)
Radar Toolbox                                         Version 1.1         (R2021b)
Reinforcement Learning Toolbox                        Version 2.1         (R2021b)
Risk Management Toolbox                               Version 1.10        (R2021b)
Robotics System Toolbox                               Version 3.4         (R2021b)
Robust Control Toolbox                                Version 6.11        (R2021b)
Satellite Communications Toolbox                      Version 1.1         (R2021b)
Sensor Fusion and Tracking Toolbox                    Version 2.2         (R2021b)
SerDes Toolbox                                        Version 2.2         (R2021b)
Signal Integrity Toolbox                              Version 1.0         (R2021b)
Signal Processing Toolbox                             Version 8.7         (R2021b)
SimBiology                                            Version 6.2         (R2021b)
SimEvents                                             Version 5.11        (R2021b)
Simscape                                              Version 5.2         (R2021b)
Simscape Driveline                                    Version 3.4         (R2021b)
Simscape Electrical                                   Version 7.6         (R2021b)
Simscape Fluids                                       Version 3.3         (R2021b)
Simscape Multibody                                    Version 7.4         (R2021b)
Simulink 3D Animation                                 Version 9.3         (R2021b)
Simulink Check                                        Version 5.2         (R2021b)
Simulink Code Inspector                               Version 4.0         (R2021b)
Simulink Coder                                        Version 9.6         (R2021b)
Simulink Compiler                                     Version 1.3         (R2021b)
Simulink Control Design                               Version 6.0         (R2021b)
Simulink Coverage                                     Version 5.3         (R2021b)
Simulink Design Optimization                          Version 3.10        (R2021b)
Simulink Design Verifier                              Version 4.6         (R2021b)
Simulink PLC Coder                                    Version 3.5         (R2021b)
Simulink Report Generator                             Version 5.11        (R2021b)
Simulink Requirements                                 Version 1.8         (R2021b)
Simulink Test                                         Version 3.5         (R2021b)
SoC Blockset                                          Version 1.5         (R2021b)
Stateflow                                             Version 10.5        (R2021b)
Statistics and Machine Learning Toolbox               Version 12.2        (R2021b)
Symbolic Math Toolbox                                 Version 9.0         (R2021b)
System Composer                                       Version 2.1         (R2021b)
System Identification Toolbox                         Version 9.15        (R2021b)
Text Analytics Toolbox                                Version 1.8         (R2021b)
UAV Toolbox                                           Version 1.2         (R2021b)
Vehicle Dynamics Blockset                             Version 1.7         (R2021b)
Vehicle Network Toolbox                               Version 5.1         (R2021b)
Vision HDL Toolbox                                    Version 2.4         (R2021b)
WLAN Toolbox                                          Version 3.3         (R2021b)
Wavelet Toolbox                                       Version 6.0         (R2021b)
Wireless HDL Toolbox                                  Version 2.3         (R2021b)