Running MATLAB jobs¶
MATLAB¶
MATLAB is a software environment and programming language designed primarily for numerical computing and matrix operations—hence the name MATrix LABoratory.
If you are unfamiliar with MATLAB, visit the MathWorks website for additional documentation and tutorials:
https://www.mathworks.com/products/matlab.html
To view available MATLAB versions on a CARC system, run:
```bash id="m1q8aa" module avail matlab
MATLAB is installed on CARC systems, but must be run on compute nodes rather than login (head) nodes.
To run MATLAB jobs at CARC, submit a Slurm job that launches MATLAB in batch mode.
---
## Batch Mode
Many users are familiar with running MATLAB through the graphical interface or interactive console.
At CARC, MATLAB programs must be run non-interactively in batch mode.
Batch mode allows MATLAB to execute a script and exit automatically without launching the graphical interface.
---
## Creating a Simple MATLAB Program
Suppose you have a MATLAB script named `my_program.m` that generates a 3×3 matrix of random numbers and writes the results to a CSV file.
Example:
```matlab id="k8x2cn"
% Generate a random 3x3 matrix
rmatrix = rand(3);
% Output filename
fname = 'randnums.csv';
% Write results
writematrix(rmatrix, fname);
exit
Save this file in your home directory.
Running MATLAB on a Compute Node (Interactive)¶
If you want to test interactively, first request a compute node:
```bash id="q7v1sp" srun --pty bash
This ensures MATLAB runs on a compute node, not the login node.
Running MATLAB from the Command Line (Non-Interactive)¶
Rather than requesting an interactive shell first, you can launch MATLAB on a compute node directly from the login node with a single command. Load the module in your login shell first — srun propagates your current environment to the compute node, so the module needs to already be loaded before you call srun, not after:
```bash id="v3k8lp" module load matlab
Notes:
- The
.mextension is omitted -batchruns the script and exits automatically- This is the recommended method for quick one-off runs; for anything long enough to need
--time,--mem, or email notifications, use thesbatchsubmission below instead
Submitting a MATLAB Job with Slurm¶
Create a submission script named my_matlab_job.sbatch.
```bash id="x2n5ad"
!/bin/bash¶
SBATCH --job-name=my_matlab_job¶
SBATCH --time=01:00:00¶
SBATCH --nodes=1¶
SBATCH --ntasks=1¶
SBATCH --mail-type=END,FAIL¶
SBATCH --mail-user=my_email@unm.edu¶
SBATCH --output=slurm-%j.out¶
Change to the directory that you submitted your Slurm script from.¶
Without this, relative-path output files (like randnums.csv here)¶
may not end up where you expect, or may not get written at all.¶
cd "$SLURM_SUBMIT_DIR"
module load matlab
matlab -batch "my_program"
Important Notes¶
- MATLAB jobs must run on compute nodes, not login nodes.
- Do not run
.mfiles directly withsrun; they must be executed through MATLAB. - Use
srun --pty bashfor interactive compute access when debugging. - Easley uses Slurm. PBS may still exist on Hopper, but Slurm is recommended for all workflows.
Viewing Output¶
All output is written to:
```text id="z1r8tt"
slurm-
Commands Used (for Debugging)¶
```bash id="a8m3kf" module avail matlab
Request an interactive compute node session.
```bash id="u7p1wx" module load matlab
Run MATLAB script in batch mode.
```bash id="b5n7ld" sbatch my_matlab_job.sbatch
Monitor job output.
This QuickByte was validated on 6/23/2026
Migrated from UNM-CARC QuickBytes (last source update 2026-07-07). Spotted a problem? Open an issue or pull request.