Prometheus:Podstawy: Różnice pomiędzy wersjami

Z Komputery Dużej Mocy w ACK CYFRONET AGH
Skocz do:nawigacja, szukaj
(→‎Zadania wykorzystujące GPGPU: Dodana informacja o dostępie do plgrid-gpu)
(→‎Zadania wykorzystujące GPGPU: Wydzielenie nowych sekcji)
Linia 134: Linia 134:
  
 
=== Zadania wykorzystujące GPGPU ===
 
=== Zadania wykorzystujące GPGPU ===
 +
 +
 +
 +
==== Dostęp do węzłów z GPGPU ====
  
 
Dla zadań korzystających w obliczeniach z kart GPGPU przeznaczona została specjalna partycja -  '''plgrid-gpu'''.
 
Dla zadań korzystających w obliczeniach z kart GPGPU przeznaczona została specjalna partycja -  '''plgrid-gpu'''.
Linia 139: Linia 143:
 
We wniosku o grant należy wyraźnie zaznaczyć, że wymagany jest dostęp do partycji '''plgrid-gpu'''.
 
We wniosku o grant należy wyraźnie zaznaczyć, że wymagany jest dostęp do partycji '''plgrid-gpu'''.
 
Każdy taki wniosek jest rozpatrywany indywidualnie przez Administratorów klastra.
 
Każdy taki wniosek jest rozpatrywany indywidualnie przez Administratorów klastra.
 +
 +
 +
==== Informacje ogólne ====
  
 
Karty GPU w systemie kolejkowym SLURM są rodzajem tzw. generic resources (GRES), a ich identyfikatorem jest "gpu".<br/>
 
Karty GPU w systemie kolejkowym SLURM są rodzajem tzw. generic resources (GRES), a ich identyfikatorem jest "gpu".<br/>
Linia 149: Linia 156:
  
 
Po zleceniu zadania system kolejkowy automatycznie ustawia zmienną środowiskową <tt>$CUDA_VISIBLE_DEVICES</tt> oraz zezwala na dostęp do zaalokowanych do kart.
 
Po zleceniu zadania system kolejkowy automatycznie ustawia zmienną środowiskową <tt>$CUDA_VISIBLE_DEVICES</tt> oraz zezwala na dostęp do zaalokowanych do kart.
 +
  
 
==== Zadania interaktywne ====
 
==== Zadania interaktywne ====
Linia 175: Linia 183:
  
 
<code>scancel 1234</code>
 
<code>scancel 1234</code>
 +
  
 
==== Zadania wsadowe ====
 
==== Zadania wsadowe ====

Wersja z 09:59, 25 lip 2016


Logowanie

Dostęp do klastra Prometheus realizowany jest za pośrednictwem maszyny dostępowej:

prometheus.cyfronet.pl

np.

ssh <plgtestowy>@prometheus.cyfronet.pl

Możliwe jest także użycie krótszego aliasu pro.cyfronet.pl.

Logowanie na maszynę dostępową możliwe jest poprzez SSH.

Dostępne oprogramowanie

Opis dostępnego oprogramowania znajduje się tutaj.

Dostęp do oprogramowania realizowany jest za pomocą narzędzia Lmod.

Partycje

Odpowiednikiem kolejek PBS dla systemu SLURM są partycje. Prometheus posiada aktualnie następujące partycje dostępne dla użytkowników:

Nazwa partycji Maksymalny czas
trwania zadania
Informacje
plgrid 72:00:00 Partycja domyślna
plgrid-testing 1:00:00 Partycja dla zadań testowych
plgrid-long 168:00:00 Patrycja o dla zadań o wydłużonym walltime (negocjowana w grancie)
plgrid-gpu 72:00:00 Patrycja o dla zadań wykorzystujących karty GPGPU (negocjowana w grancie)

Dokładne informacje na temat partycji można otrzymać przy pomocy polecenia

scontrol show partition [<nazwa_partycji>]

Uwagi:

  • Aktualnie dla wszystkich użytkowników udostępniona jest wyłącznie partycja plgrid. Dostęp do pozostałych partycji przyznawany jest na podstawie grantu właściwego i rozpatrywany jest indywidualnie dla każdego grantu.
  • Aby otrzymać dostęp do partycji innej niż plgrid, należy to wyraźnie zaznaczyć we wniosku o grant właściwy.
  • Dostęp do partycji plgrid-gpu wymaga zawnioskowania o oddzielny grant przeznaczony w całości wyłącznie na obliczenia z wykorzystaniem GPGPU.

