Skip to main content

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