Wprowadzenie do obliczeń na komputerach ICM

Podobne dokumenty
Podstawy systemu kolejkowego SLURM

Migracja obliczeń na system Hydra

Wprowadzenie do obliczeń na komputerach ICM

Wprowadzenie do obliczeń na komputerach ICM

Pracownia Technik Obliczeniowych

Wprowadzenie do obsługi systemów obliczeniowych PCSS

Efektywne wykorzystanie klastra Zeus w obliczeniach naukowych

BASH - WPROWADZENIE Bioinformatyka 4

Użytkowanie systemów obliczeniowych PCSS Artur Trojanowski

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

Pracownia Komputerowa wykład II

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Pracownia Komputerowa wyk ad II

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

Skrócony Poradnik Użytkownika

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Znaki globalne w Linuxie

1 Przygotował: mgr inż. Maciej Lasota

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

Pracownia Komputerowa wykład III

Wykorzystanie klastra Wydziału Informatyki PB do prowadzenia własnych obliczeń. Wojciech Kwedlo Wydział Informatyki PB

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Bartosz Bosak Piotr Kopta Tomasz Piontek

Pracownia komputerowa. Dariusz wardecki, wyk II

Niektóre katalogi są standardowymi katalogami zarezerwowanymi do użytku przez system. Znaczenie wybranych katalogów systemowych jest następujące:

Uruchamianie zadań w środowisku CLUSTERIX z wykorzystaniem klienta tekstowego systemu GRMS

Wstęp do systemu Linux

trainxx tramxx

Wstęp do systemów wielozadaniowych laboratorium 02 Praca w systemie plików

Linux: System Plików

Efektywne wykorzystanie klastra Zeus w obliczeniach wykonywanych pakietem Blender. Maciej Czuchry, Klemens Noga

W pierwszej kolumnie wyświetlany jest identyfikator procesu (pid)

Architektura systemów informatycznych WPROWADZENIE DO SYSTEMU LINUX

Wstęp do obsługi Linux a

ZAJĘCIA Komendy Linux WB -> w konsoli tty2 finger exit man pwd pwd finger ls man ls. -> po 2 minusach interpretacja słowa

Kurs systemu Unix wykład wstępny. Kurs systemu Unix 1

Bash - wprowadzenie. Bash - wprowadzenie 1/39

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

Chemiateoretyczna. Monika Musiał. Ćwiczenia

Technologie Informacyjne - Linux 2

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy ćwiczenie b

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

System operacyjny Linux wybrane zagadnienia. Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu

Konsola Linux. autor: Mariusz Barnaś

Podstawy używania konsoli tekstowej w systemie Linux. Andrzej Zbrzezny

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Pracownia Komputerowa wykład III

Spis treści. Rozdział 3. Podstawowe operacje na plikach...49 System plików Konsola Zapisanie rezultatu do pliku... 50

Wstęp do obsługi Linux a

Architektura, oprogramowanie i uytkowanie klastra PCSS. Marek Zawadzki <mzawadzk@man.poznan.pl>

Informatyka III : Instrukcja 1

Podstawy użytkowania Linux a

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

host name: protokół SSH System plików - wprowadzenie Ścieżki dostępu

tworzenie katalogów Aby utworzyć nowy katalog wpisz: mkdir katalog1 Ta komenda utworzy katalog o nazwie katalog1.

Trochę o plikach wsadowych (Windows)

Wstęp do informatyki Shell podstawy

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1)

Powłoka, redyrekcja, potok

Instalacja środowiska MPI w systemie operacyjnym Linux

Podstawy Informatyki. Wykład 4 Komendy UNIXa, cd

Wstęp do systemu Linux

UŻYTKOWNIK. APLIKACJE UŻYTKOWE (wszelkie programy zawarte domyślnie w systemie operacyjnym jak i samodzielnie zainstalowane przez użytkownika systemu)

WST P DO PROGRAMOWANIA RÓWNOLEGŠEGO 1. KLASTER

Komendy Ubuntu MARCEL GAŃCZARCZYK 2T I 1

MODELOWANIE MATERIAŁÓW I PROCESÓW

Komputery Dużej Mocy w Cyfronecie. Andrzej Oziębło Patryk Lasoń, Łukasz Flis, Marek Magryś

Współczesne systemy komputerowe

Uruchamianie i optymalizacja kodów na architekturze Blue Gene/P

Zakład Systemów Rozproszonych

Konfiguracja klientów SSH - PuTTY i WinSCP

Wstęp do systemów wielozadaniowych laboratorium 03 Praca w powłoce UNIX-owej

Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 4

Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias

Prawa dostępu do plików

System kontroli dostępu ACCO NET Instrukcja instalacji