Zasoby dyskowe

Lokalizacja Limit danych Limit liczby plików Przeznaczenie Sposób
dostępu
Przepustowość Pojemność Kopia
bezpieczeństwa
Możliwość wykonywania intensywnych
zapisów i/lub odczytów
Uwagi
$HOME 40 GB 1 000 000 katalog domowy użytkownika NFS 1 GB/s tak nie
$SCRATCH 100 TB 1 000 000 przestrzeń dla plików tymczasowych zadań Lustre 120 GB/s 5 PB nie tak dane starsze niż 30 dni
będą usuwane automatycznie
$PLG_GROUPS_STORAGE/<nazwa_zespołu> suma grantów przestrzeń dla katalogów zespołów (PL-Grid) Lustre 30 GB/s 2,5 PB nie nie

Zmienne środowiskowe

Osobiste:

  • $HOME, $PLG_USER_STORAGE, np. '/people/plgtestowy' - wskazuje na katalog domowy
  • $PLG_USER_SCRATCH_SHARED, $SCRATCH np. '/net/scratch/people/plgtestowy/' - scratch dla użytkownika - tu należy trzymać dane podczas obliczeń

Zespołowe (do nich należy dodać nazwę zespołu):

  • PLG_GROUPS_STORAGE, PLG_GROUPS_SHARED, np. '/net/archive/groups' - wskazuje na katalog do składowania danych zespołów (dane wejściowe, wyjściowe, wymiana danych pomiędzy osobami)

Uruchamianie zadań

Zlecanie zadań na klastrze Prometheus odbywa się poprzez system kolejkowy SLURM.

Zadanie może być zlecone zarówno w trybie wsadowym jak i w trybie interaktywnym.

Przed uruchomieniem zadań zapoznaj się z informacjami o systemie grantów

Tryb wsadowy

Do zlecania zadania w trybie wsadowym służy komenda sbatch. Użycie komendy: sbatch skrypt.sh.
Wszystkie opcje należy poprzedzić dyrektywą #SBATCH (koniecznie ze znakiem #).
Szczegółowe informacje: man sbatch oraz sbatch --help.

Przykładowy skrypt:

UWAGA! To jest przykładowy skrypt, którego NIE NALEŻY uruchamiać. Przed jego uruchomieniem należy przeglądnąć podane opcje i dostosować je do własnych potrzeb, zmieniając m.i. nazwę grantu, nazwę partycji, czas trwania zadania, itp.

#!/bin/bash -l
## Nazwa zlecenia
#SBATCH -J ADFtestjob
## Liczba węzłów
#SBATCH -N 1
## Ilość zadań na węzeł
#SBATCH --ntasks-per-node=1
## Maksymalny czas trwania zlecenia (format HH:MM:SS)
#SBATCH --time=01:00:00 
## Nazwa grantu do rozliczenia zużycia zasobów
#SBATCH -A <grant_id>
## Specyfikacja partycji
#SBATCH -p plgrid-testing
## Plik ze standardowym wyjściem
#SBATCH --output="output.out"
## Plik ze standardowym wyjściem błędów
#SBATCH --error="error.err"


## przejscie do katalogu z ktorego wywolany zostal sbatch
cd $SLURM_SUBMIT_DIR

srun /bin/hostname
module load apps/adf/2014.07 
adf input.adf

Tryb interaktywny

Do zlecania zadań w trybie interaktywnym z powłoką służy komenda (przykład): srun -p plgrid-testing -N 1 --ntasks-per-node=1 -n 1 -A <grant_id> --pty /bin/bash -l Powyższa komenda uruchomi zadanie w partycji plgrid-resting na 1 węźle z alokacją 1 rdzenia.

Samo polecenie srun odpowiada za uruchomienie komendy w ramach zaalokowanych zasobów.
Jednak w przypadku, gdy zasoby nie zostały wcześniej zaalokowane, komenda ta uprzednio dokonuje ich rezerwacji tuż przed uruchomieniem obliczeń.

UWAGA: Tryb graficzny (poprzez protokół X11) dostępny jest jedynie na maszynie dostępowej klastra Prometheus.

Zadania wykorzystujące GPGPU

Dostęp do węzłów z GPGPU

