MATLAB¶
MATLAB GUI¶
MATLAB is available as a GUI application on Otago OnDemand, with several containerised builds to choose from.
License¶
Use of MATLAB on the cluster is covered by the University's campus license.
Hardware-accelerated display¶
If your MATLAB work involves rendering/visualisation, you may benefit from using OpenGL 3D hardware acceleration for display.
When launching the OOD app, make sure to tick the Request GPU and 3D hardware-accelerated display checkbox.
To verify from within MATLAB, enter: rendererinfo(). The Renderer should list an NVIDIA model; If this is 'llvmpipe', you are using software rendering instead.
Toolboxes¶
Toolboxes and addons included
- Communications_Toolbox
- Computer_Vision_Toolbox
- Deep_Learning_Toolbox
- DSP_System_Toolbox
- Image_Acquisition_Toolbox
- Image_Processing_Toolbox
- Mapping_Toolbox
- MATLAB_Compiler
- MATLAB_Compiler_SDK
- Navigation_Toolbox
- Optimization_Toolbox
- Parallel_Computing_Toolbox
- Partial_Differential_Equation_Toolbox
- Sensor_Fusion_and_Tracking_Toolbox
- Signal_Processing_Toolbox
- Simulink
- Statistics_and_Machine_Learning_Toolbox
- Wavelet_Toolbox
Commandline MATLAB¶
Commandline matlab is available by default. Additional versions will be made available via module going forward.
Via Slurm¶
Different containerised builds of MATLAB are available in /opt/apptainer_img/ folder:
Terminal
/opt/apptainer_img/matlab-r2018a-GL.sif
/opt/apptainer_img/matlab-r2023b-GL.sif
/opt/apptainer_img/matlab-r2023b.sif
/opt/apptainer_img/matlab-r2024a-GL.sif
/opt/apptainer_img/matlab-r2024b-GL.1.sif
/opt/apptainer_img/matlab-r2024b-GL.sif -> matlab-r2024b-u4-GL.sif
/opt/apptainer_img/matlab-r2024b-u4-GL.sif
Start a new Slurm interactive job on the cpu node:
Terminal
[userxyz@aoraki-login ~]$ srun --ntasks=1 --partition=aoraki --cpus-per-task=2 --time=1-01:00 --mem=20G --pty --x11=all /bin/bash
[userxyz@rtis-hpc-r01 ~]$ apptainer shell --bind "$(pwd)":/opt/workspace,/weka/rtis/userxyz/tmp:/tmp --pwd /opt/workspace /opt/apptainer_img/matlab-r2024a-GL.sif
Apptainer> export MLM_LICENSE_FILE=27001@slo-licence-svr.registry.otago.ac.nz
Start matlab in gui mode (ssh connection to aoraki-login node has to have "-X" or "-Y" to enable X11 forwarding, and srun`` command has to have "--x11=all`":
Terminal
Apptainer> matlab
Start matlab in non-gui mode:
Terminal
Apptainer> matlab -nodesktop
< M A T L A B (R) >
Copyright 1984-2024 The MathWorks, Inc.
R2024a (24.1.0.2537033) 64-bit (glnxa64)
February 21, 2024
To get started, type doc.
For product information, visit www.mathworks.com.
>>
To run a matlab script:
Terminal
Apptainer> matlab -nodisplay < MATLAB_job.m
Start a new slurm interactive job on the gpu node:
Terminal
[userxyz@aoraki-login ~]$ srun --ntasks=1 --partition=aoraki_gpu_H100 --nodelist=aoraki30 --cpus-per-task=1 --time=1-01:00 --gres=gpu:1 --mem=20G --pty --x11=all /bin/bash
[userxyz@rtis-hpc-r30 ~]$ nvidia-smi
Wed Mar 5 12:19:20 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 555.42.06 Driver Version: 555.42.06 CUDA Version: 12.5 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA H100 NVL Off | 00000000:61:00.0 Off | 0 |
| N/A 25C P0 60W / 400W | 1MiB / 95830MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
[userxyz@rtis-hpc-r30 ~]$ module load cuda/11.8
[userxyz@rtis-hpc-r30 ~]$ apptainer shell --nv --bind "$(pwd)":/opt/workspace,/weka/rtis/userxyz/tmp:/tmp --pwd /opt/workspace /opt/apptainer_img/matlab-r2024a-GL.sif
Apptainer> export MLM_LICENSE_FILE=27001@slo-licence-svr.registry.otago.ac.nz
Apptainer> matlab -nodesktop
< M A T L A B (R) >
Copyright 1984-2024 The MathWorks, Inc.
R2024a (24.1.0.2537033) 64-bit (glnxa64)
February 21, 2024
To get started, type doc.
For product information, visit www.mathworks.com.
>> gpuDevice
ans =
CUDADevice with properties:
Name: 'NVIDIA H100 NVL'
Index: 1
ComputeCapability: '9.0'
SupportsDouble: 1
GraphicsDriverVersion: '555.42.06'
DriverModel: 'N/A'
ToolkitVersion: 12.2000
MaxThreadsPerBlock: 1024
MaxShmemPerBlock: 49152 (49.15 KB)
MaxThreadBlockSize: [1024 1024 64]
MaxGridSize: [2.1475e+09 65535 65535]
SIMDWidth: 32
TotalMemory: 99989127168 (99.99 GB)
AvailableMemory: 99438559232 (99.44 GB)
CachePolicy: 'balanced'
MultiprocessorCount: 132
ClockRateKHz: 1785000
ComputeMode: 'Default'
GPUOverlapsTransfers: 1
KernelExecutionTimeout: 0
CanMapHostMemory: 1
DeviceSupported: 1
DeviceAvailable: 1
DeviceSelected: 1
>> gpuDeviceTable
ans =
1x5 table
Index Name ComputeCapability DeviceAvailable DeviceSelected
_____ _________________ _________________ _______________ ______________
1 "NVIDIA H100 NVL" "9.0" true true
>> rendererinfo()
ans =
struct with fields:
GraphicsRenderer: 'OpenGL Software'
Vendor: 'Mesa/X.org'
Version: '4.5 (Compatibility Profile) Mesa 22.3.6'
RendererDevice: 'llvmpipe (LLVM 15.0.6, 256 bits)'
Details: [1x1 struct]
Submit a slurm batch job:
Terminal
[userxyz@aoraki-login]$ cat /projects/userxyz/matlab.sh
#!/bin/bash
#SBATCH --job-name="matlab-xyz" # job name
#SBATCH --partition=aoraki # partition to which job should be submitted aoraki_gpu...
##SBATCH --nodelist=aoraki15 # optional node
##SBATCH --gres=gpu:1 # optional gpu if running a gpu job on the gpu partition
#SBATCH --nodes=1 # node count
#SBATCH --ntasks=2 # total number of tasks across all nodes
#SBATCH --cpus-per-task=1 # cpu-cores per task
#SBATCH --mem=20G # total memory per node
#SBATCH --time=7-00:00 # wall time DD-HH:MM
##SBATCH --auks=yes # optional if using HCS
##SBATCH --output=/projects/.../userxyz/%x/%x_%j_%a.out # optional output folder
#SBATCH --mail-user userxyz@otago.ac.nz # optional email
#SBATCH --mail-type BEGIN
#SBATCH --mail-type END
#SBATCH --mail-type FAIL
echo "Script start"
## Export matlab licence
export MLM_LICENSE_FILE=27001@slo-licence-svr.registry.otago.ac.nz
## GPU job
## apptainer exec --nv --bind "$(pwd)":/opt/workspace,/weka/rtis/userxyz/tmp:/tmp --pwd /opt/workspace /opt/apptainer_img/matlab-r2024a-GL.sif matlab -nodisplay -nodesktop -nosplash < MATLAB_job.m
## CPU job
apptainer exec --bind "$(pwd)":/opt/workspace,/weka/rtis/userxyz/tmp:/tmp --pwd /opt/workspace /opt/apptainer_img/matlab-r2024a-GL.sif matlab -nodisplay -nodesktop -nosplash < MATLAB_job.m
echo "Script end"
Submit a slurm array batch job:
Terminal
[userxyz@aoraki-login]$ cat /projects/userxyz/matlab-array.sh
#!/bin/bash
#SBATCH --job-name="matlab-array # job name
#SBATCH --partition=aoraki # partition to which job should be submitted aoraki_gpu...
##SBATCH --nodelist=aoraki15 # optional node
##SBATCH --gres=gpu:1 # optional gpu if running a gpu job on the gpu partition
#SBATCH --nodes=1 # node count
#SBATCH --ntasks=1 # total number of tasks across all nodes
#SBATCH --cpus-per-task=1 # cpu-cores per task
#SBATCH --mem=20G # total memory per node
#SBATCH --array=1-8 # run 8 array jobs
#SBATCH --time=0-01:00 # wall time DD-HH:MM
##SBATCH --auks=yes # optional if using HCS
##SBATCH --output=/projects/.../userxyz/%x/%x_%j_%a.out # optional output folder
#SBATCH --mail-user userxyz@otago.ac.nz # optional email
#SBATCH --mail-type BEGIN
#SBATCH --mail-type END
#SBATCH --mail-type FAIL
echo "Script start"
## Export matlab licence
export MLM_LICENSE_FILE=27001@slo-licence-svr.registry.otago.ac.nz
## GPU job
## apptainer exec --nv --bind "$(pwd)":/opt/workspace --pwd /opt/workspace /opt/apptainer_img/matlab-r2024a-GL.sif matlab -nodisplay -nodesktop -nosplash -batch "process_input(${SLURM_ARRAY_TASK_ID})"
## CPU job
apptainer exec --bind "$(pwd)":/opt/workspace --pwd /opt/workspace /opt/apptainer_img/matlab-r2024a-GL.sif matlab -nodisplay -nodesktop -nosplash -batch "process_input(${SLURM_ARRAY_TASK_ID})"
echo "Script end"