Serwer SAMBA UDOSTĘPNIANIE UDZIAŁÓW SIECIOWYCH PIOTR KANIA

Zespól Szkół Ponadgimnazjalnych Nr 17 im. Jana Nowaka - Jeziorańskiego Al. Politechniki 37 Windows Serwer 2003 Instalacja

VinCent Administrator

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Pracownia Komputerowa wyk ad III

Logowanie z zewnątrz. Np. Program PUTTY, SSH

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

Pracownia internetowa w szkole ZASTOSOWANIA

Dodatek nr 1: Niektóre polecenia systemu Linux (shell tcsh) A) Informacje wstępne

Przekierowanie wejścia wyjścia:

APEK MeasureInWeb program komunikacyjny do systemów pomiarowych.

Ćwiczenie nr 14: System Linux

DOS Podstawowe komendy Przygotowanie dyskietki do pracy Praca z katalogami w systemie DOS Operacje kopiowania

ZADANIE nr 4 Sprawdzian z informatyki

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

Ćwiczenie 1. Podstawowe wiadomości

Użytkownicy I. Użytkownik. Głównym celem istnienia użytkowników i grup w systemie jest utrzymanie porządku i separacja uprawnień.

Wstęp do systemów wielozadaniowych laboratorium 14 Środowisko i aliasy

Klaster obliczeniowy

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy - ćwiczenia. 012a

Transkrypt:

Wprowadzenie do obliczeń na komputerach ICM Maciej E. Marchwiany m.marchwiany@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl Uniwersytet Warszawski Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego http://www.icm.edu.pl <#>

Plan szkolenia Omówienie usług oraz zasobów ICM udostępnianych użytkownikom Dostęp do zasobów i sposób uruchamiania zadań Podstawowe komendy systemu SLURM Typowe scenariusze obliczeń krok po kroku Praca w trybie interaktywnym Uruchamianie zadań w trybie wsadowym, tworzenie skryptów kolejkowych Uruchamianie aplikacji Kompilacja i uruchamianie programów Ćwiczenia: praca na wybranych systemach <#> 2

Usługi i zasoby Komputery obliczeniowe (patrz nast. slajdy) Przechowywanie danych Pomoc w optymalizacji aplikacji Szkolenia <#> 3

Jak uzyskać konto użytkownika? Należy wystąpić o grant obliczeniowy ICM Wymagany kierownik naukowy Wykonawcy grantu otrzymują dostęp do zasobów Sposób dostępu do zasobów Konto użytkownika (nazwa i hasło) W celu zalogowania wymagane hasło Kontrola dostępu poprzez LDAP (autoryzacja) Dostęp grid-owy Poprzez infrastrukturę PL-Grid, http://plgrid.pl <#> 4

Dostęp do zasobów (linux) Logowanie do sieci ICM Używamy protokołu SSH Putty (Windows), ssh (Linux, Mac) Łączenie poprzez serwer dostępowy login.icm.edu.pl (hpc.icm.edu.pl) Zastępuje dostęp przez delta/gw/atol Komenda: ssh nazwa_uzytkownika@login.icm.edu.pl <#> 5

Dostęp do zasobów (windows) nazwa_uzytkownika@login.icm.edu.pl <#> 6

Dostęp do zasobów (windows) KLIK <#> 7

Zasoby Szkolenie obejmuje dostęp do: HYDRA (klaster węzłów x86_64) NOSTROMO (BlueGene/Q) BOREASZ (Power775) NOTOS (BlueGene/P) <#> 8

Organizacja zasobów Serwer Login udostępnia zasoby dyskowe zasoby dyskowych z wybranych maszyn Aktualnie: Hydra, Halo2 (na czas migracji), Nostromo Bez potrzeby podwójnego transferowania danych Możliwość zlecania zadań bezpośrednio na system: Hydra Kompilacje wykonujemy na docelowej maszynie <#> 9

Organizacja zasobów Internet (Dom, Instytut) SSH login.icm.edu.pl SSH SSH SSH SLURM notos boreasz nostromo /icm/nostromo/home hydra /icm/hydra/home /icm/home <#> 10

PODSTAWOWE KOMENDY LINUX-A <#> 11

Powłoka systemowa (terminal) Powłoka (shell) to program interpretujący komendy użytkownika Wykonuje komendy wywoływane w terminalu Wykonuje skrypty użytkownika Różne powłoki różnice w składni poleceń bash: domyślna powłoka w linux-ie tcsh: domyślna powłoka na maszynach ICM Wyjątki: sesje interaktywne (Hydra) i Notos Jak shell aktualnie używam: echo $SHELL <#> 12

