• Nie Znaleziono Wyników

Pracownia Technik Obliczeniowych SLURM Paweł Daniluk

N/A
N/A
Protected

Academic year: 2021

Share "Pracownia Technik Obliczeniowych SLURM Paweł Daniluk"

Copied!
17
0
0

Pełen tekst

(1)

Pracownia Technik Obliczeniowych

SLURM

Paweł Daniluk

Wydział Fizyki

Wiosna 2016

(2)

Przetwarzanie wsadowe

Zasoby superkomputera z reguły dzielone są pomiędzy wielu użytkowników i wiele zadań.

Użytkownik przygotowuje zlecenie – wsad, który jest następnie przetwarzany.

System kolejkowy odpowiada za szeregowanie zgłaszanych wsadów i sukcesywne ich wykonywanie.

(3)

Zasoby

Wsady mogą różnić się wymaganiami:

czas

liczba węzłów klastrowych procesorów

rdzeni

pamięć operacyjna zasoby dyskowe

urządzenia specjalne (GPU itp.) dostępne oprogramowanie

Rolą systemu kolejkowego jest wybierać zadania, które mogą być wykonane i “sprawiedliwie” przydzielać im zasoby.

(4)

SLURM

Simple Linux Utility for Resource Management

Podstawowe polecenia

srun – uruchamia zadanie w trybie interaktywnym sbatch – uruchamia zadanie w trybie wsadowym squeue – wyświetla kolejkę zadań

scancel – anuluje zadanie

scontrol – służy do zarządzania wszystkim

sinfo – wyświetla informacje o dostępnych zasobach

(5)

Pojęcia

Węzeł (node)

Serwer w klastrze. Pojedynczy fizyczny komputer połączony z pozostałymi siecią.

Partycja (partition)

Logiczny wycinek klastra obejmujący wskazane węzły. Może mieć określone dodatkowe ograniczenia, priorytety, zasady i uprawnienia.

(6)

Zadania interaktywne

s r u n [ OPTIONS . . . ] e x e c u t a b l e [ a r g s . . . ]

[ p a w e l @ s h ~ ] $ s r u n hostname msys28

W szczególności można w ten sposób uruchomić instancję shella.

[ p a w e l @ s h ~ ] $ s r u n −−p t y b a s h − l [ pawel@msys28 ~ ] $

(7)

Specyfikowanie zasobów

Wymagania wobec węzła

--sockets-per-node=<sockets> – liczba procesorów w węźle --cores-per-socket=<cores> – liczba rdzeni w procesorze --threads-per-core=<threads> – liczba wątków na rdzeniu

--cpu-freq =<requested frequency in kilohertz> – minimalna częstotliwość taktowania

--mincpus=<n> – minimalna liczba logicznych procesorów --mem=<MB> – minimalna ilość pamięci

--mem-per-cpu=<MB> – minimalna ilość pamięci na CPU

Wybór maszyn i partycji

-w, --nodelist=<host1,host2,... or filename> – wybór konkretnych węzłów

-p, --partition=<partition_names> – wybór partycji

(8)

Specyfikowanie zasobów c.d.

Opis wsadu

-n, --ntasks=<number> – liczba zadań

-c, --cpus-per-task=<ncpus> – liczba procesorów na zadanie --time-min=<time> – czas allokacji

-N, --nodes=<minnodes[-maxnodes]> – liczba węzłów -D, --chdir=<path> – katalog obliczeń

--exclusive – wyłączność allokacji węzłów -J, --job-name=<jobname> – nazwa wsadu --pty – symulacja terminala

(9)

Zadania wsadowe

s b a t c h [ o p t i o n s ] s c r i p t [ a r g s . . . ]

Skrypt opisujący wsad

#! / b i n / s h

#

#SBATCH −−j o b −name=t e s t J o b

#SBATCH −−t i m e = 0 1 : 0 0 : 0 0

#SBATCH −−n o d e s=1

#SBATCH −−n t a s k s =1

#SBATCH −− p a r t i t i o n =d r a g o n −d e f a u l t

#

# D i s p l a y a l l v a r i a b l e s s e t by s l u r m env | g r e p "^SLURM" | s o r t

(10)

Podgląd stanu systemu

squeue

[ p a w e l @ s h ~ ] $ s q u e u e

JOBID PARTITION NAME USER ST TIME NODES NODELIST (REASON)

