Efektywne wykorzystanie klastra Zeus w obliczeniach naukowych
Transkrypt
Efektywne wykorzystanie klastra Zeus w obliczeniach naukowych
Efektywne wykorzystanie klastra Zeus w obliczeniach naukowych Maciej Czuchry, Klemens Noga ACK Cyfronet AGH ACK Cyfronet AGH, 23 marca 2015 Plan szkolenia Rejestracja Dostęp do klastra Przeprowadzanie obliczeń klaster Zeus system kolejkowy szczegóły obliczeń najlepsze praktyki Dokumentacja i pomoc dla użytkowników 2 Dostęp do klastra Zeus Klaster Zeus pracuje w środowisku Linux -‐ Scientific Linux 6 Logowanie na węzeł dostępowy UI (User Interface) klastra: wykorzystując bezpieczny protokół SSH: ssh [email protected] w środowisku Windows np. programem PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/) tryb graficzny – zdalne wyświetlanie wykorzystując X11 (dla Windows jako serwer X11 np. Xming) kopiowanie plików scp plik [email protected]: w środowisku Windows np. program WinSCP (http://winscp.net/) Nie wolno wykonywać żadnych obciążających operacji na węźle dostępowym klastra Sprawiedliwym przydzielaniem zasobów zajmuje się system kolejkowy Torque/PBS 3 Dostęp do klastra Zeus Zeus składa się z węzła dostępowego (UI) oraz grup węzłów o różnych parametrach tradycyjne węzły (1198 węzłów, w tym 136 węzłów z dużą ilością RAM) vSMP – zespół maszyn wirtualnych (kilka węzłów) GPGPU – węzły zawierające procesory graficzne GPGPU (44 węzły, 208 kart GPGPU) Własność Zeus Zeus BigMem Zeus vSMP Zeus GPGPU Szybkość CPU 2.26-‐2.67 GHz 2.67; 2.30 GHz 2.67 GHz 2.93; 2.40 GHz RAM 16, 24 GB 96, 256 GB do 6 TB 72, 96 GB Ilość rdzeni na węźle 8, 12 12, 64 do 768 12 InafiniBand tak tak – tak Dodatkowe – – RAMDysk karty GPGPU 4 Zeus – systemy plików Składowanie danych -‐ dostęp po NFS (dość powolny, nie używać do obliczeń) $HOME – katalog domowy użytkownika quota 7 GB codzienny backup $STORAGE długotrwałe przechowywanie plików quota 100GB Dyski na pliki tymczasowe (tzw. scratch) $TMPDIR wskazuje na katalog lokalny na węźle obliczeniowym dostępny jedynie z węzła do którego jest podłączony dostępny tylko w trakcie wykonywania zadania $SCRATCH rozproszony system plików Lustre dostępny z każdego z węzłów klastra Dla użytkowników PL-‐Grid na podstawie grantów obliczeniowych (SLA) dostępna dodatkowa przestrzeń na składowanie plików ($PLG_GROUPS_STORAGE) 5 Oprogramowanie Modules – sposób zarządzania oprogramowaniem Aplikacje często wymagają specyficznego środowiska uruchomieniowego (m.in. zmiennych środowiskowych, dostępu do bibliotek) Narzędzie Modules umożliwia proste ustawianie środowiska uruchomieniowego dla programów niezależnie od specyfiki maszyny dostępowej. Zalety: łatwe ustawianie środowiska uruchomieniowego programów przenoszenie skryptów obliczeniowych między maszynami możliwość łatwego uruchamiania różnych wersji programów (często o skonfliktowanych środowiskach uruchomieniowych) transparentne dla użytkownika uruchamianie wersji zoptymalizowanych na konkretny typ węzła obliczeniowego Wady: jedno dodatkowe polecenie do zapamiętania 6 Oprogramowanie Każda aplikacja zainstalowana na klastrze Zeus ma swój moduł <gałąź>/<nazwa-oprogramowania>/<wersja> Rodzaje gałęzi apps -‐ dla większości programów naukowych compilers -‐ dla kompilatorów gpu -‐ dla programów naukowych wykorzystujących GPGPU libs -‐ dla bibliotek tools -‐ dla programów narzędziowych (np. Python) plgrid -‐ dla programów dostępnych w Infrastrukturze PL-‐Grid np. compilers/intel/14.0 lub apps/matlab/R2013b 7 Oprogramowanie Załadowanie środowiska umożliwiającego uruchomienie aplikacji module add <nazwa-modułu> (np. module add apps/gaussian) module load <nazwa-modułu> (np. module load apps/matlab) Usunięcie modułu module rm <nazwa-modułu> (np. module rm apps/gaussian) module unload <nazwa-modułu> (np. module unload apps/matlab) Listowanie wszystkich dostępnych modułów module avail module avail tools (tylko z poddrzewa tools) module avail apps/matlab (dostępne wersje oprogramowania Matlab) 8 Oprogramowanie Listowanie załadowanych modułów: module list Usuwanie wszystkich załadowanych modułów module purge Moduł ustawiający zmienną do rozproszonego zasobu na pliki tymczasowe ($SCRATCH): module add tools/scratch gdy ustawiany wewnątrz zadania obliczeniowego ustawia zmienną SCRATCHDIR wskazującą na katalog tymczasowy zadania utworzony na zasobie Lustre 9 System kolejkowy PBS System kolejkowy zarządza zleconymi zadaniami obliczeniowymi zarządza zasobami klastra przydziela zasoby zadaniom obliczeniowym dba o sprawiedliwą dystrybucję zasobów Zadania obliczeniowe są umieszczane w kolejkach (ang. queue) i uruchamiane w zależności od ich priorytetu. Priorytet zależy m.in. od: wielkości zasobów przyznanych w grancie obliczeniowym ilości zażądanych przez zadanie zasobów i ich dostępności szczególnie istotny jest maksymalny czas trwania obliczeń zasobów klastra zużywanych aktualnie przez danego użytkownika 10 System kolejkowy PBS -‐ komendy Użytkownik komunikuje się z systemem kolejkowym za pomocą komend PBS qsub qstat qdel qalter – umieszcza zadanie w kolejce – wyświetla status zadań – usuwa zadanie z kolejki – zmiana parametrów zakolejkowanego zadania Każde zadanie w systemie kolejkowym ma swój własny, unikalny identyfikator zadania tzw. jobID 11 System kolejkowy PBS – zlecania zadania Do umieszczenia zadania w kolejce systemu kolejkowego służy komenda qsub Komendy opisujące wykonywane zadanie mogą być zebrane w tzw. skrypt uruchomieniowy i przekazywane systemowi kolejowemu poleceniem qsub skrypt Przykładowy skrypt #!/bin/env bash #polecenia wykonywane po uruchomieniu zadania echo "Obliczenia uruchomione na WN:"; hostname module add apps/matlab matlab -nodisplay <matlab.m >matlab.out 12 System kolejkowy PBS – monitorowanie zadań Do sprawdzania statusów zadań w systemie kolejkowym służą komendy qstat lub zeus-jobs Statusy zadań: zakolejkowane Q działające R Dodatkowe przydatne filtry qstat –u $USER – informacja o zadaniach użytkownika $USER qstat –n <jobID> – informacja o węzłach przydzielonych zadaniu qstat -q – ogólna sytuacja na klastrze zeus-jobs wydajności zeus-jobs zeus-jobs zadaniach zeus-jobs -e- lub zeus-jobs –e+ - sortowanie po –w - zadania o niskiej wydajności -f (<jobID>) - szczegółowe informacje o –h - wyświetlenie pomocy 13 Dostępne kolejki Nazwa max czas Uwagi l_test 0:15:00 kolejka do testów l_prio 1:00:00 l_short 3:00:00 l_long 336:00:00 l_exclusive 336:00:00 zadania zajmujące całe węzły l_interactive 72:00:00 zadania interaktywne l_infinite 2160:00:00 * l_bigmem 336:00:00 węzły z dużą ilością pamięci* gpgpu 336:00:00 kolejka GPGPU* vsmp -‐ kolejka vSMP* domyślna * dostęp na żądanie qstat –Q –f <nazwa-kolejki> – szczegółowe parametry kolejki qstat <nazwa kolejki> – wyświetlenie zadań w konkretnej kolejce 14 PBS – przykładowy skrypt Gaussian #!/bin/env bash #polecenia wykonywane po uruchomieniu zadania echo "Obliczenia uruchomione na WN:"; hostname module add apps/gaussian g09 h2o.gjf Opcje PBS pozwalają dostarczyć systemowi kolejowemu informacje o zasobach, które zadanie zmierza zużyć. Sposób wywołania: w linii poleceń polecenia qsub [opcje PBS] w początkowych linijkach skryptu uruchomieniowego poprzedzone dyrektywą #PBS Opcje wyspecyfikowane w linii poleceń nadpisują opcje podane w skrypcie 15 PBS – przykładowy skrypt Gaussian #!/bin/env bash #polecenia wykonywane po uruchomieniu zadania echo "Obliczenia uruchomione na WN:"; hostname echo "Biezacy katalog:"; pwd cd $PBS_O_WORKDIR echo "Biezacy katalog:"; pwd module add apps/gaussian g09 h2o.gjf Skrypt zadania zawsze rozpoczynany jest w katalogu HOME na węźle obliczeniowym (WN). Przejście do katalogu, z którego wysłano skrypt przez zmienną PBS_O_WORKDIR 16 PBS – zmienne środowiskowe PBS dodaje zadaniom zmienne środowiskowe ułatwiające prace Zmienna Opis PBS_JOBID identyfikator zadania (jobID) PBS_O_WORKDIR ścieżka, z której wysłano zadanie do PBS PBS_NP ilość procesorów przydzielonych zadaniu PBS_NODEFILE plik z nazwami węzłów przydzielonych zadaniu PBS_GPUFILE plik z nazwami GPGPU przydzielonych do zadania PBS_NODENUM numer węzła obliczeniowego zadania (0 – n-‐1) TMPDIR ścieżka do katalogu na pliki tymczasowe Dodatkowo po załadowaniu modułu tools/scratch dostępne są zmienne SCRATCHDIR ścieżka do katalogu na pliki tymczasowe na zasobie Lustre 17 PBS – opcje polecenia qsub Dodatkowo po załadowaniu modułu tools/scratch dostępne są zmienne -q -N -I -X -l -t -M -m (a) kolejka definiuje kolejkę, do której skierowane zostanie zadanie nazwa ustawia identyfikator zadania zgłasza zadanie interaktywnie przenoszenie obrazu mechanizmem X11 zasób ustawia ilość zasobów potrzebnych zadaniu n-m,k,l uruchamia zadania tablicowe o numerach od n do m oraz k i l <adres e-mail użytkownika> powiadomienie mailowe bea wysyła powiadomienie na początku (b), końcu (e) lub przy błędzie Pominięcie -q kolejka umieszcza zadanie w domyślnej kolejce Użytkownicy PL-‐Grid -A id_grantu ustawia grant obliczeniowy, z którego będzie korzystać zadanie zadania bez wyspecyfikowanego grantu obliczeniowego nie zostaną przyjęte przez system kolejkowy (możliwość ustawienia grantu domyślnego) 18 PBS – specyfikacja zasobów Dostępne rodzaje zasobów (sprecyfikowane flagą -l) walltime maksymalny czas wykonywania zadania nodes ilość i rodzaj węzłów obliczeniowych mem maksymalna ilość pamięci wykorzystywanej przez zadanie pmem maksymalna ilość pamięci wykorzystywanej przez pojedynczy rdzeń obliczeniowy Wartości liczbowe parametrów podajemy jako parametr=wartość, poszczególne zasoby oddzielając przecinkami np. qsub -l walltime=10:00:00,nodes=1:ppn=12,mem=12gb Format parametrów czas hhh:mm:ss pamięć b, kb (=1024b), mb (=1024kb), gb (=1,024mb) węzły nodes=ilość-węzłów:ppn=liczba-rdzeni-nawęzeł:właściwości (np. nodes=2:ppn=12 – dwa węzły po dwanaście rdzeni) 19 PBS – specyfikacja zasobów #!/bin/env bash #PBS -l nodes=1:ppn=4 #PBS -l walltime=06:00 #PBS -l mem=128mb #PBS -q tutorial #polecenia wykonywane po uruchomieniu zadania echo "Obliczenia uruchomione na WN:"; hostname echo "Biezacy katalog:"; pwd cd $PBS_O_WORKDIR echo "Biezacy katalog:"; pwd module add apps/gaussian g09 czasteczka.gjf 20 PBS – zadania interaktywne Pracę interaktywną umożliwiają zadania interaktywne qsub –I qsub –I –X gdy potrzebny graficzny tryb wyświetlania Do pracy interaktywnej często przeznaczona jest specjalna kolejka (dla Zeusa jest to l_interactive) W przypadku użycia trybu graficznego należy pamiętać o zalogowaniu się na klaster z użyciem przekierowania wyświetlania X11 (np. ssh -Y -C login@serwer; w PuTTy "Enable X11 Forwarding") włączeniu serwera X11 na maszynie, z której następuje logowanie Nie wolno wykonywać żadnych obciążających operacji na węźle dostępowym (UI) klastra 21 PBS – usuwanie zadań -‐ qdel Do usuwania zadań z systemu kolejkowego służy komenda qdel qdel <JobID> Zadania, które są zawieszone, a nie można ich usunąć poleceniem qdel należy zgłaszać poprzez dla użytkowników KDM – [email protected] dla użytkowników PL-‐Grid -‐ Helpdesk PL-‐Grid PL https://helpdesk.plgrid.pl lub [email protected] 22 PBS -‐ Zmiana parametrów zadań – qalter Do zmian parametrów zadań w systemie kolejkowym służy komenda qalter qalter <jobID> [zmieniane_parametry] Przykładowe zastosowania qalter <jobID> -l nodes=x:ppn=y qalter <jobID> -l walltime=hhh:mm:ss qalter <jobID> -N nowa_nazwa_zadania qalter nie może zmieniać kolejki zadania oraz modyfikować parametrów uruchomionego zadania 23 Monitorowanie sprawności zadań -‐ zeus-jobs Narzędzie monitorujące sprawność wykonywania zadań wykorzystanie zadeklarowanych procesorów wykorzystanie pamięci Składnia – zeus-jobs sortowanie po sprawności zadań zeus-jobs -e- lub zeus-jobs -e+ zadania o niskiej wydajności zeus-jobs –w szczegółowe informacje o zadaniach zeus-jobs -f (<jobID>) wyświetlenie pomocy zeus-jobs –h 24 Monitorowanie sprawności zadań -‐ zeus-jobs-history Narzędzie monitorujące sprawność wykonywania zadań historycznych wykorzystanie zadeklarowanych procesorów wykorzystanie pamięci Składnia – zeus-jobs-history informacja o zadaniach z n poprzednich dni zeus-jobshistory –d <n> szczegółowe informacje o zadaniu zeus-jobs-history –f jobID wyświetlenie pomocy zeus-jobs-history –h 25 Zlecanie zadania – dobre praktyki Skrypt zadania zawsze rozpoczynany jest w katalogu HOME na węźle obliczeniowym. Przejście do katalogu, z którego wysłano skrypt przez zmienną PBS_O_WORKDIR Dla każdego zadania tworzone są automatycznie pliki zawierające standardowe wyjście nazwa.o<JobID> standardowe wyjście błędów nazwa.e<JobID> Powyższe pliki nie powinny być bardzo duże (nie więcej niż kilka MB). Gdy polecenia w skrypcie przekierowują dużą ilość danych na standardowe wyjścia należy wyspecyfikować jawnie przekierowanie do pliku standardowe wyjście komenda > plik.out standardowe wyjście błędów komenda 2> plik.err oba strumienie komenda &> plik.log 26 Zlecanie zadania – dobre praktyki Przy specyfikacji każdego zadania należy zawsze specyfikować maksymalny czas wykonania walltime unikać stosowania kolejki l_infinite specyfikować ilość pamięci wykorzystywanej mem (lub pmem) tworzyć pliki zapisujące kroki obliczeń umożliwiające restart (tzw. checkpointy) w przypadku zadań zrównoleglonych zajmować całe węzły obliczeniowe, zalecana kolejka l_exclusive gdy zadanie przekierowuje dużą ilość danych na standardowe wyjścia należy wyspecyfikować jawnie przekierowania do pliku środowisko obliczeniowe aplikacji i bibliotek ładować komendą module nie ładować modułów w plikach startowych powłok (np. .bashrc) 27 Zlecanie zadania – dobre praktyki Przy specyfikacji każdego zadania należy zawsze nie wykorzystywać do obliczeń $HOME i $STORAGE używać katalogów scratch lokalne dyski scratch (zmienna $TMPDIR) dostęp do danych tylko z jednego węzła duża liczba operacji odczytu/zapisu małych porcji danych (<<1MB) nieduże pliki (do ~10 GB) rozproszony zasób scratch (Lustre; $SCRATCH oraz $SCRATCHDIR) dostęp do danych z wielu węzłów duże pliki tymczasowe (10+GB) duże jednorazowe odczyty/zapisy (1+MB) potrzebny podgląd w trakcie wykonywania czyścić katalogi z plikami tymczasowymi po obliczeniach 28 Ćwiczenia Pliki niezbędne do ćwiczeń znajdują się na stronie: http://tinyurl.com/plgrid-‐chemia 29 Rejestracja: https://portal.plgrid.pl [email protected] +48 12 632 33 55 wew. 312 30