Ghid folosirea gridului instituțional
Conectarea în mod interactiv
Vom folosi două tipuri de cozi pentru folosirea a două tipuri de resurse:
- CPU:
- haswell;
- nehalem;
- GPU:
- dp;
- hpsl.
Logarea pe un nod în mod interactiv vom folosi următoarea comandă:
srun --pty -p <partiție> bash
Unde:
<partiție>: numele tipului de nod pe care va rula jobul (haswell, nehalem, dp, hpsl)
Exemplu
[sergiu.weisz@fep8 ~]$ srun --pty -p nehalem bash
[sergiu.weisz@nehalem-wn23 ~]$ hostname
nehalem-wn23.grid.pub.ro
[sergiu.weisz@nehalem-wn23 ~]$ exit
Submiterea unui job
Prin submiterea unui job înțelegem că apelăm programăm rularea unui script pe grid în cadrul unei partiții, atunci când vor fi resturse disponibile pentru acesta. Rularea unui script în acest mod este neinteractică.
sbatch [-t <timp-rulare>] -p <partiție> <cale-script>
Unde:
<timp-rulare>: timpul pe care îl are un job pentru a rula exprimat în formatul hh:mm:ss (default: 02:00:00); <partiție>: numele tipului de nod pe care va rula jobul (haswell, nehalem, dp, hpsl); <cale-script>: calea catre scriptul care va fi rulat pe grid.
Exemplu
[sergiu.weisz@fep8 ~]$ cat batch.sh
#!/bin/bash
hostname
[sergiu.weisz@fep8 ~]$ sbatch --time 01:00:00 -p nehalem ./batch.sh
Submitted batch job 82
[sergiu.weisz@fep8 ~]$ cat slurm-82.out
nehalem-wn23.grid.pub.ro
Listarea joburilor care rulează
În mod implicit un utilizator normal poate să ruleze doar două joburi în paralel în cadrul gridului.
squeue -u <username>
Unde:
<username>: numele de utilizator folist pentru logarea pe fep8.grid.pub.ro
Oprirea unui job
Putem să oprim rularea unui job de pe grid oricând folosind comanda scancel
, indiferent dacă acesta a început sa ruleze pe un nod sau nu.
scancel <jobid>
Parametri:
<jobid>: ID-ul jobului, afișat atunci când rulăm comanda srun
, sbatch
sau comanda squeue
Exemplu
[sergiu.weisz@fep8 ~]$ cat batch.sh
#!/bin/bash
sleep 10000
[sergiu.weisz@fep8 ~]$ sbatch -p nehalem ./batch.sh
Submitted batch job 83
[sergiu.weisz@fep8 ~]$ squeue -u sergiu.weisz
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
83 nehalem batch.sh sergiu.w R 0:22 1 nehalem-wn23.grid.pub.ro
[sergiu.weisz@fep8 ~]$ scancel 83
[sergiu.weisz@fep8 ~]$ squeue -u sergiu.weisz
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
Rularea joburilor multi-core
În mod default joburile lansate în grid rulează în format single core și sunt restricționate să ruleze doar pe un singur core folosind mecanismul cgroups.
Opțiunea -c
controlează numărul de core-uri la care să fie limitat jobul.
Pentru a rula într-un mediu limitat la opt threaduri, vom rula folosind următoarea comandă:
[sergiu.weisz@fep8 ~]$ srun -p nehalem -c 8 --pty bash
[sergiu.weisz@nehalem-wn15 ~]$
Folosirea GPU-urilor
Pentru a folosi GPU-uri pe noduri de compute din grid, este nevoie să cerem acces la acestea adăugănd opțiunea --gres
în felul următor la comanda sbatch
sau srun
:
[sergiu.weisz@fep8 ~]$ srun -p hpsl --gres gpu:1 --pty bash
...
SAU
...
[sergiu.weisz@fep8 ~]$ srun -p hpsl --gres gpu:tesla_k40m:1 --pty bash
Opțiunea --gres
permite utilizatorului să ceară acces la un număr de GPU-uri per job folosind opțiuena de forma --gres gpu:<număr gpu-uri>
sau --gres gpu:<model gpu>:<număr gpu-uri>
.
Pentru a lista modelele de GPU-uri împreună cu nodurile și partițiile pe care rulează acestea, putem rula următoarea comandă:
[sergiu.weisz@fep8 ~]$ sinfo -o "%10P %20N %10c %10m %25f %20G "
PARTITION NODELIST CPUS MEMORY AVAIL_FEATURES GRES
haswell haswell-wn[29-42] 32 128096 (null) (null)
nehalem* nehalem-wn[15-28] 24 48275 (null) (null)
hpsl hpsl-wn01 40 64371 (null) gpu:tesla_k40m:3
hpsl hpsl-wn[02-03] 40 64371 (null) gpu:tesla_k40m:2
dp dp-wn[01-04] 24 32146 (null) gpu:tesla_m2070:2
ml sprmcrogpu-wn[140-14 112 128763 (null) gpu:tesla_a100:2
ml ucsc480-wn151,xl270- 56+ 257690+ (null) gpu:tesla_p100:2
sprmcrogpu sprmcrogpu-wn13 64 515641 (null) gpu:rtx_2080ti:8