4 8 5 4 6 n o r m a l DT3b1a_1 c h a r z e w s R 1 2 − 0 2 : 1 3 : 3 0 1 m s y s 1 6 4 8 5 4 7 n o r m a l DT3b1a_1 c h a r z e w s R 1 2 − 0 2 : 1 3 : 3 0 1 m s y s 1 7 4 8 5 4 8 n o r m a l DT3b1a_1 c h a r z e w s R 1 2 − 0 2 : 1 3 : 3 0 1 m s y s 1 7 4 8 5 4 9 n o r m a l DT3b1a_1 c h a r z e w s R 1 2 − 0 2 : 1 3 : 3 0 1 m s y s 1 7 4 8 5 5 0 n o r m a l DT3b1a_1 c h a r z e w s R 1 2 − 0 2 : 1 3 : 3 0 1 m s y s 1 8 4 8 5 5 1 n o r m a l DT3b1a_1 c h a r z e w s R 1 2 − 0 2 : 1 3 : 3 0 1 m s y s 1 8 4 8 5 5 2 n o r m a l DT3b1a_1 c h a r z e w s R 1 2 − 0 2 : 1 3 : 3 0 1 m s y s 1 8 4 9 3 6 8 n o r m a l DT3b1aWa c h a r z e w s R 5 − 1 9 : 1 4 : 0 4 1 m s y s 2 8

sinfo

[ p a w e l @ s h ~ ] $ s i n f o

PARTITION AVAIL TIMELIMIT NODES STATE NODELIST

n o r m a l ∗ up 2 1 − 0 0 : 0 0 : 0 1 d r a i n m s y s 1 5

n o r m a l ∗ up 2 1 − 0 0 : 0 0 : 0 20 mi x msys [1 −8 ,11 −14 ,16 −18 ,21 −23 ,27 −28]

n o r m a l ∗ up 2 1 − 0 0 : 0 0 : 0 3 i d l e msys [ 2 4 − 2 6 ] p r e e m p t i b l e up 2 1 − 0 0 : 0 0 : 0 1 d r a i n m s y s 1 5

p r e e m p t i b l e up 2 1 − 0 0 : 0 0 : 0 20 mi x msys [1 −8 ,11 −14 ,16 −18 ,21 −23 ,27 −28]

p r e e m p t i b l e up 2 1 − 0 0 : 0 0 : 0 3 i d l e msys [ 2 4 − 2 6 ]

(11)

Zarządzanie zasadami

scancel

scancel [OPTIONS...] [job_id[_array_id][.step_id]] [job_id[_array_id][.step_id]...]

Przerywa zadania i usuwa je z kolejki.

scontrol

Wybrane komendy:

hold, release – zatrzymuje i zwalnia zadanie w kolejce resume, suspend – zatrzymuje i uruchamia pracujące zadanie show – wyświetla informacje o wskazanym elemencie systemu (zadaniu, partycji)

requeue – zwraca zadanie do kolejki update – zmienia właściwości zadania

(12)

Zależności

Można zdefiniować wsady, których wykonanie zależy od innych obliczeń. W tym zastosowaniu bardzo przydatna jest możliwość nazywania wsadów.

-d, --dependency=<dependency_list>

Możliwe zależności:

after:job_id[:jobid...] – po rozpoczęciu wsadów job_id afterany:job_id[:jobid...] – po zakończeniu wsadów job_id afternotok:job_id[:jobid...] – po nieudanym zakończeniu wsadów job_id

afterok:job_id[:jobid...] – po udanym zakończeniu wsadów job_id

singleton – po zakończeniu wsadów o tej samej nazwie

(13)

Zadanie 0

“Zaloguj” się na węzeł klastra zlecając uruchomienie powłoki systemu.

(14)

Zadanie 1

Uruchom trwające 60 sekund zadanie, które wyświetla i zapisuje do pliku nazwę maszyny, na której zostało uruchomione.

(15)

Zadanie 2

Uruchom skrypt z poprzedniego zadania na 12 procesorach.

(16)

Zadanie 3

Uruchom skrypt z poprzednich zadania na 3 różnych maszynach.

(17)

Zadanie 4

Uruchom dwa wsady: ten z zadania 2 i dodatkowy, który po zakończeniu pierwszego zliczy maszyny, na które trafiły zadania.

Cytaty

Powiązane dokumenty

Można również uruchamiać profilowanie określonych fragmentów z poziomu

Zaimplementuj klasę Complex realizującą podstawowe operacje na liczbach zespolonych oraz testy jednostkowe

W programie może występować co najwyżej jedna funkcja o danej

Abstract factory Provide an interface for creating families of related or dependent objects without specifying their concrete classes. Builder Separate the construction of a

Stosowanie klas abstrakcyjnych jest konieczne, jeżeli ma istnieć możliwość operowania w tym samym kontekście na obiektach różnych klas, które nie mają naturalnej

Metody statyczne powodują kłopoty przy dziedziczeniu, jeżeli atrybuty, do których się odnoszą są przysłonięte w podklasie... Metody statyczne

Czasami występuje potrzeba opisu klas, które łączą w sobie cechy kilku klas nadrzędnych (np. latająca łódź). Wielodziedziczenie może powodować straszne problemy (Deadly Diamond

Katalogi w strukturze plików serwisu odpowiadają klasom Elementy katalogów (pliki i podkatalogi) odpowiadają atrybutom Aplikacja jest autonomicznym serwerem webowym. Treść nie