Table of Contents |
---|
Na Isabelli su dostupna tri poslužitelja Dell EMC PowerEdge C4140 s po:
...
Instalirani su NVIDIA alati i biblioteke:
- CUDA (verzije 9.0 i 10.0)
- cuDNN 7.3.1
- NCCL 2.3.5.
Pripremljeni su moduli za dostupne verzije CUDA Toolkita koji postavljaju sve CUDA varijable okoline:
Verzija | Modul | ||
---|---|---|---|
9. | 90 | cuda/ | 89-0 |
910.0 | cuda/910-0 | ||
10.1 | cuda/10-1 | ||
10.2 | cuda/10-2 | ||
11.0 | cuda/ | 1011-0 | |
11.1 | cuda/11-1 | ||
11.2 | cuda/11-2 | ||
11.3 | cuda/11-3 |
Pokretanje poslova
U nastavku je opisano podnošenje tipičnih aplikacija koji koje koriste grafičke procesore. Više informacija o pokretanju poslova možete pronaći na stranici Pokretanje i upravljanje poslovima, a o korištenju pojedinih aplikacija na Korisničke aplikacije i knjižnice.
Note |
---|
U svakom opisu posla obavezno treba koristiti cuda-wrapper.sh, kao u primjerima u nastavku. |
...
Verzija | Prevodilac | Verzija CUDA-e | Modul |
---|---|---|---|
MVAPICH2.2 | Intel 2017 | 9.0 | mpi/mvapich2-intel2017-cuda90-2.2-x86_64 |
MVAPICH2.2 | Intel 2018 | 10.0 | mpi/mvapich2-intel2018-cuda-2.2-x86_64 |
MVAPICH2.2 | Intel 2019 | 10.1 | mpi/mvapich2-intel2019-cuda101-2.2-x86_64 |
OpenMPI 1.10.7 | Intel 2019 | 10.0 | mpi/openmpi-intel-cuda-x86_64 |
OpenMPI 3.0.0 | Intel 2019 | 10.0 | mpi/openmpi3-intel-cuda-x86_64 |
U opisu je moguće koristiti sve tri paralelne okolineslučaju korištenja MVAPICH modula:
Code Block |
---|
#$ -cwd
#$ -pe gpu 8
module load <mpi modul>
mvapich-wrapper.sh aplikacija |
U slučaju korištenja OpenMPI modula:
Code Block |
---|
#$ -cwd #$ -pe gpu 8 module load <mpi modul> openmpi mpirun -np $NSLOTS cuda-wrapper.sh aplikacija |
Korištenje cijelih čvorova s grafičkim procesorima
...
Code Block |
---|
#$ -pe gpufull 8 module load <mpi modul> mpirun -np $NSLOTS cuda-mvapich-wrapper.sh aplikacija |
Korištenje više procesorskih jezgri
...
Code Block |
---|
#$ -l cores <broj_jezgri> |
Note |
---|
U svakom opisu posla obavezno treba koristiti odgovarajući wrapper s obzirom na vrstu posla:
|
BITNO:
- navedeni broj se odnosi na broj procesorskih jezgri po zahtijevanom grafičkom procesoru. Ukoliko korisnički posao zahtijeva 6 grafičkih procesora i 24 procesorske jezgre potrebno je navesti:
Code Block |
---|
#$ -pe gpu 6 #$ -l cores=4 cudamvapich-wrapper-nopin.sh aplikacija |
- čvorovi raspolažu s 20 procesorskih jezgri pa je to potrebno uzeti u obzir prilikom navodjenja navođenja parametra
- prilikom korištenja cijelih čvorova nije potrebno navoditi ovaj parametar
Warning |
---|
Broj zahtijevanih procesorskih jezgara ograničen je s obzirom na broj traženih grafičkih procesora. Maksimalne vrijednosti dane su u sljedećoj tablici: |
Broj grafičkih procesora | Maksimalan broj procesorskih jezgri po grafičkom procesoru |
---|---|
1 | 17 |
2 | 9 |
3 | 6 |
Korištenje scratch diska
Za poslove koji zahtijevaju čest nasumičan pristup podacima na disku, kao što su TensorFlow i PyTorch poslovi, preporuča se korištenje diskova na radnim čvorovima. Općenite upute o korištenju scratch diskova mogu se pronaći na Pokretanje i upravljanje poslovima.
Za svaki korisnički posao automatski se kreira privremeni direktorij na disku na radnom čvoru, do kojeg je putanja spremljena u SGE varijablu okoline $TMPDIR. Primjer prebacivanja podataka na radni čvor:
Code Block | ||||
---|---|---|---|---|
| ||||
#!/bin/bash
#$ -N scratch_1
#$ -cwd
#$ -o output/scratch.out
#$ -j y
#$ -pe gpu 1
#$ -l scratch=100
# neka su podaci koje aplikacija koristi spremljeni u $HOME/data/data.tar
mkdir -p $TMPDIR/data
tar xf -C $HOME/data/data.tar $TMPDIR/data/
cuda-wrapper.sh python3.5 moja_aplikacija.py |
Warning |
---|
Privremeni direktorij na /scratch disku se automatski briše nakon završetka posla. Ukoliko se tokom izvođenja aplikacije generiraju bitni izlazni podaci, potrebno ih je unutar skripte za opis posla kopirati u home direktorij. |
Nadzor GPU poslova
Za pregled svih korisničkih poslova koji se izvršavaju na čvorovima s grafičkim procesorima koristi se naredba:
Code Block |
---|
$ qstat -u "*" -q gpu.*.q |
Ili je moguće koristiti naredbu gpustat koja pruža informaciju o poslovima koji se izvršavaju, na kojim procesorima se izvršavaju te kakvo opterećenje stvaraju:
Code Block |
---|
$ gpustat |
Za pregled poslova u redu čekanja za radne čvorove s grafičkim procesorima koristi se naredba:
Code Block |
---|
$ gpuqw |