Robin-hpc
From Robin
Contents |
Hardware and network configuration
The robin-hpc
is a shared resource for robins researchers and Master students. The strength of the machine is the amount of CPU cores and RAM. Unforunatly, there's no GPU available in this service.
Specs
CPU | RAM | OS | |
---|---|---|---|
login node | 2 cores/4 vCPU | 16GB | CentOS |
worrker node | 120 cores/240 vCPU | 460GB | CentOS |
Storage
Access
Apply for access using this link: https://nettskjema.no/a/robin-hpc
SLURM
Todo: emmaste
Software
Matlab R2019b
Todo: sebastto
Setting up the SLURM job script
#SBATCH --job-name=matlab_job #SBATCH --ntasks=1 #SBATCH --cpus-per-task 16 srun matlab -batch "addpath(genpath('/path/to/your/matlab/folder'));run('myScript.m')"
Running Matlab in batch mode is the most safe option for running MATLAB on a HPC. (From Mathworks documentation)[1]:
-batch statement
Starts without the desktop
Does not display the splash screen
Executes
statement
Disables changes to preferences
Disables toolbox caching
Logs text to
stdout
andstderr
Does not display modal dialog boxes
Exits automatically with exit code 0 if
script
executes successfully. Otherwise, MATLAB terminates with a non-zero exit code.
The addpath(genpath('/path/to/your/matlab/folder'))
part adds all files in the specified directory to the MATLAB search path. Afterwards we run the main script of your program with run('myScript.m')
.
Utilizing parallel computing in your MATLAB Script
When the SLURM worker node is setting up your job, a number of environment variables is set.
We can use the environment variable SLURM_CPUS_ON_NODE
to get the number of CPU cores available in our MATLAB script. In fact, we can use that variable to dynamically select the number of workers in the MATLAB parallel pool, so that your script works both on your own computer and on the HPC.
SLURM_CPUS_STR = getenv('SLURM_CPUS_ON_NODE'); % Delete parallel pool from earlier runs delete(gcp('nocreate')); if isempty(SLURM_CPUS_STR) % Run on personal computer (with however many cores your CPU has) parpool(6); else % Run on SLURM-scheduled HPC SLURM_CPUS_NUM = str2num(SLURM_CPUS_STR); parpool(SLURM_CPUS_NUM); end
Anaconda
Todo: emmaste
Podman
alias docker=podman