Wprowadzenie do obliczeń na komputerach ICM
Transkrypt
Wprowadzenie do obliczeń na komputerach ICM
Wprowadzenie do obliczeń na komputerach ICM Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.pl 2013-02-20 Maciej E. Marchwiany Szymon Jaranowski [email protected] [email protected] Dobre praktyki obliczeń wielkoskalowych 1 www.wielkiewyzwania.pl 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 2 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 3 Plan Sieć i zasoby komputerowe ICM Dostęp do zasobów ICM Podstawy pracy z systemem Linux/UNIX Środowisko użytkownika Uruchamianie zadań Ćwiczenia 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 4 Sieć i zasoby komputerowe ICM 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 5 ICM sieć ssh halo2 ssh [email protected] ssh notos gw / delta ssh boreasz 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 6 Komputery w ICM maks. rozmiar zadania równoległego węzeł KOMPUTER CPU / czas pamięć halo2 16 rdzeni 16 GB Linux x86_64 16 rdzeni 32 GB Sun Constellation 64 rdzenie / 168 h 512 GB notos Linux ppc32 pamięć 512 rdzeni 1 TB 2048 rdzeni / 1 min 4 rdzenie / 32 h 4 GB 32 rdzenie / 24 h 128 GB IBM Blue Gene/P boreasz AIX ppc64 CPU / czas (kolejka do testów skalowalności) 2 TB 2432 rdzenie / 5 h 9,7 TB 512 rdzeni / 24 h 2 TB IBM Power 775 grom 2013-02-20 Obliczenia na kartach graficznych (Nvidia GeForce 480 GTX). Niestadardowy dostęp! Dobre praktyki obliczeń wielkoskalowych 7 Dostęp do zasobów ICM 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 8 ICM sieć ssh halo2 ssh [email protected] ssh notos gw / delta ssh boreasz 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 9 ICM logowanie WIN 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 10 ICM logowanie WIN [email protected] [email protected] 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 11 ICM logowanie WIN 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 12 ICM logowanie Linux Zdalne logowanie ma maszyny: ssh [email protected] ssh [email protected] Otwieranie sesje X-Window na zdalnych maszynach: ssh –YC [email protected] Logujemy się na węzeł dostępowy gw/delta, a z niego na maszyne obliczeniową przez: ssh nazwa_maszyny Np: ssh halo2 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 13 Podstawy pracy z systemami Linux/UNIX 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 14 terminal 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 15 Logowanie Na każdej z maszyn obliczeniowych odseparowany katalog domowy Logowanie tylko przez ssh Niektóre komputery wymagają wcześniejszego zgłoszenia w celu dostępu [email protected] Powłoka użytkownika Domyślna powłoka użytkownika (shell) – tcsh Wyjątek Blue Gene/P notos – bash Zmiana domyślnej powłoki nie jest możliwa Użytkownik ma swoje konto (login) Na wszystkich komputerach (i na poczcie) ten sam login i hasło jak na delcie Korzystamy tylko ze swojego konta (regulamin ICM) 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 16 ls Wyświetlanie zawartości katalogów ls – wyświetla zawartość bieżącego katalogu ls sciezka_dostepu – wyświetla zawartość wskazanego katalogu ls *.roz – wyświetla wszystkie pliki z rozszerzeniem .roz przydatne opcje: -a – wyświetla ukryte pliki -t – sortowanie według czasu modyfikacji -r – odwraca kolejność sortowania -l - wyświetla pełną informacje 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 17 System plików Korzeń drzewa „root” / Pliki systemowe urządzenia Katalogi domowe Katalogi użytkownika /var /etc /bin /lib ... /mnt ... /doc /photo /outy /test ... lfs quota /home - wyświetla limity dyskowe 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 18 Poruszanie się pwd – wyświetla aktualną ścieżkę dostępu Wejście do katalogu: cd sciezka_dostepu Przydatne katalogi: ./ – bieżący katalog ../ – katalog o poziom wyżej ~/ – katalog domowy / – root Np: cd ../ – przejście o poziom wyżej Ścieżki dostępu ścieżka bezwzględna: /home/users/mfroncz/docs/README.txt ścieżka względna: docs/README.txt 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 19 Tworzenie i niszczenie Tworzenie nowego katalogu mkdir katalog Kasowanie pliku: rm plik Kasowanie pustego katalogu: rmdir katalog Kasowanie katalogu wraz z zawartością: rm -rf katalog UWAGA! Nieodwracalne. 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 20 Kopiowanie Kopiowanie plików: cp plik_zrodlo plik_cel Np: cp a.out spline.exe cp sciezka_do_kat/plik_zrodlo sciezka_do_kat/plik_cel Np.: cp ./test/out.out ../testy/test1.out Jeśli nie chcemy zmieniać nazwy pliku wystarczy podać katalog docelowy: cp ./test/test1.out ../testy/ Kopiowanie katalogów – opcja -r: cp -r kat_zrodlo kat_cel mv – zamiast kopiowania zastępuje (kopiuje i usuwa źródło) 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 21 Pliki Oznaczenia plików: * – wszystkie pliki plik.* – pliki o nazwie plik i dowolnym rozszerzeniu *.roz – wszystkie pliki o rozszerzeniu .roz a* – wszystkie pliki zaczynające się od „a” Rozszerzenia plików Rozszerzenia plików są dowolne. Powinny jednak sugerować użytkownikowi rodzaj zawartość pliku. Niektóre programy wymagają określonej nazwy pliku i/lub rozszerzenia. 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 22 Podgląd plików Podgląd plików: file plik – opisuje typ pliku cat plik – wyświetla zawartość pliku na ekranie (wyjście std.) more plik – wyświetla zawartość pliku z opcją przewijania less plik – wyświetla zawartość pliku z opcją przewijania wstecz Podstawowe komendy (przeglądanie plików): q – wyjście, /wzorzec – szukanie wzorca Przeszukiwanie plików: grep ’wzorzec’ pliki Np: grep ’H2’ prot.pdb 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 23 nano nano plik – otwiera plik do edycji nano –w plik – otwiera plik do edycji bez zawijania wierszy Podstawowe komendy: Ctrl + x – wyjście Ctrl + c – zapisanie Ctrl + w – szukanie F2 – wyjście z zapisaniem 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 24 vim vim plik.txt – otwiera plik Podstawowe komendy: :w – zapisywanie :q – wyjście :wq – zapisanie i wyjście :cq – wyjście bez zapisywania i – wejście w tryp edycji o – przejście do nowej lini i trybu edycji dd – usunięcie całej lini /wzorzec – znajdowanie wzorzec Esc – wyjście z trybu edycji 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 25 Prawa dostępu do plików i katalogów Użytkownicy podzieleni są na: • właściciel pliku (user) • grupa, do której należy właściciel (group) • pozostali użytkownicy (others) Prawa do operacji na pliku: • prawo do odczytu (read) • prawo do zapisu (write) • prawo do wykonywania (execute) 263:spj@halo2:/home/staff/spj/szkolenie# abc plik1 plik2 264:spj@halo2:/home/staff/spj/szkolenie# total 12 drwxr-xr-x 2 spj users 4096 Feb 19 16:46 -rw-r--r-- 1 spj users 23 Feb 19 16:45 -rw-r--r-- 1 spj users 37 Feb 19 17:56 ls ls -l abc plik1 plik2 Wszystkie pliki domyślnie mogą być czytane przez wszystkich. 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 26 Zmiana praw dostępu chmod – zmienia prawa dostępu Kombinacja: 1) litera: u (user), g (group), o (others), a (all) 2) operator: = (ustawienie na podane prawa) + (dodanie praw) - (odjęcie praw) 3) prawo dostępu: r (read), w (write), x (execute) Np: chmod g-w,o-rw test.exe chmod g-r szkolenie/plik2 chmod a-w plik1 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 27 Praca w systemie Linux Uruchamianie programów ./test.exe Uruchamianie z parametrami ./test2.exe input.xyz Przekierowanie wyjścia do pliku: ./test.exe >> plik.out Przydatne skróty Tab – dokańcza ścieżkę/nazwę pliku/komendę (jeśli jest jednoznaczna) Ctrl + d – pokazuje możliwe dokończenia / kończy sesję Ctrl + c – przerywa działanie programu Ctrl + l – czyści terminal up/down – poruszanie się po historii używanych komend 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 28 tar Pakowanie pliku z wyświetleniem pakowanych plików/katalogu: tar -cvf plik.tar plik_do_pakowania tar -zcvf plik.tar.gz plik_do_spakowania tar –jcvf plik.tar.bz2 plik_do_spakowania tar –Jcvf plik.tar.xz plik_do_spakowania Rozpakowanie pliku: tar -xvf plik.tar tar -zxvf plik tar.gz tar -jxvf plik.tar.bz2 tar -Jxvf plik.tar.xz Na Boreaszu: /opt/freeware/bin/tar Otwierać spakowane pliki można także przez mc 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 29 mc 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 30 man Wyświetlenie manuala dla polecenia: man polecenie Np: man man Pozwala znaleźć: • nazwy poleceń podobnych i stowarzyszonych. • składnia • krótki opis • szczegółowy opis opcji 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 31 WIN a UNIX Znak końca linii: DOS: ^M^R UNIX: ^R Konwertowanie plików z WIN do UNIX: dos2unix plik 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 32 Ćwiczenie 1 1. Utworzyć katalog „cw” (mkdir). 2. Wejść do niego (cd). 3. Skopiować (cp) do niego plik /workspace/spj/RomeoAndJuliet.tar.gz 4. Rozpakować (tar). 5. Znaleźć błąd: „JULIA” zamiast „JULIET” (grep). 6. Poprawić ten błąd (nano). 7. Usunąć cały katalog „cw” (rm). Środowisko użytkownika 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 34 Języki i kompilatory C/C++ (GNU, PGI, IBM [XL]) ze wsparciem MPI Fortran (77, 90, 95, 2003, 2008 - GNU, PGI, IBM [XL]) + MPI Python (2.x, 3.x) Java (implementacje Sun, Oracle, GNU, IBM) Debuggery (PDB oparte na DBX, w niedalekiej przyszłości TotalView) Biblioteki numeryczne BLAS, LAPACK (w tym zoptymalizowane wersje, takie jak ATLAS, ACML [AMD], ESSL [IBM]) FFTW PETSc, Hypre Inne na życzenie: [email protected] 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 35 module Wyświetlenie listy dostępnych modułów: module avail Wyświetlenie listy załadowanych modułów: module list Załadowanie moduł nazwa_modulu: module load nazwa_modulu Usunięcie załadowanego moduł nazwa_modulu: module rm nazwa_modułu module unload nazwa_modułu Np: module load pgi/11.10 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 36 Podstawy powłok systemowych Powłoka systemowa to program wykonujący polecenia, które wydajemy w terminalu Istnieją różne powłoki (sh, csh, tcsh, ksh, bash, zsh, inne) Najpopularniejszy w Linuxie – bash, w ICM domyślnie - tcsh Różnice w działaniu są niewidoczne na pierwszy rzut oka, ale: Operacja Bash tcsh Ustawienie zmiennej środowiskowej export ZMIENNA=WARTOSC setenv ZMIENNA WARTOSC Przekierowanie strumienia stdout do pliku program > plik program > plik Przekierowanie strumienia stderr program 2> plik - Przekierowanie stdout i stderr ze zlepieniem program > plik 2>&1 program >& plik Pętla for for i in `` do … done foreach i () … end Najwięcej różnic w składni skryptów 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 37 Zmienne środowiskowe Zmienne środowiskowe to specjalne zmienne używane i predefiniowane przez system operacyjny Przykładowe: $HOME $SHELL $USER $PWD $JAVA_HOME $PYTHONPATH Ustawienie wartości zmiennej Tcsh: setenv setenv PWD ’/opt/goto’ Bash: export export PWD=’/opt/goto’ 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 38 scp Kopiowanie plików do ICMu: scp -C -p plik [email protected]:~/ Kopiowanie plików z ICMu: scp -C -p [email protected]:~/plik ./ -C – włącza kompresje -p – zachowuje oryginalną datę stworzenia -r – kopiowanie podkatalogu Kopiowanie katalogów: scp -r -C -p katalog [email protected]: scp -r -C -p [email protected]:~katalog ./ 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 39 WinSCP gw.icm.edu.pl login 2013-02-20 hasło Dobre praktyki obliczeń wielkoskalowych 41 WinSCP praca 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 42 Dostęp do poczty Użytkownik powinien regularnie sprawdzać pocztę! Wszystkie informacje ważne dla użytkownika będą wysyłane drogą mailową. Nazwa skrzynki: [email protected] Dostęp do poczty: webmail mutt alpine przekierowanie poczty (plik .forward) programy pocztowe (np. Thunderbird) 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 43 webmail Adres: 2013-02-20 webmail.icm.edu.pl Dobre praktyki obliczeń wielkoskalowych 44 Sprawdzanie poczty w terminalu Sprawdzanie poczby w terminalu: mutt alpine 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 45 mutt komendy Podstawowe komendy: q – wyście d – usunięcie maila u – cofnięcie usunięcia maila s – zapisanie m – nowy mail r – odpowiedz na maila g – odpowiedz do wszystkich ? – wyświetla wszystkie możliwe komendy Tworzenie wiadomości: 1) Ustalenie adresata 2) Wpisanie tytułu 3) Edycja treści (jak w vim-ie) 4) Wysłanie Komendy przy wysyłaniu: y – wysłanie, t – zmiana adresata, c – dodanie kopii, a – dołączenie pliku, q – wyjście 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 46 Uruchamianie zadań 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 47 Podstawowy systemu kolejkowego System kolejkowy pośredniczy między użytkownikiem, a procesorami dedykowanymi do obliczeń Nie uruchamiamy programów samodzielnie System kolejkowy decyduje o przydziale zasobów i uruchamia kolejno zadania użytkowników Rodzaje systemów kolejkowych w ICM (2013) PBS/Torque – klastry x86 (halo2) LoadLeveler – Blue Gene/P, Power 775, Blue Gene/Q 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 48 System kolejkowy PBS/Torque (klastry) Podstawowe polecenia (halo2): qsub – wstawianie zadania do kolejki qstat – sprawdzanie statusu zadania wstawionego do kolejki qdel – usuwanie zadania z kolejki qalter – zmiana parametrów zadania w kolejce 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 49 System kolejkowy LoadLeveler (BlueGene) Podstawowe polecenia (notos, boreasz, nostromo): llsubmit – wstawianie zadania do kolejki llq – sprawdzanie statusu zadania wstawionego do kolejki llcancel – usuwanie zadania z kolejki llmodify – zmiana parametrów zadania w kolejce 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 50 Podstawy systemu kolejkowego W każdym systemie kolejkowym: Tworzymy zadanie, czyli: • opis wymaganych zasobów • instrukcje uruchamiające program lub programy W postaci tzw. skryptu kolejkowego – pliku tekstowego o określonej składni Skrypt kolejkowy jest argumentem dla poleceń qsub, llsubmit 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 51 Tworzenie skryptów Skrypt to plik tekstowy zawierający kolejne komendy do wykonania przez powłokę systemową Pierwsza linia to zawsze: #!/bin/sh Oznacza sposób wywołania powłoki, która będzie interpretować skrypt (interpreter) Kolejne linie zawierają polecenia systemowe i polecenia (tej) powłoki Znak # na początku linii oznacza komentarz #!/bin/sh echo ’Hello world!’ #koniec 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 52 System PBS Na przykładzie klastra Halo2 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 54 Halo2 - Skrypty PBS #!/bin/tcsh #PBS -N przyklad #PBS -q halo2 #PBS -A G01-77 #PBS -l nodes=1:ppn=16 #PBS -l mem=14gb #PBS -l walltime=02:00:00 #PBS -m abe #PBS -M [email protected] Blok dyrektyw PBS # ustaw srodowisko cd $PBS_O_WORKDIR/ Użycie zmiennej środowiskowej module load mpi Załadowanie modułu echo Job started at `date` # wykonaj obliczenia mpirun ./cpi Uruchomienie programu echo Job finished at `date` 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 55 Halo2 - Skrypty PBS #!/bin/tcsh Pierwsza linia skryptu zawiera ścieżkę do interpretera (shell), który ma wykonać skrypt na przydzielonym węźle obliczeniowym #PBS -N przyklad Nazwa zadania (widziana w kolejce) #PBS -q halo2 Nazwa kolejki #PBS -A G01-77 Projekt #PBS -l nodes=1:ppn=16 Liczna używanych węzłów oraz procesorów #PBS -l mem=14gb Całkowita pamięć przydzielona na zadanie #PBS -l walltime=02:00:00 Maksymalny czas wykonywania skryptu #PBS -m abe Opcje wysyłania maila #PBS -M [email protected] Adresat maila 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 56 Halo2 - #PBS -q Rodzaje kolejek • halo2 – duże zadania obliczeniowe, normalna praca • test – zadania testowe, bardzo krótkie zadania • bigmem – dedykowana dla zadań wymagających wiele pamięci • interactive – dedykowana dla zadań interaktywnych Nazwa kolejki Dyrektywa #PBS Test -q test halo2 Limit czasowy dla zadania Limit węzłów dla zadania 1:00:00 2 -q halo2 336:00:00 32 bigmem -q bigmem 168:00:00 5 interactive -q interactive 12:00:00 1 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 57 Halo2 - #PBS -A #PBS -A projekt projekt – nazwa grantu realizowanego w ICM przez użytkownika groups – wypisuje akceptowane nazwy grantów Dla użytkowników należących do wielu grantów obliczeniowych wymagane jest podanie właściwego grantu w skrypcie kolejkowym 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 58 Halo2 - #PBS -l #PBS -l nodes=1:ppn=16 Zadanie jest wykonywane na jednym węźle i szesnastu rdzeniach #PBS -l nodes=2:ppn=16 Zadanie jest wykonywane na dwóch węźle i po szesnaście rdzeni na każdym (w sumie 32 rdzenie) #PBS -l nodes=2:ppn=16+1:ppn=8 Zadanie jest wykonywane na trzech węzłach: dwa węzły po szesnaście rdzeni i jeden z ośmioma (w sumie 40 rdzeni) Całkowita pamięć przydzielona do zadania wynosi 15 GB Na węźle jest 16/32GB, ale część zajmuje system. Należy używać: • na mniejszych węzłach: mem=<15gb • na większych węzłach: mem=<30gb • aby użyć więcej pamięci: -q bigmem Maksymalny czas wykonywania zadania #PBS -l walltime=02:00:00 #PBS -l mem=15gb Format: hhh:mm:ss 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 59 Halo2 - #PBS –M/m #PBS -M mail[@host][,mail2[@host2]] Skrypt wysyła maila na wskazany adres Obsługiwane są tylko maile ICM'owe #PBS -m abe Opcje wysłania maila • a – mail jest wysyłany po zatrzymaniu skryptu • b – mail jest wysyłany po starcie skryptu • e – mail jest wysyłany po zakończeniu skryptu • n – mail nie jest wysyłany 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 60 Halo2 - Zmienne środowiskowe PBS •PBS_O_WORKDIR – ścieżka absolutna do katalogu z którego uruchamiane jest zadanie •PBS_JOBID – identyfikator zadania w systemie PBS •PBS_NODEFILE – ścieżka absolutna do pliku zawierającego nazwy węzłów obliczeniowych odpowiadające przydzielonym procesorom •PBS_TASKNUM – liczba dostępnych procesorów w ramach zadania Zmienne mogą być używane wyłącznie wewnątrz skryptu lub zadania interaktywnego. 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 61 Halo2 - Uruchamianie zadań System PBS qsub skrypt.pbs Wstawia skrypt.pbs do kolejki qsub może przyjmować jako argument komendy PBS qsub -q test skrypt.pbs Tryb interaktywny Pozwala na bezpośrednie uruchamianie obliczeń qsub -I -l nodes=2:ppn=16 -l mem=128mb -l walltime=1:00:00 \ -A G01-77 -q test Dostępny tylko na klastrach (PBS) 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 62 Halo2 - qstat qstat Wyświetla wszystkie zadania w kolejce -f wszystkie informacje o zadaniach -a cała informacja o zadaniach -i wyświetla niedziałające zadania -r wyświetla działające zadania -n wyświetla informacje o węzłach -G wyświetla informacje o zużyciu pamięci -u user wyświetla zadanie usera -q wyświetla informacje o zadaniach w kolejkach qstat -f job_id 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 63 Halo2 - qstat Job id ------------------------66043.halo2 74066.halo2 74069.halo2 74070.halo2 74268.halo2 74402.halo2 74403.halo2 74600.halo2 74641.halo2 74642.halo2 74867.halo2 75031.halo2 75628.halo2 75634.halo2 75680.halo2 75689.halo2 76223.halo2 76253.halo2 76277.halo2 76365.halo2 76382.halo2 76383.halo2 2013-02-20 Name ---------------quickstart hmcN14B11.0 hmcN14B14.0 hmcN14B15.0 jg5 run_3br1c run_3br2c hmcN14B10.0 run_g09 run_g09_2 energie39_ACCT_ ...4_SLAB12_asym 1TMG hmcN12B16.0 cfourtest go1 DOH_Zn1_A1_6 adrian1.obl MgbCAccsd.sh HMgC3Nccsd.sh gamess gamess User --------------krzywojc gabrielw gabrielw gabrielw kulcz taye taye gabrielw lesiuk lesiuk alimalek lju maria magiersk januszc broy hyperion rbalawen mpgro mpgro wojbur wojbur Dobre praktyki obliczeń wielkoskalowych Time Use -------0 4902:17: 1312:07: 1195:46: 4433:42: 4367:30: 4355:00: 1134:16: 4073:37: 4074:56: 492:07:0 3704:45: 10826:25 2636:42: 68:48:53 2499:40: 1952:25: 953:37:3 406:08:0 155:15:0 830:59:5 831:26:5 S Q R R R R R R R R R R R R C R R R R R R R R Queue ----halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 halo2 64 Halo2 - qdel/qalder qdel Job_id Usuwa zadanie Job_id z kolejki qalter Job_id [-opcja wartosc] Zmiena parametry skryptu W qalter opcje są takie same jak w qsub. Podaje się tylko zmieniane wartości. qalter 3215 -N test2 2013-02-20 Zmienia nazwę zadania 3215 na „test2” Dobre praktyki obliczeń wielkoskalowych 65 System LoadLeveler Na przykładzie Notos i Boreasz 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 66 Uruchamianie zadań – IBM LoadLeveler Zasoby obliczeniowe komputera Notos zarządzane są przez system kolejkowy IBM LoadLeveler Zadania wstawiamy do kolejki z katalogu domowego, tam trzymamy również input i output obliczeń Uruchom zadanie LoadLeveler Blue Gene mpirun Wstaw zadanie do kolejki Znajdź zasoby dla zadań i zdefiniuj partycje obliczeniowe Pobierz informację o zasobach i zadaniach Zadania Blue Gene Bridge API 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 67 Uruchamianie zadań – IBM LoadLeveler Podstawowe komendy: Komenda Krótki opis llsubmit Wstawia do kolejki zadanie LoadLeveler. llq Pokazuje zadania w kolejce (te uruchomione i te czekające na zasoby) wraz z dodatkową informacją. llq –s <job_id> Pokazuje więcej informacji o zadaniu, np. dlaczego wciąż stoi w kolejce, ile dokładnie zasobów zadeklarowaliśmy,.. llcancel <job_id> Usuwa zadanie z kolejki. llclass Pokazuje informację o aktualnie zdefiniowanych klasach. Wstawianie zadania do kolejki: llsubmit <jobfile name> 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 68 Przykładowe wywołanie: llq sheed@notos:~> llq Step Id Owner Account Job Name Class Size ST ------------------------ ----------- -------- -------------------- ---------- ------ -notos.1904.0 panecka G31-4 R53A_v3_b_P kdm-large I notos.1903.0 panecka G31-4 R53A_3_b_nP kdm-large I notos.1902.0 panecka G31-4 f_3_b_P kdm-large I notos.1901.0 panecka G31-4 K42A_3_b_nP kdm-large I notos.1900.0 panecka G31-4 full_v3_b_nP kdm-large I notos.1899.0 panecka icm-staf f_v3_99_nP kdm-large I notos.1898.0 panecka G31-4 K42A_v3_b_P kdm-large I notos.1897.0 panecka G31-4 K43Q_v3_b_P kdm-large I notos.1896.0 panecka G31-4 K43Q_3_b_nP kdm-large I notos.1890.0 memar icm-staf nwchem1 workshop 32 R notos.1863.0 fleon G31-4 kdm-large 512 R namd_ab 11 job step(s) in queue, 9 waiting, 0 pending, 2 running, 0 held, 0 preempted 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 69 Przykładowe wywołanie: llq -s sheed@notos:~> llq -s 1863 =============== Job Step notos.icm.edu.pl.1863.0 =============== Job Step Id: notos.icm.edu.pl.1863.0 Job Name: namd_ab Owner: fleon Queue Date: Fri 03 Jun 2011 11:05:13 AM CEST Status: Running Dispatch Time: Tue 07 Jun 2011 07:00:47 PM CEST Size Requested: 512 Size Allocated: 512 Partition Allocated: LL11060703200913 Base Partition List: R00-M0 IONodes Per BP: N00-J00,N01-J00,N02-J00,N03-J00,N04-J00,N05-J00,N06-J00,N07-J00,N08-J00,N09-J00,N10J00,N11-J00,N12-J00,N13-J00,N14-J00,N15-J00 Notify User: [email protected] LoadLeveler Group: G31-4 Class: kdm-large Wall Clk Hard Limit: 8+08:00:00 (720000 seconds) Wall Clk Soft Limit: 8+08:00:00 (720000 seconds) Account: G31-4 ==================== EVALUATIONS FOR JOB STEP notos.icm.edu.pl.1863.0 ==================== The status of job step is : Running Since job step status is not Idle, Not Queued, or Deferred, no attempt has been made to determine why this job step has not been started. 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 70 Notos - przykładowy skrypt (Przykłady w /opt/examples/loadleveler) # @ job_name = Ping_pong # @ account_no = grupa # @ class = kdm # @ error = ping_pong.err # @ output = ping_pong.out # @ environment = COPY_ALL # @ wall_clock_limit = 00:20:00 Blok dyrektyw LoadLeveler # @ notification = error # @ notify_user = $(user)@icm.edu.pl # @ job_type = bluegene # @ bg_size = 32 # @ queue mpirun -exe ping_pong -mode SMP -np 32 2013-02-20 Dobre praktyki obliczeń wielkoskalowych Uruchomienie programu 71 Notos – budowa skryptu kolejkowego Pola wymagane: Opcja Znaczenie # @ job_type = bluegene Ustawia typ zadania. Powinno być zawsze ustawione na bluegene. # @ bg_size = N Liczba węzłów obliczeniowych Blue Gene/P do rezerwacji, rozmiar partycji. # @ account_no = nr grantu Numer grantu obliczeniowego użytkownika. Używane w celach sprawozdawczych. # @ wall_clock_limit = HH:MM:SS Maksymalna długość działania zadania od momentu jego uruchomienia. # @ class = klasa Wybranie klasy zadania. Dostępne klasy: llclass. Nie wszyscy użytkownicy mają dostęp do wszystkich klas. # @ output = plik Nazwa pliku, do którego trafi przekierowanie standardowego strumienia wyjścia. Domyślnie /dev/null. # @ error = plik Nazwa pliku, do którego trafi przekierowanie standardowego strumienia błędu. Domyślnie /dev/null. 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 72 Notos – budowa skryptu kolejkowego Pola opcjonalne: Opcja Znaczenie # @ bg_connection = MESH/TORUS/PREFER_TOR US Określa sposób połączenia sieciowego pomiędzy węzłami. Domyślnie: MESH. # @ environment = env1; env2; .. Określa sposób kopiowania zmiennych środowiskowych użytkownika do środowiska obliczeniowego. Możliwe ustawienia: • COPY_ALL - wszystkie zmienne ze środowiska będą kopiowane, • $var - zmienna var ma być kopiowana do środowiska obliczeniowego, • !var - zmienna var nie ma być kopiowana do środowiska obliczeniowego, • var=value - zmienna var ma przyjąć wartość value w środowisku obliczeniowym. # @ job_name = nazwa zadania Ustawia nazwę zadania. Pod taką nazwą będzie widziane zadanie w systemie. # @ initialdir = dir Ścieżka roboczego katalogu obliczeń. 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 73 Notos – budowa skryptu kolejkowego Pola opcjonalne: Opcja Znaczenie # @ notification = typ Definiuje, w jakich przypadkach wysyłany jest mail do właściciela zadania. Możliwe argumenty: • error - gdy zadanie zakończyło się błędem, • start - gdy zadanie zaczęło się liczyć, • complete - gdy zadanie się zakończyło, • always - we wszystkich powyższych przypadkach, • never - nigdy. # @ notify_user = email Email użytkownika, do którego ewentualne maile będą wysyłane. Format argumentu: user[@host][,user[@host],...]. # @ bg_shape = <X>x<Y>x<Z> Definiuje ilość podstawowych partycji (midplane) w trzech kierunkach X, Y oraz Z. # @ bg_rotate = <true|false> Określa, czy scheduler LoadLeveler-a powinien rozpatrywać wszystkie możliwe obroty zadanego kształtu. Domyślnie true. 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 74 Podstawowe opcje mpirun (mpirun –h) Opcja Znaczenie -np ranks Ilość ranków MPI. -exe <executable> Nazwa pliku wykonywalnego zadania. -args „program args” Argumenty pliku wykonywalnego zadania. -cwd <path> Ścieżka katalogu roboczego zadania. -mode <SMP,DUAL,VN> Specyfikuje tryb pracy węzłów. • SMP – 1 rank, 4 threads • DUAL – 2 ranks, 2 threads each • VN – 4 ranks, 1 thread each Zależność pomiędzy trybem pracy węzłów, rozmiarem partycji oraz ilością ranków MPI Tryb VN: ilość ranków MPI = 4 x rozmiar partycji Tryb DUAL: ilość ranków MPI = 2 x rozmiar partycji Tryb SMP: ilość ranków MPI = rozmiar partycji 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 75 Zmienne środowiskowe Załóżmy, że chcemy przekazać środowisku obliczeniowemu ustawienia poprzez zmienne środowiskowe Ustawianie zmiennych środowiskowych w skrypcie LoadLeveler-a nie wystarczy Musimy wykonać to przy użyciu argumentu mpirun: -env „<nazwa zmiennej>=<wartość zmiennej>” (zmienne podawane pojedynczo) -exp_env „<nazwa zmiennej>” 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 76 Notos - aktualna konfiguracja LoadLeveler-a Klasa KDM – bez ograniczenia na ilość węzłów, wallclock – 1h, cputime – 32h, priorytet – 10 Przeznaczenie: podstawowe testy oprogramowania, kompilacja, uruchomienie, testy skalowalności do 512 węzłów Klasa KDM-LONG – bez ograniczenia na ilość węzłów, wallclock – 360h, priorytet – 85 Przeznaczenie: rozszerzone testy skalowalności, obliczenia Klasa POWIEW – bez ograniczeń na ilość węzłów, wallclock – 360h, priorytet – 90 Przeznaczenie: obliczenia 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 77 Boreasz- przykładowy skrypt #@ job_name = Calculations #@ output = $(job_name)_$(jobid) #@ error = $(job_name)_$(jobid) #@ account_no = G33-19 #@ class = kdm #@ node = 16 Blok dyrektyw LoadLeveler #@ tasks_per_node = 32 #@ wall_clock_limit = 08:00:00 #@ network.MPI = sn_all,not_shared,US,HIGH #@ notification = never #@ environment = COPY_ALL #@ job_type = parallel #@ queue mpiexec -n 512 ./executable 2013-02-20 Dobre praktyki obliczeń wielkoskalowych Uruchomienie programu 78 Boreasz – budowa skryptu kolejkowego Pola wymagane: Opcja Znaczenie # @ job_type = parallel Ustawia typ zadania. Powinno być zawsze ustawione na parallel. # @ node = N Liczba węzłów obliczeniowych do rezerwacji, rozmiar partycji. # @ tasks_per_node = K Ilość tasków MPI przypadających na jeden węzeł # @ account_no = nr grantu Numer grantu obliczeniowego użytkownika. Używane w celach sprawozdawczych. # @ wall_clock_limit = HH:MM:SS Maksymalna długość działania zadania od momentu jego uruchomienia. # @ class = klasa Wybranie klasy zadania. Dostępne klasy: llclass. Nie wszyscy użytkownicy mają dostęp do wszystkich klas. # @ output = plik Nazwa pliku, do którego trafi przekierowanie standardowego strumienia wyjścia. Domyślnie /dev/null. # @ error = plik Nazwa pliku, do którego trafi przekierowanie standardowego strumienia błędu. Domyślnie /dev/null. # @ network.MPI = mode Ustawienia sieci komunikacji (powinno być: sn_all,not_shared,US,HIGH) 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 79 Boreasz – budowa skryptu kolejkowego Pola opcjonalne: Opcja Znaczenie # @ notification = typ Definiuje, w jakich przypadkach wysyłany jest mail do właściciela zadania. Możliwe argumenty: • error - gdy zadanie zakończyło się błędem, • start - gdy zadanie zaczęło się liczyć, • complete - gdy zadanie się zakończyło, • always - we wszystkich powyższych przypadkach, • never - nigdy. # @ notify_user = email Email użytkownika, do którego ewentualne maile będą wysyłane. Format argumentu: user[@host][,user[@host],...]. # @ environment = env1; env2; .. Określa sposób kopiowania zmiennych środowiskowych użytkownika do środowiska obliczeniowego. Możliwe ustawienia: • COPY_ALL - wszystkie zmienne ze środowiska będą kopiowane, • $var - zmienna var ma być kopiowana do środowiska obliczeniowego, • !var - zmienna var nie ma być kopiowana do środowiska obliczeniowego, • var=value - zmienna var ma przyjąć wartość value w środowisku obliczeniowym. # @ job_name = nazwa zadania 2013-02-20 Ustawia nazwę zadania. Pod taką nazwą będzie widziane zadanie w systemie. Dobre praktyki obliczeń wielkoskalowych 80 Boreasz - aktualna konfiguracja LoadLeveler-a Klasa KDM – dostępna dla wszystkich użytkowników, przeznaczona do zadań krótkich, bez ograniczeń na ilość węzłów (max. 76), ograniczony czas CPU (12 288h), ograniczony czas walltime (24h), ograniczenie na ilość zadań (32), priorytet 70 Klasa KDM-LONG – dostępna dla wszystkich użytkowników, przeznaczona do zadań długich, ograniczona ilość węzłów na zadanie (16), ograniczony czas walltime (168h), ograniczenie na ilość zadań (6), priorytet 60 Klasa POWIEW – dostępna dla naukowców z POWIEW Klasa METEO – dostępna dla modelu prognozy pogody Uwaga: ustawienia systemu kolejkowego zmieniają się (informacje wyświetlane przy logowaniu oraz /opt/info/queuing_system) 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 81 Ćwiczenie 2 1. Skopiować plik z katalogu : /home/users/memar/szkolenie2013/ na delcie (scp). 2. Otworzyć plik job.pbs i dodac brakujące elementy. 3. Wstawić zadanie do kolejki (qsub). 4. Sprawdzić stan kolejki (qstat). 5. Przejrzeć pliki outputowe. Dziękujemy za uwagę! [email protected] www.icm.edu.pl/kdm 2013-02-20 Dobre praktyki obliczeń wielkoskalowych 83