Dla zadań korzystających w obliczeniach z kart GPGPU przeznaczona została specjalna partycja - plgrid-gpu. Aby móc przeprowadzać obliczenia z wykorzystaniem GPGPU konieczne jest złożenie wniosku o grant właściwy, który przeznaczony zostanie w całości wyłącznie na obliczenia z wykorzystaniem kart GPGPU. Grant taki nie powinien być używany do przeprowadzania obliczeń w partycjach innych niż plgrid-gpu. We wniosku o grant należy wyraźnie zaznaczyć, że wymagany jest dostęp do partycji plgrid-gpu. Każdy taki wniosek jest rozpatrywany indywidualnie przez Administratorów klastra.


Informacje ogólne

Karty GPU w systemie kolejkowym SLURM są rodzajem tzw. generic resources (GRES), a ich identyfikatorem jest "gpu".
Informację o tym na których węzłach/kolejkach znajdują się karty GPU można otrzymać np. przy pomocy komendy sinfo:

sinfo -o '%P || %N || %G'

Zlecanie zadań odbywa się poprzez podanie opcji --gres=gpu[:count] systemu kolejkowego.
W przypadku gdy nie ma podanej opcji count, system kolejkowy domyślnie alokuje jedną kartę na węźle obliczeniowym.

Po zleceniu zadania system kolejkowy automatycznie ustawia zmienną środowiskową $CUDA_VISIBLE_DEVICES oraz zezwala na dostęp do zaalokowanych do kart.


Zadania interaktywne

Przykładowo, gdy chcemy uruchomić zadanie interaktywne na jednym serwerze i zażądać 2 kart GPU:

srun -p plgrid-gpu -N 1 -n 24 -A <grant_id> --gres=gpu:2 --pty /bin/bash -l

Zadania interaktywne MPI

Uwaga! Wyjątkiem jest uruchamianie interaktywnych aplikacji MPI (np. w celach testów). Z powodu nieco innej obsługi kart GPU niż zwykłych procesorów przez system SLURM, uruchomienie zadania interaktywnego wymaga niestandardowej procedury.

Przykładowo, gdy chcemy uruchomić zadanie interaktywne na dwóch serwerach i zażądać 2 kart GPU na każdym z nich (łącznie 4 karty GPU) na czas 1 godziny:

salloc -p plgrid-gpu -N 2 --ntasks-per-node 24 -n 48 -A <grant_id> --gres=gpu:2 --time 1:00:00

Polecenie salloc zaalokowało nasze zadanie i zwróciło jego numer, przykładowo 1234.

Następnie uruchamiamy srun wymagając 0 kart GPU w zadaniu o numerze zwróconym przez salloc:

srun --jobid=1234 --gres=gpu:0 --pty /bin/bash -l

Otrzymaliśmy dostęp do powłoki na jednym z węzłów, teraz po załadowaniu odpowiedniego modułu MPI można już uruchomić własną aplikację za pomocą mpirun lub mpiexec. Aplikacja będzie miała dostęp do wszystkich kart GPU zaalokowanych w komendzie salloc, niezależnie od wymagania gpu:0 użytego w srun.

Po zakończeniu testów należy usunąć alokację za pomocą:

scancel 1234


Zadania wsadowe

Dla skryptu wsadowego dodatkowe zmiany nie są potrzebne, przykładowo gdy żądamy po jednej karcie na węzeł obliczeniowy, wystarczy dopisać do skryptu:

#SBATCH --gres=gpu


Uwaga: Wszelkie informacje na temat komend SLURMa można znaleźć w manualu, np.: man sbatch

Monitorowanie kolejek, partycji, węzłów, zadań i zasobów

  • Sktypty specyficzne dla Prometheusa
    • pro-jobs - statystyki dla uruchomionych zadań użytkownika
    • pro-jobs-history - statystyki dla zakończonych zadań użytkownika
    • pro-fs - statystyki użycia zasobów dyskowych przez użytkownika
  • Narzędzia systemu SLURM
    • squeue - lista aktualnie zakolejkowanych/uruchomionych zadań
    • scontrol show job [<ID_zadania>] - szczegóły zadania
    • sstat -a -j <ID_zadania>/<ID_zadania.batch> - zużycie zasobów w ramach kroków (step) działającego zadania
    • sacct - zużycie zasobów zakończonego już zadania/kroku
    • scontrol show partition [<nazwa_partycji>] - właściwości partycji
    • sinfo - lista węzłów
    • scontrol show node [<nazwa_węzła>] - właściwości węzła


Przenoszenie danych z klastra Zeus

Klastry Zeus i Prometheus nie współdzielą żadnych zasobów dyskowych, w związku z tym, aby korzystać z danych zgromadzonych na Zeusie, należy je najpierw skopiować. W tym celu możemy posłużyć się komendami:

  • scp - w przypadku małych plików (używa loginu i hasła),
  • globus-url-copy - w przypadku dużych plików (używa loginu i hasła LUB grid proxy),
  • uberftp - w przypadku dużych plików, interaktywnie (używa grid proxy).


