SCRP nodes have MATLAB 2021a installed.
Note: running MATLAB’s graphical user interface (GUI) remotely is generally not as smooth as running it locally, so you might want to consider installing MATLAB on your own computer under CUHK’s campus-wide license.
Option 1: JupyterHub
- Navigate to one of the following URLs on a browser:
- Choose one of the following under Notebook:
MATLAB GUI [↗]launches MATLAB’s graphical user interface in your browser.
Matlab [conda env:matlab]creates a new MATLAB jupyter notebook.
Option 2: Remote Desktop
- Connect to a login node through remote desktop.
- Launch from the pull-down menu on the top-right corner, Applications > Statistics > MATLAB 2021a.
Option 3: SSH
To ensure MATLAB’s GUI runs smoothly, consider using an X-server with hardware OpenGL support. We recommend using MobaXterm or VcXsrv on Windows over the public-domain version of Xming for this reason. On the other hand, if you find MATLAB unstable with hardware OpenGL, you might want to try using the default software OpenGL option.
Hardware OpenGL acceleration is off by default in MobaXterm. Enable it before you connect to the cluster.
Using MATLAB over SSH
All the instructions below assume you have connected to a login node through SSH. See Account and Access for details.
If the MATLAB GUI does not launch, make sure you have an X server running on your computer. If you are using MobaXterm, make sure the built-in X server is enabled. If you are using a standalone SSH client like PuTTY, you will need to install a separate X server (e.g. VcXsrv on Windows or XQuartz on Mac OS).
-nosoftwareopengl flag forces MATLAB to use hardware OpenGL on your computer if available. To check if hardare OpenGL is being used, type in MATLAB:
If hardware OpenGL is used, the command should return your graphics card model and driver version. For example:
Version: '1.4 (4.6.0 NVIDIA 432.00)' Vendor: 'NVIDIA Corporation' Renderer: 'GeForce GTX 1070/PCIe/SSE2'
Running on a Compute Node - Short Duration
You should run your job on a compute node if you need more processing power. MATLAB by default uses all physical CPU cores it has access to.
Running MATLAB without GUI
For computationally-intensive job, it is best to run MATLAB without a GUI. You can do so by running the following command in a terminal:
compute matlab -nodisplay -batch "run('/home/users/testuser/mycode.m')"
This launches MATLAB’s GUI on a compute node with four logical CPUs and 8GB of RAM, for a duration of 24 hours.
If you need GPU, prepend
gpu matlab -nodisplay -batch "run('/home/users/testuser/mycode.m')"
You can request more logical CPUs with the
-c option, more memory with the
more time with the
-t option and specify GPU model with the
For example, to request 16 CPUs, 40G of memory and one RTX 3090 GPU for three days:
compute -c 16 --mem=40G --gpus-per-task=rtx3090 -t 3-0 matlab ...
Running MATLAB with GUI
To run MATLAB’s GUI through a browser on a compute node, follow the instructions here.
To run MATLAB GUI on a compute node in remote desktop, launch Applications > Slurm (x cores) > MATLAB 2021a, where x is the number of desirable cores.
To run MATLAB GUI on a compute node in a terminal, run:
# CPU only compute matlab -nosoftwareopengl # With GPU gpu matlab -nosoftwareopengl
To check if a GPU is truly available, type in MATLAB:
which outputs the number of GPU you have access to.
Running on a Compute Node - Long Duration
Codes that take a long time to run is best initiated through Slurm’s
which allows you to submit a job without the need to wait for it to execute.
Your code will run even if you disconnect from the cluster.
As an example, let us use MATLAB’s
parfor to execute multiple eigenvalue discomposition
simultaneously. Here is our MATLAB code:
parpool(8) tic n = 200; A = 500; a = zeros(1,n); parfor i = 1:n a(i) = max(abs(eig(rand(A)))); end toc
It is crucial that you initiate a
parpool manually. Users have reported much slower speed
if you do not.
We will first need to write a batch script. In this example we will name the script
but you can obviously choose any name you want.
#!/bin/bash #SBATCH --job-name=eigen-test #SBATCH --ntasks=1 #SBATCH --cpus-per-task=8 matlab -nodisplay -batch "run('/home/users/testuser/mycode.m')"
#SBATCH comments specify various options. In this example, we are requesting eight logical CPUs
for a single task.
We can now submit our job:
sbatch have many options. For example, you can run multiple jobs concurrently in one
See the page on Slurm for details.