Enterprise, czyli instytutowy klaster obliczeniowy
Transkrypt
Enterprise, czyli instytutowy klaster obliczeniowy
Enterprise, czyli instytutowy klaster obliczeniowy Janusz Szwabiński [email protected] Enterprise, czyli instytutowy klaster obliczeniowy – p.1/28 Plan wykładu Klastry komputerowe Enterprise od podszewki Obsługa klastra OpenMosix Przykłady zastosowań OpenMosix + MPI Dost˛epne aplikacje Enterprise, czyli instytutowy klaster obliczeniowy – p.2/28 Tym dysponujemy... 4 w˛ezły: 2 Xeon 2, 8 GHz + 4 GB RAM Enterprise, czyli instytutowy klaster obliczeniowy – p.3/28 ... o tym marzymy 5120 procesorów, 35860 gigaflopów (3. miejsce na liście Top 500) Enterprise, czyli instytutowy klaster obliczeniowy – p.4/28 Klastry komputerowe Klaster grupa komputerów (na ogół standardowych pecetów) połaczonych ˛ siecia˛ w „superkomputer” w celu wykonania określonych zadań Rodzaje klastrów: Klastry obliczeniowe o dużej wydajności Klastry o zrównoważonym obcia˛żeniu (load balancing) Klastry o wysokiej niezawodności (high availability) Enterprise, czyli instytutowy klaster obliczeniowy – p.5/28 Enterprise od podszewki IFT enterprise 156.17.88.56 excalibur horatio gandhi Enterprise, czyli instytutowy klaster obliczeniowy – p.6/28 Single System Image grupa komputerów połaczonych ˛ w klaster „zachowuje” si˛e jak jeden komputer OpenMosix pakiet rozszerzajacy ˛ jadro ˛ Linuksa o możliwość klastrowania komputerów. Zapewnia automatyczne równoważenie obcia˛żenia, czyli migracj˛e procesów na mniej obcia˛żone w˛ezły w klastrze. Enterprise, czyli instytutowy klaster obliczeniowy – p.7/28 Zalety klastra OpenMosix: na ogół nie trzeba przepisywać kodu aplikacji zrównoważone obcia˛żenie wszystkich w˛ezłów możliwość dynamicznego dodawania/usuwania w˛ezłów najdłużej trwajace ˛ procesy trafiaja˛ na najszybszy procesor idealny do problemów, które można podzielić na niezależne podprocesy Enterprise, czyli instytutowy klaster obliczeniowy – p.8/28 Ograniczenia: spadek wydajności dla krótkotrwałych procesów procesy wielowatkowe ˛ nie migruja˛ nie nadaje si˛e raczej do problemów, w których poszczególne podprocesy komunikuja˛ si˛e ze soba˛ Enterprise, czyli instytutowy klaster obliczeniowy – p.9/28 Obsługa klastra OpenMosix mosctl podstawowe narz˛edzie administracyjne. Przykłady użycia: mosctl whois OM_ID mosctl isup OM_ID mosmon monitoruje działanie klastra mosrun uruchamia program na wybranym w˛eźle: mosrun -h OM_ID polecenie [argumenty] mtop/mps „klastrowe” wersje narz˛edzi top i ps (pokazuja˛ dodatkowo numer w˛ezła, na którym wykonywany jest proces) Enterprise, czyli instytutowy klaster obliczeniowy – p.10/28 migrate wysyła do wybranego procesu prośb˛e o migracj˛e: migrate PID OM_ID Enterprise, czyli instytutowy klaster obliczeniowy – p.11/28 Pierwsze testy awk ’BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}’ (16 wykonań) AMD XP 1800+ violet3 512 RAM 5min 3s 8min 17s enterprise w˛ezeł klaster 2min 40s Enterprise, czyli instytutowy klaster obliczeniowy – p.12/28 Embarassingly parallel problems obliczenia moga˛ być podzielone na zupełnie niezależne cz˛eści każdy proces może wykonać swoje zadanie bez konieczności komunikacji z innymi procesami łatwa paralelizacja nie zależa˛ od wydajności sieci Enterprise, czyli instytutowy klaster obliczeniowy – p.13/28 Przykłady: Symulacje Monte Carlo Całkowanie numeryczne Przeszukiwanie baz danych SETI@home Fraktale Obróbka obrazu Enterprise, czyli instytutowy klaster obliczeniowy – p.14/28 Przykłady: całkowanie numeryczne y 1 1 N N 1 Niech IN x2 x ∑ i 0 1 1 0 f x 0 0 f x dx I 1 f i N Enterprise, czyli instytutowy klaster obliczeniowy – p.15/28 Wówczas lim IN N ∞ 0, . . . , P ... KP K1 1, p 1 K0 1 na P podprzedziałów K p, K p Ip Dzielimy przedział 0, N I 1 N Otrzymujemy i KP f xi ∑ ... f xi i K1 KP 1 ∑ i K0 f xi ∑ i 0 f xi ∑ K2 1 K1 1 N 1 1 Enterprise, czyli instytutowy klaster obliczeniowy – p.16/28 Przykłady: model drapieżnik-ofiara (symulacje MC) program do symulacji pobiera koncentracj˛e zaj˛ecy, wilków i schronień jako argumenty linii poleceń musimy uruchomić kilka instancji tego programu interesuje nas łaczny ˛ czas wykonania wszystkich symulacji automatyzacja zadań Enterprise, czyli instytutowy klaster obliczeniowy – p.17/28 #!/usr/bin/env python import sys, os, time #koncentracje zajecy, wilkow i norek zajace = [’0.20’,’0.40’,’0.60’,’0.80’] wilki = [’0.30’,’0.60’] norki = [’0.00’,’0.50’] # program do uruchomienia job = ’./pp’ # liczba instancji programu np = len(zajace)*len(wilki)*len(norki) # lista do przechowywania identyfikatorow uruchomionych procesow pids = np * [0] # licznik procesow potomek=0 Enterprise, czyli instytutowy klaster obliczeniowy – p.18/28 starttime = time.time() for i in zajace: for j in wilki: for k in norki: sl = pids.index(0) pid = os.spawnv(os.P_NOWAIT,job,(job,i,j,k)) print ’Program %s (pid %d) uruchomiony.’ % (job, pid) pids[sl] = pid potomek += 1 while potomek: wlist = os.waitpid(-1, 0) done = wlist[0] if done in pids: ind = pids.index(done) print "Proces %d zakonczony." % pids[ind] pids[ind] = 0 potomek -= 1 Enterprise, czyli instytutowy klaster obliczeniowy – p.19/28 endtime = time.time() minsec = divmod((endtime - starttime), 60) print ’%s min %s sec!’ % (str(int((minsec[0]))),str(int((minsec[1])))) Enterprise, czyli instytutowy klaster obliczeniowy – p.20/28 OpenMosix + MPI Message Passing Interface standard tworzenia aplikacji równoległych w oparciu o model z wymiana˛ komunikatów OpenMosix + MPI dzi˛eki dynamicznemu równoważeniu obcia˛żenia aplikacje tworzone w ramach MPI zyskuja˛ na ogół na wydajności Enterprise, czyli instytutowy klaster obliczeniowy – p.21/28 Kompilacja programów: mpicc -o <program> <plik.c> mpiCC -o <program> <plik.cpp> mpi77 -o <program> <plik.f> Uruchamianie programów: mpirun -np <liczba_procesów> <program> Testowanie programów: mpirun -t -np <liczba_procesów> <program> Enterprise, czyli instytutowy klaster obliczeniowy – p.22/28 Warto wiedzieć - klucze SSH: ssh-keygen -t dsa cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys2 chmod go-rwx ~/.ssh/authorized_keys2 UWAGA! Na potrzeby MPI tworzymy klucz prywatny bez ochrony hasłem (no passphrase). Enterprise, czyli instytutowy klaster obliczeniowy – p.23/28 Przykładowy program MPI: #include <stdio.h> #include "mpi.h" main(int argc, char* argv[]) { int my_ID,number_proc; MPI_Init(&argc, &argv); //inicjalizacja MPI MPI_Comm_rank(MPI_COMM_WORLD, &my_ID); //identyfikator procesu MPI_Comm_size(MPI_COMM_WORLD, &number_proc); //liczba procesow printf("Proces %d z wszystkich %d wita!\n",my_ID,number_proc); MPI_Finalize(); //zakoncz prace MPI } Enterprise, czyli instytutowy klaster obliczeniowy – p.24/28 Dostepne ˛ aplikacje Kompilatory: gcc/g++ (wersja 2.95.4) gcc-3.3/g++-3.3 (wersja 3.3.4) g77/ifc Biblioteki: Blitz++ Gnu Scientific Library, Lapack MPICH GiNaC Enterprise, czyli instytutowy klaster obliczeniowy – p.25/28 Interpretery: Python (wersja 2.3.4) Perl (wersja 5.8.3) Oprogramowanie naukowe: GNU Octave Yorick Maxima Axiom Yacas Enterprise, czyli instytutowy klaster obliczeniowy – p.26/28 Edytory: vi jed nano Enterprise, czyli instytutowy klaster obliczeniowy – p.27/28 Zasoby w sieci Strona domowa OpenMosix http://openmosix.sourceforge.net/ OpenMosix HowTo http://howto.x-tend.be/openMosix-HOWTO/ Strona domowa MPICH http://www-unix.mcs.anl.gov/mpi/mpich/ Top500 Supercomputer Sites http://www.top500.org/ Linux Clustering Information Center http://lcic.org/ Enterprise, czyli instytutowy klaster obliczeniowy – p.28/28