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