ls Wyświetlanie zawartości katalogów ls wyświetla zawartość bieżącego katalogu ls sciezka_dostepu wyświetla zawarość wskazanego katalogu ls *.roz wyświetla wszystkie pliki z rozszerzeniem.roz przydatne opcje: -a wyświetla uktyte pliki -t sortowanie według czasu modyfikacji -r odwraca kolejność sortowania -l -wyświetla pełną informacje <#> 13

System plików Korzeń drzewa root / Pliki systemowe urządzenia Katalogi domowe /home /var /etc /bin /lib... /mnt /dev... Katalogi urzytkownika./doc./photo./out./test <#> 14

Nawigacja po drzewie katalogów Wejście do katalogu: cd sciezka_dostepu Przydatne katalogi:./ bierzący katalog../ katalog o poziom wyżej ~/ katalog domowy. root Np: cd../ przejście o poziom wyżej Ścieżki dostępu ścieżka bezwględna: /home/users/grzbrz/docs/readme.txt ścieżka względna: docs/readme.txt pwd wyświetla aktualną ścieżke dostępu <#> 15

Tworzenie i niszczenie Tworzenie nowego katalogu mkdir katalog Kasowanie pliku: rm plik Kasowanie pustego katalogu: rmdir katalog Kasowanie katalogu wraz z zawartością: rm -r katalog <#> 16

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 usówa żródło) <#> 17

