Wprowadzenie do obliczeń na komputerach...
Transcript of Wprowadzenie do obliczeń na komputerach...
Wprowadzenie do obliczeń na komputerach ICM
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 1
Interdyscyplinarne Centrum Modelowania
Matematycznego i Komputerowego
Uniwersytet Warszawski
http://www.icm.edu.pl
Maciej E. Marchwiany
Szymon Jaranowski
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 2
www.wielkiewyzwania.pl
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
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 5
Sieć i zasoby komputerowe ICM
ICM sieć
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 6
ssh boreasz
ssh notos
ssh halo2
gw / delta
Komputery w ICM
KOMPUTER węzeł
maks. rozmiar zadania
równoległego
CPU / czas pamięć CPU / czas pamięć
halo2
Linux x86_64
Sun Constellation
16 rdzeni
16 rdzeni
64 rdzenie / 168 h
16 GB
32 GB
512 GB
512 rdzeni 1 TB
notos
Linux ppc32
IBM Blue Gene/P
4 rdzenie / 32 h 4 GB
2048 rdzeni / 1 min
(kolejka do testów
skalowalności)
2 TB
boreasz
AIX ppc64
IBM Power 775
32 rdzenie / 24 h 128 GB 2432 rdzenie / 5 h
512 rdzeni / 24 h
9,7 TB
2 TB
grom Obliczenia na kartach graficznych (Nvidia GeForce 480 GTX).
Niestadardowy dostęp!
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 7
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 8
Dostęp do zasobów ICM
ICM sieć
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 9
ssh boreasz
ssh notos
ssh halo2
gw / delta
ICM logowanie WIN
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 10
ICM logowanie WIN
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 11
ICM logowanie WIN
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 12
ICM logowanie Linux
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 13
ssh –YC [email protected]
Otwieranie sesje X-Window na zdalnych maszynach:
Zdalne logowanie ma maszyny:
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 14
Podstawy pracy z systemami Linux/UNIX
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
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
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 17
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
System plików
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 18
lfs quota /home - wyświetla limity dyskowe
Korzeń drzewa
„root” /
Pliki
systemowe Katalogi
domowe
urządzenia
Katalogi
użytkownika
/var
/etc
/bin
/lib
...
/doc
/photo
/outy
/test
...
/mnt
...
Poruszanie się
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 19
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
pwd – wyświetla aktualną ścieżkę dostępu
Tworzenie i niszczenie
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 20
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.
Kopiowanie
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 21
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)
Pliki
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 22
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.
Podgląd plików
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 23
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
nano
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 24
nano plik – otwiera plik do edycji
Podstawowe komendy: Ctrl + x – wyjście
Ctrl + c – zapisanie
Ctrl + w – szukanie
F2 – wyjście z zapisaniem
nano –w plik – otwiera plik do edycji bez zawijania wierszy
vim
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 25
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
Prawa dostępu do plików i katalogów
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 26
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)
Wszystkie pliki domyślnie mogą być czytane przez wszystkich.
263:spj@halo2:/home/staff/spj/szkolenie# ls
abc plik1 plik2
264:spj@halo2:/home/staff/spj/szkolenie# ls -l
total 12
drwxr-xr-x 2 spj users 4096 Feb 19 16:46 abc
-rw-r--r-- 1 spj users 23 Feb 19 16:45 plik1
-rw-r--r-- 1 spj users 37 Feb 19 17:56 plik2
Zmiana praw dostępu
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 27
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
Praca w systemie Linux
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 28
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
Uruchamianie programów ./test.exe
Uruchamianie z parametrami ./test2.exe input.xyz
Przekierowanie wyjścia do pliku: ./test.exe >> plik.out
tar
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 29
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
Otwierać spakowane pliki można także przez mc
Na Boreaszu: /opt/freeware/bin/tar
mc
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 30
man
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 31
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
WIN a UNIX
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 32
Znak końca linii: DOS: ^M^R
UNIX: ^R
Konwertowanie plików z WIN do UNIX: dos2unix plik
Ć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).
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 34
Środowisko użytkownika
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
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 36
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
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:
Najwięcej różnic w składni skryptów
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 37
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
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
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 39
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 ./
WinSCP
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 41
gw.icm.edu.pl
login hasło
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
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 44
Adres: webmail.icm.edu.pl
Sprawdzanie poczty w terminalu
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 45
Sprawdzanie poczby w terminalu: mutt
alpine
mutt komendy
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 46
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 47
Uruchamianie zadań
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)
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 49
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
System kolejkowy LoadLeveler (BlueGene)
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 50
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
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
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 52
#!/bin/sh
echo ’Hello world!’
#koniec
System PBS
Na przykładzie klastra Halo2
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 54
Halo2 - Skrypty PBS
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 55
Blok dyrektyw
PBS
Załadowanie
modułu
Użycie zmiennej
środowiskowej
Uruchomienie
programu
#!/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]
# ustaw srodowisko
cd $PBS_O_WORKDIR/
module load mpi
echo Job started at `date`
# wykonaj obliczenia
mpirun ./cpi
echo Job finished at `date`
Halo2 - Skrypty PBS
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 56
#!/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]
Pierwsza linia skryptu zawiera ścieżkę do
interpretera (shell), który ma wykonać skrypt na
przydzielonym węźle obliczeniowym
Nazwa zadania (widziana w kolejce)
Nazwa kolejki
Projekt
Liczna używanych węzłów oraz procesorów
Całkowita pamięć przydzielona na zadanie
Maksymalny czas wykonywania skryptu
Opcje wysyłania maila
Adresat maila
Halo2 - #PBS -q
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 57
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
Limit czasowy
dla zadania
Limit węzłów
dla zadania
Test -q test 1:00:00 2
halo2 -q halo2 336:00:00 32
bigmem -q bigmem 168:00:00 5
interactive -q interactive 12:00:00 1
Halo2 - #PBS -A
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 58
#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
Halo2 - #PBS -l
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 59
#PBS -l nodes=1:ppn=16
#PBS -l nodes=2:ppn=16
#PBS -l nodes=2:ppn=16+1:ppn=8
#PBS -l mem=15gb
#PBS -l walltime=02:00:00
Zadanie jest wykonywane na jednym węźle
i szesnastu rdzeniach
Zadanie jest wykonywane na dwóch węźle
i po szesnaście rdzeni na każdym (w
sumie 32 rdzenie)
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
Format: hhh:mm:ss
Halo2 - #PBS –M/m
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 60
#PBS -M mail[@host][,mail2[@host2]]
Skrypt wysyła maila na wskazany adres
Obsługiwane są tylko maile ICM'owe
Opcje wysłania maila #PBS -m abe
• 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
Halo2 - Zmienne środowiskowe PBS
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 61
•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.
Halo2 - Uruchamianie zadań
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 62
qsub skrypt.pbs
qsub może przyjmować jako argument komendy PBS
qsub -q test skrypt.pbs
Tryb interaktywny
Pozwala na bezpośrednie uruchamianie obliczeń
Wstawia skrypt.pbs do kolejki
Dostępny tylko na klastrach (PBS)
System PBS
qsub -I -l nodes=2:ppn=16 -l mem=128mb -l walltime=1:00:00 \
-A G01-77 -q test
Halo2 - qstat
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 63
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
Halo2 - qstat
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 64
Job id Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
66043.halo2 quickstart krzywojc 0 Q halo2
74066.halo2 hmcN14B11.0 gabrielw 4902:17: R halo2
74069.halo2 hmcN14B14.0 gabrielw 1312:07: R halo2
74070.halo2 hmcN14B15.0 gabrielw 1195:46: R halo2
74268.halo2 jg5 kulcz 4433:42: R halo2
74402.halo2 run_3br1c taye 4367:30: R halo2
74403.halo2 run_3br2c taye 4355:00: R halo2
74600.halo2 hmcN14B10.0 gabrielw 1134:16: R halo2
74641.halo2 run_g09 lesiuk 4073:37: R halo2
74642.halo2 run_g09_2 lesiuk 4074:56: R halo2
74867.halo2 energie39_ACCT_ alimalek 492:07:0 R halo2
75031.halo2 ...4_SLAB12_asym lju 3704:45: R halo2
75628.halo2 1TMG maria 10826:25 R halo2
75634.halo2 hmcN12B16.0 magiersk 2636:42: C halo2
75680.halo2 cfourtest januszc 68:48:53 R halo2
75689.halo2 go1 broy 2499:40: R halo2
76223.halo2 DOH_Zn1_A1_6 hyperion 1952:25: R halo2
76253.halo2 adrian1.obl rbalawen 953:37:3 R halo2
76277.halo2 MgbCAccsd.sh mpgro 406:08:0 R halo2
76365.halo2 HMgC3Nccsd.sh mpgro 155:15:0 R halo2
76382.halo2 gamess wojbur 830:59:5 R halo2
76383.halo2 gamess wojbur 831:26:5 R halo2
Halo2 - qdel/qalder
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 65
qdel Job_id Usuwa zadanie Job_id z kolejki
qalter Job_id [-opcja wartosc]
W qalter opcje są takie same jak w qsub.
Podaje się tylko zmieniane wartości.
qalter 3215 -N test2 Zmienia nazwę zadania 3215 na „test2”
Zmiena parametry skryptu
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ń
67
LoadLeveler
Zadania
Blue Gene Bridge API
Blue Gene mpirun
Wstaw zadanie
do kolejki
Pobierz informację o
zasobach i zadaniach
Znajdź zasoby dla zadań
i zdefiniuj partycje
obliczeniowe
Uruchom zadanie
2013-02-20 Dobre praktyki obliczeń wielkoskalowych
Uruchamianie zadań – IBM LoadLeveler
Podstawowe komendy:
Wstawianie zadania do kolejki: llsubmit <jobfile name>
68
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.
2013-02-20 Dobre praktyki obliczeń wielkoskalowych
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
69 2013-02-20 Dobre praktyki obliczeń wielkoskalowych
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: [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.
70 2013-02-20 Dobre praktyki obliczeń wielkoskalowych
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
mpirun -exe ping_pong -mode SMP -np 32
71
(Przykłady w /opt/examples/loadleveler)
2013-02-20 Dobre praktyki obliczeń wielkoskalowych
Blok dyrektyw
LoadLeveler
Uruchomienie
programu
Notos – budowa skryptu kolejkowego
Pola wymagane:
72
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
Notos – budowa skryptu kolejkowego
Pola opcjonalne:
73
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
Notos – budowa skryptu kolejkowego
74
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
Pola opcjonalne:
Podstawowe opcje mpirun (mpirun –h)
75
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
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>”
76 2013-02-20 Dobre praktyki obliczeń wielkoskalowych
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
77 2013-02-20 Dobre praktyki obliczeń wielkoskalowych
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
78 2013-02-20 Dobre praktyki obliczeń wielkoskalowych
Blok dyrektyw
LoadLeveler
Uruchomienie
programu
Boreasz – budowa skryptu kolejkowego
Pola wymagane:
79
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
Boreasz – budowa skryptu kolejkowego
80
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
Ustawia nazwę zadania. Pod taką nazwą będzie widziane zadanie w
systemie.
2013-02-20 Dobre praktyki obliczeń wielkoskalowych
Pola opcjonalne:
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)
81 2013-02-20 Dobre praktyki obliczeń wielkoskalowych
Ć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.
2013-02-20 Dobre praktyki obliczeń wielkoskalowych 83
Dziękujemy za uwagę!
www.icm.edu.pl/kdm