Wprowadzenie do obliczeń na komputerach...

Post on 28-Feb-2019

235 views 0 download

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

m.marchwiany@icm.edu.pl

Szymon Jaranowski

s.jaranowski@icm.edu.pl

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 login@gw.icm.edu.pl

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 login@gw.icm.edu.pl

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

login@atol.icm.edu.pl

login@gw.icm.edu.pl

ICM logowanie WIN

2013-02-20 Dobre praktyki obliczeń wielkoskalowych 12

ICM logowanie Linux

2013-02-20 Dobre praktyki obliczeń wielkoskalowych 13

ssh login@gw.icm.edu.pl

ssh login@atol.icm.edu.pl

ssh –YC login@gw.icm.edu.pl

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

pomoc@icm.edu.pl

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: pomoc@icm.edu.pl

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 login@gw.icm.edu.pl:~/

Kopiowanie plików z ICMu: scp -C -p login@gw.icm.edu.pl:~/plik ./

-C – włącza kompresje

-p – zachowuje oryginalną datę stworzenia

-r – kopiowanie podkatalogu

Kopiowanie katalogów: scp -r -C -p katalog login@gw.icm.edu.pl:

scp -r -C -p login@gw.icm.edu.pl:~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: login@icm.edu.pl

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 XYZ@icm.edu.pl

# 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 XYZ@icm.edu.pl

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: 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.

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ę!

pomoc@icm.edu.pl

www.icm.edu.pl/kdm