Pliki Oznaczenia plików: * wszystkie pliki plik.* pliki o nazwie plik i dowolnym rozszeżeniu *.roz wszystkie pliki o rozszerzeniu.roz a* wszystkie pliki zaczynające się od a */* wszystkie pliki w podkatalogach (jeden poziom niżej) Rozszerzenia plików Rozszerzenia plików są dowolne. Powinny jednak sugerować użytkownikowi rodzaj zawarość pliku. Niektóre programy wymagają określonej nazwy pliku i/lub rozszerzenia. <#> 18

Przeglądanie plików Przeglą danie plików: file plik identyfikuje 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 Postawowe komendy: q wyjście, /wzorzec szukanie wzorca Przeszukiwanie plików: grep wzorzec pliki Np: grep H2 prot.pdb <#> 19

Prawa dostępu do plikó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, 4) prawo do zapisu (write, 2) prawo do wykonywania (execute, 1) <#> 20

Zmiana praw dostępu chmod zmienia prawa dostępu trybem numerycznym: Cyfra jest suma praw dla właściciela (pierwsza), grupy (druga), pozostałych (trzecia) chmod Cyfra1Cyfra2Cyfra3 plik Np: chmod 640 test.exe Read = 4 Write = 2 Execute = 1 Kombinacja: 1) liter: u (user), g (group), o (others), a (all) 2) operatorów: = (ustawienie na podane prawa), + (dodanie praw), - (odejęcie praw) 3) praw: r (read), w (write), x (execute) Np: chmod g-w,o-rw test.exe <#> 21

Praca w powłoce Linux-a (terminal) Uruchamianie programów./test.exe Uruchamianie z parametrami./test2.exe input.xyz Przekierowywanie wyjścia do pliku:./test.exe >> plik.out Przydatne skróty Tab dokańcza ścieżke/nazwę pliku/komene (jeśli jest jednoznaczna) Ctrl + d pokazuje możliwe uzupełnienia komendy Ctrl + c przerywa dziełanie programu Ctrl + l czyści terminal up/down poruszanie się po historii używanych komend <#> 22

mc (Midnight Commander) <#> 23

tar (tape archive) Pakowanie pliku z wyświetleniem pakowanych plików/katalogu: tar -cvf plik.tar plik_do_pakowania tar -zcvf plik.tar.gz plik_do_spakowania Rozpakowanie pliku: tar -xvf plik.tar tar -zxvf plik tar.gz tar -jxvf plik.tar.bz2 Otwierać spakowane pliki można także przez mc <#> 24

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 Np: module load pgi/11.7 <#> 25

TRANSFER DANYCH <#> 26

Kopiowanie danych (linux) Komenda cp (lokalnie, patrz slajdy o linux-ie) Komenda scp (zdalnie) <#> 27

scp (secure copy) Kopiowanie plików do ICMu: scp -C -p plik nazwa_uzytkownika@hpc.icm.edu.pl:~/ Kopiowanie plików z ICMu: scp -C -p nazwa_uzytkownika@hpc.icm.edu.pl:~/plik./ -C włącza kompresje -p zachowuje orginalną date stworzenia -r kopiowanie podkatalogu Kopiowanie katalogów: scp -r -C -p katalog nazwa_uzytkownika@hpc.icm.edu.pl: scp -r -C -p nazwa_uzytkownika@hpc.icm.edu.pl:~katalog./ <#> 28

Kopiowanie danych (windows) KLIK login.icm.edu.pl KLIK <#> 29

Kopiowanie danych (WinSCP) Widok lokalny Pliki na moim dysku Widok zdalny Pliki na serwerach ICM <#> 30

EDYCJA PLIKÓW <#> 31

Windows a Linux Znak końca lini: DOS: ^M^R Linux: ^R Konwertowanie plików z WIN do UNIX: dos2unix plik <#> 32

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 F2 wyjście z zapisaniem <#> 33

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 <#> 34

HYDRA <#> 35

Hydra HP/Supermicro Blade System Model: HP/Supermicro Blade System Liczba rdzeni: 5440 Ilość pamięci: 23 TB CPU: AMD Istanbul/Magny- Cours/Interlagos, Intel Westmere EP Liczba rdzeni na węzeł: 12/24/48/64 Ilość pamięci na węzeł: 24/32/256/512 GB System operacyjny: Scientific Linux System kolejkowy: Slurm <#> 36

Hydra specyficzne własności Własności węzłów (constraint) Model CPU Liczba CPU x rdzeni RAM Roboczy system plików(scratch) Interconnect Liczba węzłów istanbul,ib,noht AMD Opteron 2435 2 x 6 32 GB 250 GB Infiniband DDR + 1Gb Ethernet 96 westmere,ib,noht Intel(R) Xeon(R) X5660 2 x 6 24 GB 188 GB Infiniband QDR + 1Gb Ethernet 120 magnycours,noht AMD Opteron 6128 4 x 12 256 GB 188 GB 10Gb Ethernet 30 interlagos,noht AMD Opteron 6272 4 x 16 512 GB 188 GB 10Gb Ethernet 16 Pełna wersja tabeli: http://www.icm.edu.pl/kdm/hydra <#> 37

Hydra specyficzne własności cd. Lokalizacja Zmienna środowiskowa Przeznaczenie Całkowita przestrzeń Współdzielona? Intensywny zapis/odczyt? Kopie zapasowe (backup)? Quota (limit miejsca) /icm/home/ $HOME Przestrzeń przechowywania wyników obliczeń. 130TB Tak (wszystkie wezły klastra i submit host) Nie Nie 100GB /mnt/software - Zainstalowane aplikacje dla węzłów z SL6 20T Tak (Wszystkie węzły klastra) Nie Tak - $TMPDIR Lokalny scratch obliczeniowy (katalog tymczasowy) <1TB Nie Tak Nie - $TMPSHARED Współdzielony pomiędzy węzłami scratch obliczeniowy 108 TB Tak (Wszystkie węzły klastra) Tak Nie 10TB. Automatyczn e kasowanie Pełna wersja tabeli: http://www.icm.edu.pl/kdm/hydra <#> 38

NOSTROMO <#> 39

Nostromo IBM Blue Gene/Q Model: IBM Blue Gene/Q Liczba rdzeni: 16384 Ilość pamięci: 16 TB CPU: PowerPC A2 @ 1.6GHz Interconnect: 5D Torus Liczba rdzeni na węzeł: 16 (64 wątki) Ilość pamięci na węzeł: 16 GB System operacyjny: BG/Q Linux System kolejkowy: Slurm <#> 40

Nostromo specyficzne własności System typu BlueGene brak bezpośredniego dostępu do węzłów obliczeniowych Architektura powerpc64 (ppc64) Wszystkie operacje, łącznie z kompilacją, wykonujemy na węźle dostępowym Dane zapisywane w formacie big-endian <#> 41

SYSTEM SLURM <#> 42

System SLURM Menadżer zasobów (system kolejkowy) dla klastrów obliczeniowych na licencji GNU http://slurm.schedmd.com/ Funkcjonalność Alokacja określonych zasobów (węzłów obliczeniowych) na wyłączne użycie lub bez wyłączności Uruchamianie i zarządzenie zadaniami równoległymi na przydzielonych zasobach Kolejkowanie zadań <#> 43

Terminologia SLURM Węzeł (node) - pojedynczy węzeł klastra na którym można alokować zasoby Partycja (partition) zbiór węzłów na którym kolejkowane są zadania (odpowiednik kolejki w innych systemach) Zadanie (job, job step) zestaw programów użytkownika wraz z zasobami i potencjalnymi zależnościami Własności (constraint) funkcjonalności węzła zdefiniowane przez administratora <#> 44

SLURM komendy (szybki start) salloc - alokuje węzły i inne zasoby dla zadania użytkownika sbatch - wstawia skrypt zadania wsadowego do kolejki sbatch n4 my_job.sl scancel - wysyła sygnał / przerywa wykonanie zadania scancel --signal=sigkill 1234 scontrol - podgląd i modyfikacje zadań, partycji, rezerwacji sinfo - wyświetla informacje o węzłach i partycjach squeue - wyświetla stan kolejki zadań srun - uruchamia zadanie (równoległe) srun n4 --exclusive moj_program.exe <#> 45

Organizacja środowiska: SLURM i moduły Narzędzie Modules służy do wyboru środowiska: docelowej architektury oraz dostępu do wymaganych aplikacji Typowy schemat pracy: 1. Alokacja zasobów SLURM poprzez salloc / sbatch / srun, np.: srun --pty p hydra bash -l 2. Następnie w ramach zadania wybór aplikacji, np.: module load vasp 3. Podobnie dostęp do kompilatorów, bibliotek, np.: module load compilers/intel UWAGA: Kolejność operacji ma znaczenie <#> 46

Tryb interaktywny W trybie interaktywnym system przydziela nam określone zasoby i pozwala pracować na nich z poziomu konsoli Obliczenia wykonujemy wydając kolejne komendy Możliwość interakcji z programem Możliwość pracy z programami graficznymi (okienkowe GUI, trudne do obsługi w windows) srun --pty bash -l Z użyciem rezerwacji srun --pty -reservation=res-szkolenie bash -l Używając identyfikatora grantu srun --pty A=icm-szkolenia bash -l <#> 47

Tryb wsadowy W trybie wsadowym system przydziela określone zasoby oraz uruchamia sekwencję komend opisaną w skrypcie Skrypt musi posiadać odpowiednią strukturę Brak interakcji z uruchomionym programem Komendy SLURM zamiennie jako opcje sbatch lub na początku skryptu w linii #SBATCH sbatch A=icm-szkolenia my_job.sl #!/bin/sh #SBATCH --time=1 #SBATCH N4 srun hostname sort my_job.sl <#> 48

SLURM budowa skryptu kolejkowego Plik tekstowy zawierający definicje parametrów SLURM-a Linie definiujące parametry rozpoczynają się od #SBATCH Reszta skryptu może zawierać dowolne komendy skryptowe, które wykonane zostaną na węźle obliczeniowym Komentarze rozpoczynają się od # Komenda uruchomienia obliczeń: mpiexec (hydra) lub srun (nostromo) <#> 49

Przykładowy skrypt SLURM #SBATCH --job-name my_job #SBATCH --output my_job.out #SBATCH --error my_job.err #SBATCH A icm-szkolenia #SBATCH --nodes 16 #SBATCH --tasks-per-node 32 #SBATCH --time 08:00:00 module load mpi/mpich mpiexec -n 512./my_executable #SBATCH --job-name my_job #SBATCH --output my_job.out #SBATCH --error my_job.err #SBATCH -A icm-szkolenia #SBATCH --nodes 16 #SBATCH --tasks-per-node 32 #SBATCH --time 08:00:00 #SBATCH qos hpc srun ntasks-per-node 512./my_executable HYDRA NOSTROMO <#> 50

Zmiana parametrów zadania scontrol pozwala użytkownikowi na zmianę parametrów jego zadań, np. scontrol update JobId=<id> TimeLimit=+10 Dodaje do pierwotnego limitu czasu zadania 10 min. Format zmiany czasu to: = (nadpisanie), =+ (dodanie) lub =- (odjęcie) minuty, minuty:sekundy, godziny:minuty:sekundy, dni-godziny, dnigodziny:minuty <id> to numer zadania w SLURM, widoczny np. przez squeue <#> 51

Zmienne środowiskowe SLURM W ramach zadania kontrolowanego przez SLURM dostęp do zmiennych środowiskowych SLURM_XXX SLURM_JOB_ID Zawiera identyfikator zadania SLURM_NODELIST Pozwala listować węzły na których działą zadanie SLURM_NTASKS Pozwala sprawdzić liczbę wszystkich procesów w ramach zadania SLURM_TASKS_PER_NODE Inne Pokazuje rozkład przydzielonych procesów na węzłach <#> 52

CZĘŚĆ 1 PRZYKŁADY <#> 54

Zadanie: aproksymacja pi Całkowanie metodą prostokątów następującego wzoru: 1,2 4 1 n 1 2 1 x 0 i 1 2 1 xi 0.5 1 ( ) n h Wartość liczby pi przybliżamy poprzez całkowanie funkcji f na przedziale [0,1] za pomocą kwadratury prostokątów 1 0,8 f ( x) 1 1 x 2 0,6 0,4 0,2 0 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 <#> 55

Przykład 1: tworzenie skryptów Rozwiązanie zadania przy użyciu skryptu bash i kalkulatora bc n 4096 1 h n mypi n 1 xi 0.5 1 ( ) n i 1 2 h #!/bin/bash n=4096 h=$( bc -l <<< 1.0/$n) sum=0.0 for i in `seq 1 $n` do x=$( bc -l <<< $h*\($i-0.5\) ) sum=$( bc -l <<< $sum+\(4.0/\(1.0+$x*$x\)\) ) done mypi=$( bc -l <<< $h*$sum ) echo $mypi Tworzymy plik my_pi.sh i zapisujmy w nim kod skryptu <#> 56

Przykład 1: tworzenie skryptów Uruchomienie skryptu na wezłach obliczeniowych w systemie SLURM Interaktywnie (test działania): 1. Uruchomienie zadania interaktywnego srun A icm-szkolenia --pty bash l 2. Nadanie praw wykonania skryptu chmod u+x my_pi.sh 3. Uruchomienie skryptu./my_pi.sh Rezerwacja: --reservation=res-szkolenie <#> 57

Przykład 1: tworzenie skryptów Uruchomienie skryptu na węzłach obliczeniowych w systemie SLURM Wsadowo: #!/bin/bash #SBATCH --job-name "my_pi" #SBATCH -N 1 #SBATCH -n 1 date./my_pi.sh date #!/bin/bash n=4096 h=$( bc -l <<< 1.0/$n) sum=0.0 sbatch A icm-szkolenia my_job.sl for i in `seq 1 $n` do x=$( bc -l <<< $h*\($i-0.5\) ) sum=$( bc -l <<< $sum+\(4.0/\(1.0+$x*$x\)\) ) done mypi=$( bc -l <<< $h*$sum ) echo $mypi Zapisujemy jako: my_job.sl <#> 58

Przykład 2: skrypty i job steps Równoległe wykonanie skryptu przy pomocy job steps w SLURM #!/bin/bash myid=$1 numtask=4 n=4096 nl=$( bc -l <<< $n/$numtask ) h=$( bc -l <<< 1.0/$n) sum=0.0 istart=$( bc -l <<< $myid*$nl+1 ) iend=$( bc -l <<< \($myid+1\)*$nl ) for i in `seq $istart $iend` do x=$( bc -l <<< $h*\($i-0.5\) ) sum=$( bc -l <<< $sum+\(4.0/\(1.0+$x*$x\)\) ) done mypi=$( bc -l <<< $h*$sum ) echo $mypi my_pi.sh <#> 59

Przykład 2: skrypty i job steps Równoległe wykonanie skryptu przy pomocy job steps w SLURM #!/bin/bash #SBATCH --job-name "my_pi" #SBATCH -N 1 #SBATCH -n 4 date s1=$(srun -n1./my_pi.sh 0 &) s2=$(srun -n1./my_pi.sh 1 &) s3=$(srun -n1./my_pi.sh 2 &) s4=$(srun -n1./my_pi.sh 3 &) wait sum=$( bc -l <<< $s1+$s2+$s3+$s4 ) echo $sum date #!/bin/bash myid=$1 numtask=4 n=4096 nl=$( bc -l <<< $n/$numtask ) h=$( bc -l <<< 1.0/$n) sum=0.0 istart=$( bc -l <<< $myid*$nl+1 ) iend=$( bc -l <<< \($myid+1\)*$nl ) for i in `seq $istart $iend` do x=$( bc -l <<< $h*\($i-0.5\) ) sum=$( bc -l <<< $sum+\(4.0/\(1.0+$x*$x\)\) ) done mypi=$( bc -l <<< $h*$sum ) echo $mypi Nowa wersja: my_job.sl my_pi.sh sbatch A icm-szkolenia my_job.sl <#> 60

Job array Funkcjonalność pozwalająca na tworzenie wielu zadań o identycznych ustawieniach Dodatkowa zmienna środowiskowa SLURM_ARRAY_TASK_ID pozwala parametryzować zadania z grupy Dostępne tylko dla zadań wsadowych uruchamianych przez sbatch, dodatkowo z opcją array sbatch --array=0,7 N1 my_job.sl sbatch --array=1,2,5,7 N1 my_job.sl sbatch --array=1-8:2 N1 my_job.sl <#> 61

Zależności pomiędzy zadaniami Używamy sbatch / srun z opcją --dependency= <dependency_list> after:job_id[:jobid...] Start po rozpoczęciu określonego zadania / zadań afterany:job_id[:jobid...] Start po zakończeniu (jakimkolwiek) określonych zadań afternotok:job_id[:jobid...] Start po zakończeniu z błędem określonych zadań afterok:job_id[:jobid...] Start po poprawnym zakończeniu expand:job_id Zadanie ma wystartować jako rozszerzenie określonego zadania w tej samej partycji singleton Start po zakończeniu wszystkich innych zadań tego samego użytkownika <#> 62

Przykład 2: skrypty i job array Równoległe wykonanie skryptu przy pomocy job array (zadanie z parametrem) w SLURM #!/bin/bash #SBATCH --job-name "my_pi" #SBATCH -N 1 #SBATCH -n 1 date sum=$(srun./my_pi.sh $SLURM_ARRAY_TASK_ID) echo $sum date Nowa wersja: my_job.sl sbatch A icm-szkolenia --array=0,1,2,3 my_job_arr.sl <#> 63

Krok po kroku: zlecanie zadań w WinSCP 1. Inicjujemy połączenie scp 2. Kopiujemy skrypt zadanie.sl (i dane wejściowe) z lokalnego katalogu na hpc.icm.edu.pl <#> 64

Krok po kroku: zlecanie zadań w WinSCP Commands > Open Terminal Akceptujemy nowe połączenie, Wprowadzamy ponownie hasło <#> 65

Krok po kroku: zlecanie zadań w WinSCP Enter command: sbatch zadanie.sl Execute <#> 66

Przykład 3: Kompilacja i uruchomienie własnego programu Implementacja kwadratury w C, kompilator intel-a 1. Alokacja węzła na hydrze srun A icm-szkolenia --pty bash -l 2. Kompilacja na węźle export \ EXAMPLES=/icm/hydra/software/icm/examples/slurm cp $EXAMPLES/my_pi.c. module load compilers/intel icc o my_pi my_pi.c 3. Uruchomienie programu./my_pi <#> 69

Przykład 4: uruchomienie własnego zadania z parametrem (job array) 1. Przygotowanie programu na węźle cp $EXAMPLES/my_pi_arg.c. module load compilers/intel icc o my_pi_arg my_pi_arg.c 2. Utworzenie skryptu kolejkowego #!/bin/bash -l #SBATCH -N 1 #SBATCH -n 1 module load compilers/intel srun my_pi_arg $SLURM_ARRAY_TASK_ID 3. Zamknięcie sesji interaktywnej exit 4. Wstawienie do kolejki macierzy zadań sbatch A icm-szkolenia --array=1,2,3,4 my_job.sl <#> 72

Przykład 5: Kompilacja i uruchomienie własnego programu równoległego MPI 1. Przygotowanie programu na węźle cp $EXAMPLES/my_pi_mpi.c. module load compilers/intel module load mpi/mpich mpicc o my_pi_mpi my_pi_mpi.c 2. Utworzenie skryptu kolejkowego #!/bin/bash l #SBATCH -N 1 module load compilers/intel mpi/mpich mpiexec./my_pi_mpi 3. Wstawienie zadania równoległego do kolejki sbatch A icm-szkolenia n4 my_job.sl <#> 73

Przykład 6: Nostromo, kod w Fortranie 1. Przejście na nostromo (BlueGene/Q) ssh nostromo 2. Ustawienie środowiska module load mpi/xl module load essl 3. Przygotowanie programu dla węzłów obliczeniowych cp /opt/examples/essl/saxpy_essl.f90. mpif90 saxpy_essl.f90 -L$ESSL_LIB -lesslbg <#> 76

Przykład 6: Nostromo, cd 4. Na BlueGene nie ma dostępnego trybu interaktywnego, tworzymy skrypt kolejkowy #!/bin/csh #SBATCH --nodes=1 srun --ntasks-per-node 1./a.out 5. Wstawiamy zadanie do kolejki sbatch A icm-szkolenia my_job.sl <#> 77

BOREASZ <#> 78

Boreasz IBM POWER 775 (IH) Model: IBM POWER 775 (IH) Liczba rdzeni: 2560 Ilość pamięci: 10 TB CPU: Power7 @ 3.8GHz Interconnect: IBM HFI Binary format: big-endian Liczba rdzeni na węzeł: 32 (128 wątki) Ilość pamięci na węzeł: 128 GB System plików: GPFS System operacyjny: AIX System kolejkowy: LoadLeveler <#>

Boreasz specyficzne własności Architektura powerpc64 (ppc64) System operacyjny AIX (nie linux) Dane zapisywane w formacie big-endian <#> 80

NOTOS <#> 81

Notos IBM Blue Gene/P Model: IBM Blue Gene/P Liczba rdzeni: 4096 Ilość pamięci: 4 TB CPU: PowerPC 450 @ 850MHz Interconnect: 3D Torus Liczba rdzeni na węzeł: 4 Ilość pamięci na węzeł: 4 GB System operacyjny: BG/P Linux System kolejkowy: Load Leveler <#>

Notos specyficzne własności System typu BlueGene brak bezpośredniego dostępu do węzłów obliczeniowych Architektura powerpc32 (ppc32) Wszystkie operacje, łącznie z kompilacją, wykonujemy na węźle dostępowym Dane zapisywane w formacie big-endian <#> 83

SYSTEM LOADLEVELER <#> 84

Uruchamianie zadań IBM LoadLeveler Podstawowe komendy: Komenda llsubmit llq llq s <job_id> llcancel <job_id> llclass Krótki opis Wstawia do kolejki zadanie LoadLeveler. Pokazuje zadania w kolejce (te uruchomione i te czekające na zasoby) wraz z dodatkową informacją. Pokazuje więcej informacji o zadaniu, np. dlaczego wciąż stoi w kolejce, ile dokładnie zasobów zadeklarowaliśmy,.. Usuwa zadanie z kolejki. Pokazuje informację o aktualnie zdefiniowanych klasach. Wstawianie zadania do kolejki: llsubmit <jobfile name> <#> 85

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 namd_ab kdm-large 512 R 11 job step(s) in queue, 9 waiting, 0 pending, 2 running, 0 held, 0 preempted <#> 86

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,N10- J00,N11-J00,N12-J00,N13-J00,N14-J00,N15-J00 Notify User: fleon@icm.edu.pl 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. <#> 87

Boreasz budowa skryptu kolejkowego Plik tekstowy zawierający definicje parametrów LoadLeveler-a Linie definiujące parametry LL rozpoczynają się od #@ Reszta skryptu może zawierać dowolne komendy skryptowe, które wykonane zostaną na węźle obliczeniowym Komentarze rozpoczynają się od # Komenda uruchomienia obliczeń: mpiexec <#> 88

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) <#> 89

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 ewenetualne 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 Ustawia nazwę zadania. Pod taką nazwą będzie widziane zadanie w systemie. <#> 90

Boreasz- przykładowy skrypt #@ job_name = Calculations #@ output = $(job_name)_$(jobid) #@ error = $(job_name)_$(jobid) #@ account_no = G33-19 #@ class = kdm #@ node = 16 #@ 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 <#> 91

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) <#> 92

Notos budowa skryptu kolejkowego Plik tekstowy zawierający definicje parametrów LoadLeveler-a Linie definiujące parametry LL rozpoczynają się od #@ Reszta skryptu może zawierać dowolne komendy skryptowe (Uwaga: wykonywane na FEN) Komentarze rozpoczynają się od # Komenda uruchomienia obliczeń na Blue Gene/P (np. mpirun) <#> 93

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. <#> 94

Notos budowa skryptu kolejkowego Pola opcjonalne: Opcja # @ bg_connection = MESH/TORUS/PREFER_TORUS Znaczenie 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ń. <#> 95

Notos budowa skryptu kolejkowego Pola opcjonalne (cd): 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 ewenetualne 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ślna, czy scheduler LoadLeveler-a powinien rozpatrywać wszystkie możliwe obroty zadanego kształtu. Domyślnie true. <#> 96

Notos - przykładowy skrypt # @ 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 # @ notification = error # @ notify_user = $(user)@icm.edu.pl # @ job_type = bluegene # @ bg_size = 32 # @ queue (Przykłady w /opt/examples/loadleveler) mpirun -exe ping_pong -mode SMP -np 32 <#> 97

Parametry mpirun (notos) Opcja -np ranks -exe <executable> -args program args -cwd <path> -mode <SMP,DUAL,VN> Znaczenie Ilość ranków MPI. Nazwa pliku wykonywalnego zadania. Argumenty pliku wykonywalnego zadania. Ścieżka katalogu roboczego zadania. 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 <#> 98

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> <#> 99

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-LARGE 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 <#> 100

CZĘŚĆ 2 PRZYKŁADY <#> 101

Przykład 7: CPMD na hydrze Skopiować wszystkie pliki z: /icm/hydra/lustre/temp/memar/szkol2014 Zmodyfikowac skrypt skrypt.sl Uruchomić zadanie w SLURM-ie sbatch A=icm-szkolenia skrypt.sl Wykonać wizualizację molden'em./molden <#> 102

Przykład 8: CPMD na notosie Skopiować wszystkie pliki z: /home/users/memar/szkolenie2014 Zmodyfikowac skrypt skrypt.sl Uruchomić zadanie w SLURM-ie llsubmit skrypt.ll Przegrać wyniki na hydrę scp GEOMETRY.xyz hpc.icm.edu.pl: Wykonać wizualizację molden'em./molden <#> 103

ZAKOŃCZENIE DZIĘKUJEMY ZA UWAGĘ <#> 104