Matlab

Jednoduché příklady na spuštění Matlab úloh najdete v adresáři /home/SOFT/modules/examples/Matlab/, který můžete zkopírovat do svého adresáře:

cp -r /home/SOFT/modules/examples/Matlab/ ./

v adresáři single jsou dva soubory, matlabovský skript „montecarlo_single.m“ a skript pro sbatch „slurm.sh“. Zadáním

cd single
sbatch slurm.sh

se ve frontovém systému spustí na jednom jádře program, jehož běh trvá cca 20-40s (na této úloze jsou rychlejší stroje kraken-m1,…-m6).

V adresáři „parallel“ je podobný příklad pro úlohu paralelizovanou přes 8 jader v rámci jednoho uzlu. Skript pro sbatch je:

#!/bin/bash
#SBATCH -J example_matlab
#SBATCH -N 1
#SBATCH -n 8
#SBATCH --time=2:00
#SBATCH -o slurm.%N.%J.%u.out # STDOUT
#SBATCH -e slurm.%N.%J.%u.err # STDERR
matlab -nodisplay -r "montecarlo_parallel;quit;"

Spuštění Matlab úlohy přes více uzlů není možné, protože není zakoupen „Matlab Parallel Server“. Ve spouštěcím skriptu je proto vždy nutné zachovat volbu

#SBATCH -N 1



Paralelní úloha: parpool

Paralelní metody v programech Matlabu jsou inicializovány funkcí „parpool“. Program využívající 8 jader musí v našem nastavení obsahovat

parpool('local', 8);

Lze ale doporučit automatické načtení počtu Slurmem alokovaných jader. Slurm totiž hodnotu definovanou „#SBATCH -n“ ukládá do systémové proměnné „SLURM_NTASKS“, kterou Matlab umí načíst

sz = str2num(getenv('SLURM_NTASKS'));
parpool('local',sz);