Skip to content

Navodila za uporabo programske opreme MATLAB

MATLAB je programska platforma, za analizo in načrtovanje sistemov, primarno za numerično računalništvo. Podpira matrične manipulacije, risanje podatkov, izvajanje algoritmov, razvoj uporabniških vmesnikov itd. Programi, napisani v MATLAB, lahko uporabijo knjižnice, ki so napisane v C, C++, Java in Fortran. Razvit s strani MathWorks, preberite več

Licenca

MATLAB je licenčna programska oprema, HPC Vega ponuja licenco Standard Concurrent, ki naj bi jo hkrati uporabljalo več uporabnikov.

  • MATLAB Distrib Comp Engine (skupaj je izdanih 4000 licenc)
  • MATLAB (skupaj izdana 200 licenca)

Akademski uporabniki lahko prosto uporabljajo MATLAB na HPC Vegi, komercialni uporabniki pa morajo prinesti svojo licenco. Za več informacij pišite na support@sling.si.

Alternativno: uporaba lastne licence

Podprta je alternativna možnost uporabe lastne licence. Če želite uporabiti lastno licenco, izvozite okoljske spremenljivke za licenčne datoteke.

export MLM_LICENSE_FILE=/pot/do/datoteke/license.dat

MATLAB je na voljo na HPC Vega kot modul.

module load matlab

Uporabniški vmesniki Matlab

Za grafični uporabniški vmesnik (GUI) mora biti na strani odjemalca omogočeno posredovanje X11, sicer se bo začela interaktivna seja prek ukazne vrstice (CLI). Najlažji način za preverjanje tega je echo $DISPLAY, če vrednost ni podana, X11 ne deluje pravilno.

Grafični uporabniški vmesnik (GUI)

matlab -display Xdisplay

Za vzpostavitev interaktivne seje, je potrebno najprej zahtevati Slurm alokacijo virov.

salloc --job-name=matlab-int \
       --time=00:30:00 \
       --partition=cpu \
       --nodes=1 \
       --ntasks=1 \
       --cpus-per-task=8 \
       --x11

Zagon taska na dodeljenih virih:

srun --pty bash

Najprej je potrebno naložiti modul Matlab:

module load matlab

Zagon skripte z grafičnimi komponentami (primer z grafom):

matlab -nodesktop -nosplash -r "run('matlabtest.m');"

Vmesnik ukazne vrstice (CLI)

matlab -nodisplay 

Za dodatne informacije o ukazih MATLAB naložite modul iz prijavnega vozlišča, ter preglejte razdelek za pomoč.

matlab -h

Primer naloge Slurm

Primer prikazuje nalogo, ki se bo izvajala na enem vozlišču in 8 jedrih. Naloga zahteva 4 GB RAM-a na jedro in se bo izvajala 5 minut, na particiji cpu.

Vsebina vhodne datoteke matlabtest.m:

function matlabtest
   disp('Hello from MATLAB!')
end

Vsebina skripte SBATCH:

#!/bin/bash

#SBATCH --job-name=matlab-test
#SBATCH --time=00:05:00
#SBATCH --partition=cpu
#SBATCH --nodes=1
#SBATCH --mem=4G
#SBATCH --cpus-per-task=8

module load matlab

matlab -batch matlabscript

Vhodna datoteka, na primer skripta shell ali sbatch, mora imeti končnico .m, izhod bo zapisan znotraj datoteke slurm-<jobid>.log.

Primer Singularity naloge

Vsebina skripte SBATCH:

#!/bin/bash

#SBATCH --job-name=matlab-test
#SBATCH --time=00:05:00
#SBATCH --partition=cpu
#SBATCH --nodes=1
#SBATCH --mem=4G
#SBATCH --cpus-per-task=8

singularity exec /ceph/hpc/software/containers/singularity/images/matlab-<verzija>.sif matlab -batch matlabscript

Za uporabnike, ki se želijo naučiti več o vzporednem programiranju v MATLAB, so na voljo dodatni viri.

Primer pošiljanja z ARC

Naprej boste potrebovali datoteko .xrsl, v kateri navedete potrebne računske vire za zagon naloge. Spodnji primer prav tako vsebuje dve vhodni datoteki.

&
(count = 8)
(countpernode = 1)
(jobname = matlab-test)
(inputfiles = 
  ("matlabscript.sh" "")
  ("matlabscript.m" "")
)
(executable = matlabscript.sh)
(outputfiles = ("example.out" ""))
(stdout=example.log)
(join=yes)
(gmlog=log)
(memory=8000)
(walltime="5 minutes")

Primer matlabscript.sh:

#!/bin/bash

#Priprava okolja
. /ceph/hpc/software/cvmfs_env.sh

#Nalaganje modula
module --ignore-cache load matlab

#Zagon skripte
matlab -batch matlabscript

Za dodatne primere, npr. matlabscript.m, preverite uradno dokumentacijo.

Dokumentacija