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

Podobne dokumenty