Podstawowe informacje o komendzie globus-url-copy:

  • składnia: globus-url-copy ŻRÓDŁO CEL, gdzie źródło i cel poprzedzone są nazwą protokołu: np. file://,
  • aby pobrać pliki z zeusa używamy 2 protokołów:
    • gsiftp - gsiftp://zeus.cyfronet.pl/ - uwierzytelnianie za pomocą proxy (musimy najpierw stworzyć grid proxy komendą grid-proxy-init),
    • sshftp - sshftp://zeus.cyfronet.pl/ - uwierzytelnianie hasłem PLGrid,
  • uwierzytelnianie proxy pozwala uruchamiać wiele transferów bez podawania hasła za każdym razem,
  • protokół docelowy to file:// czyli plik/katalog lokalny,
  • dla ŻRÓDŁA i CELU musimy podać pełną ścieżkę pliku lub możemy użyć skrótu w postaci ~plgLOGIN do naszego katalogu domowego,
  • dla CELU (czyli protokołu file://) możemy podać też zmienne środowiskowe np. $PWD - bieżący katalog,
  • w przypadku CELU gdy podamy nazwę pliku np. $PWD/nazwa.txt, plik zapisze się pod daną nazwą, a gdy podamy tylko katalog, to plik zapisze się pod taką samą nazwą jak źródłowy,
  • aby przesyłać całe katalogi, należy je najpierw spakować komendą tar -czf archiwum.tar katalog,
  • w przypadku gdy nasz login na klastrze Prometheus różni się od tego na klastrze Zeus możemy użyć wyłącznie protokołu "sshftp://" a do ŹRÓDŁA należy dodać login na klastrze Zeus np. sshftp://MOJ_USERNAME@zeus.cyfronet.pl/.


Przykład użycia komendy globus-url-copy:

  • skopiuj z katalogu domowego użytkownika plgLOGIN na klastrze Zeus, do bieżącego katalogu plik "bigfile.txt" i nadaj mu tą samą nazwę:
globus-url-copy sshftp://zeus.cyfronet.pl/~plgLOGIN/bigfile.txt file://$PWD/
  • skopiuj plik "/mnt/gpfs/work/plgrid/groups/plggGROUP_NAME/bigfile.txt" z klastara Zeus do bieżącego katalogu:
globus-url-copy sshftp://zeus.cyfronet.pl//mnt/gpfs/work/plgrid/groups/plggGROUP_NAME/bigfile.txt file://$PWD/
  • j.w. ale z podanym loginem z klastra Zeus (domyślnie używany jest taki sam użytkownik na jakiego jesteśmy zalogowani)
globus-url-copy sshftp://MOJ_USERNAME@zeus.cyfronet.pl//mnt/gpfs/work/plgrid/groups/plggGROUP_NAME/bigfile.txt file://$PWD/


Odnośniki do dodatkowych pomocy/dokumentacji:

Zasady obowiązujące na klastrze Prometheus

  • Obliczenia wykonywane na maszynie dostępowej będą usuwane bez ostrzeżenia
  • Obliczenia wykraczające poza zakres deklarowanego tematu badań zużywające znaczną część zasobów klastra będą usuwane bez ostrzeżenia
  • W celu skompilowania programu proszę użyć polecenia: srun -p plgrid -A grant_id -n 1 --pty /bin/bash -l
    Polecenie to spowoduje zalogowanie użytkownika na węzeł obliczeniowy, tam proszę uruchomić kompilację programu
  • Dane obliczeniowe należy składować i przetwarzać na systemie plików Lustre pod lokalizacją $SCRATCH
  • W obliczeniach nie należy korzystać z katalogu /tmp, do przechowywania plików tymczasowych należy wykorzystywać katalogi znajdujące się pod zmiennymi $SCRATCH, $SCRATCHDIR lub $TMPDIR
  • Na maszynie dostępowej ustawiony jest limit pamięciowy 6 GiB dla sumy wszystkich procesów danego użytkownika. Próba przekroczenia limitu powoduje automatyczne zabicie procesu próbującego przekroczyć ustalony limit.

Kontakt

Pomoc dla użytkowników PL-Grid: Helpdesk PL-Grid
Kontakt z administratorami: prometheus@cyfronet.pl, +48 12 632 33 55 w. 603