background image

Enterprise, czyli instytutowy

klaster obliczeniowy

Janusz Szwabi ´nski

szwabin@ift.uni.wroc.pl

Enterprise, czyli instytutowy klaster obliczeniowy – p.1/28

background image

Plan wykładu

Klastry komputerowe
Enterprise od podszewki
Obsługa klastra OpenMosix
Przykłady zastosowa ´n
OpenMosix + MPI
Dost˛epne aplikacje

Enterprise, czyli instytutowy klaster obliczeniowy – p.2/28

background image

Tym dysponujemy...

4 w˛ezły: 2 Xeon 2, 8 GHz + 4 GB RAM

Enterprise, czyli instytutowy klaster obliczeniowy – p.3/28

background image

... o tym marzymy

5120 procesorów, 35860 gigaflopów (3. miejsce na li´scie

Top 500)

Enterprise, czyli instytutowy klaster obliczeniowy – p.4/28

background image

Klastry komputerowe

Klaster grupa komputerów (na ogół standardowych

pecetów) poł ˛aczonych sieci ˛a w „superkomputer” w celu
wykonania okre´slonych zada ´n

Rodzaje klastrów:

Klastry obliczeniowe o du ˙zej wydajno´sci
Klastry o zrównowa ˙zonym obci ˛a˙zeniu (

load balancing)

Klastry o wysokiej niezawodno´sci (

high availability)

Enterprise, czyli instytutowy klaster obliczeniowy – p.5/28

background image

Enterprise od podszewki

enterprise

gandhi

horatio

excalibur

IFT

156.17.88.56

Enterprise, czyli instytutowy klaster obliczeniowy – p.6/28

background image

Single System Image grupa komputerów poł ˛aczonych w

klaster „zachowuje” si˛e jak jeden komputer

OpenMosix pakiet rozszerzaj ˛acy j ˛adro Linuksa o mo˙zliwo´s´c

klastrowania komputerów. Zapewnia automatyczne
równowa ˙zenie obci ˛a˙zenia, czyli migracj˛e procesów na
mniej obci ˛a˙zone w˛ezły w klastrze.

Enterprise, czyli instytutowy klaster obliczeniowy – p.7/28

background image

Zalety klastra OpenMosix:

na ogół nie trzeba przepisywa´c kodu aplikacji
zrównowa ˙zone obci ˛a˙zenie wszystkich w˛ezłów
mo ˙zliwo´s´c dynamicznego dodawania/usuwania
w˛ezłów
najdłu ˙zej trwaj ˛ace procesy trafiaj ˛a na najszybszy
procesor
idealny do problemów, które mo ˙zna podzieli´c na
niezale ˙zne podprocesy

Enterprise, czyli instytutowy klaster obliczeniowy – p.8/28

background image

Ograniczenia:

spadek wydajno´sci dla krótkotrwałych procesów
procesy wielow ˛atkowe nie migruj ˛a
nie nadaje si˛e raczej do problemów, w których
poszczególne podprocesy komunikuj ˛a si˛e ze sob ˛a

Enterprise, czyli instytutowy klaster obliczeniowy – p.9/28

background image

Obsługa klastra OpenMosix

mosctl

podstawowe narz˛edzie administracyjne. Przykłady

u ˙zycia:

mosctl whois OM_ID

mosctl isup OM_ID

mosmon

monitoruje działanie klastra

mosrun

uruchamia program na wybranym w˛e´zle:

mosrun -h OM_ID polecenie [argumenty]

mtop/mps

„klastrowe” wersje narz˛edzi

top

i

ps

(pokazuj ˛a

dodatkowo numer w˛ezła, na którym wykonywany jest
proces)

Enterprise, czyli instytutowy klaster obliczeniowy – p.10/28

background image

migrate

wysyła do wybranego procesu pro´sb˛e o migracj˛e:

migrate PID OM_ID

Enterprise, czyli instytutowy klaster obliczeniowy – p.11/28

background image

Pierwsze testy

awk ’BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}’

(16 wykona´n)

AMD XP 1800+

violet3

enterprise

512 RAM

w˛ezeł klaster

5min 3s

8min 17s 2min

40s

Enterprise, czyli instytutowy klaster obliczeniowy – p.12/28

background image

Embarassingly parallel problems

obliczenia mog ˛a by´c podzielone na zupełnie niezale ˙zne
cz˛e´sci
ka ˙zdy proces mo ˙ze wykona´c swoje zadanie bez
konieczno´sci komunikacji z innymi procesami
łatwa paralelizacja
nie zale ˙z ˛a od wydajno´sci sieci

Enterprise, czyli instytutowy klaster obliczeniowy – p.13/28

background image

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

background image

Przykłady: całkowanie numeryczne

y

x

0

1

0

1

I

1

0

f



x



d

x

f



x



1



x

2

Niech

I

N

1

N

N



1

i



0

f

i

N

Enterprise, czyli instytutowy klaster obliczeniowy – p.15/28

background image

Wówczas

lim

I

N

I

Dzielimy przedział



0,

N



1



na

podprzedziałów

I

p



K

p

,

K

p



1



1



,

p

0, . . . ,

P



1

K

0



K

1



. . .



K

P

N

Otrzymujemy

N



1

i



0

f



x

i



K

1



1

i



K

0

f



x

i





K

2



1

i



K

1

f



x

i





. . .



K

P



1

i



K

P



1

f



x

i



Enterprise, czyli instytutowy klaster obliczeniowy – p.16/28

background image

Przykłady: model drapie˙znik-ofiara (symulacje MC)

program do symulacji pobiera koncentracj˛e zaj˛ecy,
wilków i schronie ´n jako argumenty linii polece ´n
musimy uruchomi´c kilka instancji tego programu
interesuje nas ł ˛aczny czas wykonania wszystkich
symulacji
automatyzacja zada ´n

Enterprise, czyli instytutowy klaster obliczeniowy – p.17/28

background image

#!/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

background image

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

background image

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

background image

OpenMosix + MPI

Message Passing Interface standard tworzenia aplikacji

równoległych w oparciu o model z wymian ˛a
komunikatów

OpenMosix + MPI dzi˛eki dynamicznemu równowa˙zeniu

obci ˛a˙zenia aplikacje tworzone w ramach MPI zyskuj ˛a na
ogół na wydajno´sci

Enterprise, czyli instytutowy klaster obliczeniowy – p.21/28

background image

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

background image

Warto wiedzie´c - 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

background image

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

background image

Dost ˛epne 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

background image

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

background image

Edytory:

vi
jed
nano

Enterprise, czyli instytutowy klaster obliczeniowy – p.27/28

background image

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


Document Outline