W celu alokacji zasobów GPU, użytkownik musi posiadać nadane odpowiednie prawa dostępu. Aby je uzyskać należy napisać e-mail na adres kdm@wcss.pl.
Alokacja zasobów GPU odbywa się poprzez dodanie parametrów związanych z opowiednią partycją oraz QoS.
W tym momencie superkomputer Bem2 dysponuje następującymi zasobami:
węzeł | partycja | QoS | nazwa zasobu | karta | ilość |
---|---|---|---|---|---|
wn0223 | tesla | tesla | tesla | Nvidia Tesla P100 | 2 |
wn0224 | tesla | tesla | tesla | Nvidia Tesla P100 | 2 |
wn0124 | tesla | tesla | tesla | Nvidia Tesla P100 | 1 |
hgx8 | A100 | a100 | ampere | Nvidia Ampere A100 | 4 |
hgx8 | A100 | a100 | 2g.20gb | Nvidia MIG 2g.20gb (Ampere A100) | 8 |
hgx8 | A100 | a100 | 3g.40gb | Nvidia MIG 3g.40gb (Ampere A100) | 4 |
Opis kart oraz węzłów wraz z przykładami użycia znajduje się tutaj.
W celu sprawdzenia aktualnego stanu alokacji zasobów GPU na poszczególnych węzłach, należy wykonać polecenie:
$ gpu-occupation
CURRENT GPU ALLOCATION
wn0223:
tesla => 0/2
wn0224:
tesla => 1/2
wn0124:
tesla => 0/1
hgx8:
2g.20gb => 3/8
ampere => 4/4
3g.40gb => 3/4
W celu zaalokowania wybranego zasobu należy dodać następujące parametry podczas uruchamiania zadania:
-p ${partycja} --gres=gpu:${nazwa_zasobu}:${ilość}
Przykładowa komenda alokująca 1 całą kartę A100 (z domyślnym grantem użytkownika):
$ srun --pty --mem=4gb -N1 -c2 -t60 -p A100 --gres=gpu:ampere:1 /bin/bash
Przykładowa komenda alokująca 1 całą kartę P100 (z domyślnym grantem użytkownika):
$ srun --pty --mem=4gb -N1 -c2 -t60 -p tesla --gres=gpu:tesla:1 /bin/bash
GPU zazwyczaj nie jest potrzebne do budowania obrazu kontenera i nie należy go alokować do zadań realizujących tylko taką operację.
W celu przekazania do kontenera kart wcześniej zaalokowanych, należy użyć flagi --nv
.
Cała komenda uruchamiająca kontener z samodzielnie zbudowanym obrazem tensorflow_latest-gpu oraz przekazująca wszystkie zasoby GPU wygląda następująco:
$ apptainer run --nv tensorflow_latest-gpu/
Przy wyborze GPU należy pamiętać, że karty oznaczone jako MIG nie mogą być współdzielone, tzn. wybór do zadania 2 kart MIG umożliwia obliczenia jednynie na jednej z nich w obrębie jednego procesu.
Uruchomienie obliczeń np. za pomocą bilblioteki TensorFlow w języku Python pozwoli na użycie maksymalnie 1 karty MIG.
Ograniczenie to nie dotyczy pozostałych kart.